Soustraction de date en vba et format de sortie

Résolu
pitipilot Messages postés 112 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 14 mai 2021 - 16 avril 2014 à 08:14
pitipilot Messages postés 112 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 14 mai 2021 - 16 avril 2014 à 13:38
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
16 avril 2014 à 08:35
Bonjour,
fais donc tous tes calculs en secondes puis (arithmétique élémentaire) ===>> traduis ces secondes en heures, minutes et secondes.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
16 avril 2014 à 11:16
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.
0
pitipilot Messages postés 112 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 14 mai 2021 1
16 avril 2014 à 11:21
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
 
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
16 avril 2014 à 11:33
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")
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
16 avril 2014 à 12:43
Clos maintenant s'il te plait cette discussion (un click sur le tag RESOLU au niveau_ de ton tout premier message)
0
pitipilot Messages postés 112 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 14 mai 2021 1
16 avril 2014 à 13:38
Merci de ton aide :), à bientôt.
0
Rejoignez-nous