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

pitipilot 111 Messages postés mercredi 19 mai 2010Date d'inscription 2 juin 2015 Dernière intervention - 16 avril 2014 à 08:14 - Dernière réponse : pitipilot 111 Messages postés mercredi 19 mai 2010Date d'inscription 2 juin 2015 Dernière intervention
- 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 

6 réponses

Répondre au sujet
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 avril 2014 à 08:35
0
Utile
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 avril 2014 à 11:16
0
Utile
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
pitipilot 111 Messages postés mercredi 19 mai 2010Date d'inscription 2 juin 2015 Dernière intervention - 16 avril 2014 à 11:21
0
Utile
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 avril 2014 à 11:33
0
Utile
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 avril 2014 à 12:43
0
Utile
1
Clos maintenant s'il te plait cette discussion (un click sur le tag RESOLU au niveau_ de ton tout premier message)
pitipilot 111 Messages postés mercredi 19 mai 2010Date d'inscription 2 juin 2015 Dernière intervention - 16 avril 2014 à 13:38
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.