XL 2010 Conversion temps décimal vers [Heure] minute par vba

  • Initiateur de la discussion Initiateur de la discussion vgendron
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

vgendron

XLDnaute Barbatruc
Bonjour à toutes et tous

Je viens vous soumettre un problème qui m'interpelle.. je dois être fatigué, car il y a une subtilité que je ne vois pas.

dans le fichier ci joint
j'ai des durées décimales en colonne B que je souhaite convertir en temps ([hh]:mm)

si j'utilise les formules colonnes C et D, j'obtiens bien le meme résultat, mais il s'agit de l'heure "modulo" 24
par macro, j'obtiens la meme chose en colonne H

Mais je souhaite avoir le résultat de la colonne E==> Sans ce modulo 24
lorsque j'essaie d'utiliser le format [hh]:mm par macro.. j'obtiens la colonne I
VBA n'aime pas les crochets??


VB:
Sub testtemps()
For i = 2 To 6
    Range("H" & i) = Format(Range("B" & i) / 24, "hh:mm") 'identique à la colonne C: heure "modulo 24"
    Range("I" & i) = Format(Range("B" & i) / 24, "[hh]:mm") 'Devrait etre identique à la colonne E ???
Next i
End Sub

merci
 

Pièces jointes

Bonjour vgendron,

Oui le format [hh]:mm n'est pas reconnu en VBA donc utilise :
VB:
Sub testtemps()
Columns("H").NumberFormat = "hh:mm"
Columns("I").NumberFormat = "[hh]:mm"
For i = 2 To 6
    Range("H" & i) = Round(60 * Range("B" & i)) / 1440 'identique à la colonne C
    Range("I" & i) = Round(60 * Range("B" & i)) / 1440 'identique à la colonne E
Next i
End Sub
A+
 

Pièces jointes

Bonsoir patrick, job75, vgendron,

Le code du post #1 impose qu'on arrondisse à la minute.

superieur?
inferieur?
ou auto?

Round => la minute la + proche.

je vois que patrick a du mal ; alors je vais essayer de l'aider
comme je peux, avec mes maigres compétences :

ici l'horloge parlante ; au 4ème bip, il sera exactement 0 heure 26 minutes 54 secondes.

job75 : « à la minute la plus proche, j'ai dit ! » ; moi : « ah, oui, c'est juste ! alors : » ;

ici l'horloge parlante ; au 4ème bip, il sera exactement 0 heure 27 minutes.

soan
 
Dernière édition:
re
Bonjour a tous
je n'ai pas de mal avec ça
ma question était plus que légitime je pense
en rentrant ce soir je regarderais si je peux faire ça simplement avec les fonctions date et time de vb

pour moi alors ce serait
en auto
00:15:31 = 00:16(31 secondes ou plus)
00:15:21 = 00:15:00
en supérieur
00:15:21 = 00:16:00

en inférieur
00:15:21 = 00:15:00

en attendant en auto
VB:
Sub test()
    Dim t As Date
    t = TimeValue(CDate(CDbl([b2].Value) / 24))
    Debug.Print t
    Debug.Print Format(t + IIf(Second(t) >= 31, 0.0007, 0), "hh:mm")
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
13
Affichages
2 K
Réponses
1
Affichages
1 K
Retour