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
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
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