Format d'heure spécifique

mgd

XLDnaute Nouveau
Bonsoir le forum,

J'ai besoin d'utiliser un format d'heure assez spécifique et surtout non universelle, je sèche :

Comment mettre en forme une durée du type 25:12:45:5 (25 heures 12 minutes 45 secondes et 5 images) sachant que toutes 24 images je dois incrémenter d'une seconde et remettre le compteur image à 0

Existe t il un moyen de faire celà avec un format d'heure super customisé?
A moins que la réponse ne se trouve dans un calcul en centièmes d'heures / de secondes...

Espérant avoir été claire dans mes propos, j'avoue ce serait au top s'il n'y avait pas de VBA dans l'affaire ;)
Vous remerciant par avance de vos éventuelles réponses,
Bonne soirée à tous,
Mgd
 

JNP

XLDnaute Barbatruc
Re : Format d'heure spécifique

Bonsoir Mgd :),
Je crains fort que sans passer par VBA, point de salut :p, mais qui sait, un autre te trouveras peut-être une solution...
Les formats d'heure super customisés ne contiennent pas de formules, or seule une formule te calculera la modularité...
Le format avec les centièmes est "hh:mm:ss,0", mais il n'évoluera que tout les 100èmes de seconde, pas toutes les 25 images...
La seule solution serait de décomposer en plusieurs cellules, mais ça ne donnera pas le résultat visuel que tu escomptes (je pense)...
Par contre, en passant par une fonction personnalisée VBA, là :rolleyes:...
Donc une petite pièce jointe avec une fonction (attention, elle ne s'applique qu'à une plage contigüe).
Bonne soirée :cool:
 

Pièces jointes

  • Heures + images.xls
    38.5 KB · Affichages: 70

mgd

XLDnaute Nouveau
Re : Format d'heure spécifique

Bonjour Jnp, bonjour à tous!

Tout d'abord je tiens à m'excuser d'avoir tant tardé à réagir face à une réponse si efficace.
Merci beaucoup Jnp ta fonction AdditionHeureImage marche à merveille et répond tout à fait à ce que je cherchais à faire.

Je sais pourquoi j'aurai préféré sans macro : j'y comprend rien au code :(
Le résultat est atteind, parfait :)

Bon dimanche à tous,
 

JNP

XLDnaute Barbatruc
Re : Format d'heure spécifique

Re :),
Heureux que ça te convienne ;). Pour le code, le voici commenté, tu verras que le principe est simple :p
Code:
Function AdditionHeureImage(Plage As Range) As String
' La fonction attend un Range (cellules sélectionnées) et renvoie une String (texte)
Application.Volatile
' Pour que la fonction se calcule à chaque changement
Dim Cellule As Range, Tableau, I As Integer
' Je déclare une variable pour décrire toutes les cellules, un tableau pour décomposer
' en heures, minutes, secondes et images et une variable entière pour la boucle
Dim THeures As Integer, TMinutes As Integer, TSecondes As Integer, TImages As Integer
' Je déclare mes totaux en nombres entiers
For Each Cellule In Plage
' Pour chaque cellule de la plage
Tableau = Split(Cellule, ":")
' Je décompose en me servant du : comme séparateur
If UBound(Tableau) <> 3 Then
' Si il n'y avait pas 4 valeurs dans le tableau (0 à 3)
AdditionHeureImage = "Erreur !"
' Je renvoie erreur pour prévenir que ce ne sont pas des temps correctement formatés
Exit Function
' et je quitte la fonction
End If
' fin de test
For I = 0 To UBound(Tableau)
' Pour les 4 valeurs du tableau
If Not IsNumeric(Tableau(I)) Then
' Si ce n'est pas du numérique même combat
AdditionHeureImage = "Erreur !"
Exit Function
End If
Next I
' Valeur du tableau suivante
TImages = TImages + Tableau(3)
' J'additionne les images
If TImages > 24 Then
' Si je suis au dela de 24, j'ajoute une minute et retranche 25 images
TImages = TImages - 25
TSecondes = TSecondes + 1
End If
' de même pour les secondes
TSecondes = TSecondes + Tableau(2)
If TSecondes > 59 Then
TSecondes = TSecondes - 60
TMinutes = TMinutes + 1
End If
' et pour les minutes
TMinutes = TMinutes + Tableau(1)
If TMinutes > 59 Then
TMinutes = TMinutes - 60
THeures = THeures + 1
End If
' et pour les heures, je n'ai pas de marge supérieure
THeures = THeures + Tableau(0)
Next
' Je passe à la cellule suivante
AdditionHeureImage = THeures & ":" & Format(TMinutes, "00") _
    & ":" & Format(TSecondes, "00") & ":" & Format(TImages, "00")
' Enfin je renvoie la chaîne de caractère correspondant au résultat
End Function
Bonne soirée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji