Soustraction de date en vba et format de sortie [Résolu]

Signaler
Messages postés
112
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
14 mai 2021
-
Messages postés
112
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
14 mai 2021
-
Bonjour,

J'ai un problème avec des dates, prenons par exemple deux dates :

12/04/2014 18:51 qu'on appellera DateDeb et
15/04/2014 14:15 qu'on appellera DateFin.

J'aimerai pouvoir calculer l'intervalle de temps entre ces deux dates et avoir le résultat sous cette forme :
"67:15:00". Hors actuellement, lorsque je fais la soustraction directe de ces dates, j'ai une valeur du genre : "19:24:00" donc en gros il ne cumule pas les heures et redémarre à 0 quand les heures sont > à 24.

Y'a t'il une manière de faire un peu à la manière des cellules excel de forcer le format Date à utiliser le format [hh]:mm:ss ?

5 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour,
fais donc tous tes calculs en secondes puis (arithmétique élémentaire) ===>> traduis ces secondes en heures, minutes et secondes.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
L'utilisation de DateDiff te permet de déterminer le nombre de secondes séparant tes deux dates.
Une heure = 60 * 60 = 3600 secondes ===>> une division par 3600 et :
- tu as le nombre H d'heures et le nombre R de secondes restantes
- une minute = 60 secondes ===>> une division du reste R par 60 et tu as le nombre M de minutes et le nombre S de secondes restantes

Et dans ton cas, encore plus simple, puisque tu ne t'intéresses pas aux secondes et peux donc partir directement des minutes (calculées par datediff), sachant qu'il y a 60 minutes dans une heure.
Messages postés
112
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
14 mai 2021
1
Voici la solution :).


 
Sub test()
d = MyDateDiff("12/04/2014 18:51", "15/04/2014 14:15")
End Sub
Function MyDateDiff(Deb, Fin)
d = DateDiff("s", Deb, Fin)
s = d Mod 60
h = (d - s) / 60
m = h Mod 60
h = (h - m) / 60
MyDateDiff = h & ":" & Format(m, "00") & ":" & Format(s, "00")
End Function
 
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Et dans ton cas, tout bêtement (voir la dernière phrase de mon message précédent) :
minutes = DateDiff("N", datedeb, datefin)
heures = minutes \ 60
minutes = minutes Mod 60
MsgBox Format(heures, "00") & ":" & Format(minutes, "00")
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Clos maintenant s'il te plait cette discussion (un click sur le tag RESOLU au niveau_ de ton tout premier message)
Messages postés
112
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
14 mai 2021
1
Merci de ton aide :), à bientôt.