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

Messages postés
111
Date d'inscription
mercredi 19 mai 2010
Dernière intervention
2 juin 2015
- - Dernière réponse : pitipilot
Messages postés
111
Date d'inscription
mercredi 19 mai 2010
Dernière intervention
2 juin 2015
- 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 ?
Afficher la suite 

Votre réponse

5 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
fais donc tous tes calculs en secondes puis (arithmétique élémentaire) ===>> traduis ces secondes en heures, minutes et secondes.
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
111
Date d'inscription
mercredi 19 mai 2010
Dernière intervention
2 juin 2015
0
Merci
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
 
Commenter la réponse de pitipilot
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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")
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
Clos maintenant s'il te plait cette discussion (un click sur le tag RESOLU au niveau_ de ton tout premier message)
pitipilot
Messages postés
111
Date d'inscription
mercredi 19 mai 2010
Dernière intervention
2 juin 2015
-
Merci de ton aide :), à bientôt.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.