gibea00
Messages postés17Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention13 novembre 2007
-
28 févr. 2007 à 16:33
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
1 mars 2007 à 09:31
Bonjour !
J'aimerais faire la différence entre 2 dates du même titre que dans l'exemple et que le résultat serait en heures et minutes. J'ai essayé d'utiliser DateDiff, mais il semble que je puisse avoir mon résultat en heure ou en minute et non les deux. Et la fonction arrondie le résultat.
Exemple : 28-02-2007 11:00:00 - 28-02-2007 10:03:05
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 28 févr. 2007 à 17:03
Salut,
j'ai une fonction qui gère la différence de dates avec le résultat voulu ; seul variante : j'ai pas les secondes, c'est un arrondi par la minute :
Public Function EcartDate(ByVal DateDebut As Date, ByVal HeureDebut As Date, ByVal DateFin As Date, ByVal HeureFin As Date) As
String
Dim dStart As Date, dEnd As Date, dEcart As Long, lTemp As Long
dStart = DateDebut & Space(1) & HeureDebut
dEnd = DateFin & Space(1) & HeureFin
dEcart = DateDiff("n", CDate(dStart), CDate(dEnd))
Select Case dEcart
Case 1 To 59
EcartDate = dEcart & "
minute(s)"
Case 60
EcartDate = "1 heure"
Case 61 To 1439
EcartDate = dEcart \ 24 & " heure(s) " & dEcart Mod 24 & "
minute(s)"
Case 1440
EcartDate = "1
jour"
Case Is > 1441
lTemp = dEcart \ (24 * 60)
EcartDate = lTemp & " jour(s)
" & ((dEcart - (lTemp * (24 * 60))) \ 60) & "
heure(s) " & _
((dEcart - (lTemp * (24 * 60)))
Mod 60 * (((dEcart - (lTemp * (24 * 60))) \
60))) & " minute(s)"
End Select
End Function
'
**************************************************************
Sub Exemple_Utilisation()
'tes dates
: 28-02-2007 11:00:00 - 28-02-2007 10:03:05
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 28 févr. 2007 à 17:30
Salut Jean-Marc,
Oui, c'est plus complexe pour ma fonction à cause des jours, par contre je viens de tester ta fonction, et sur ton exemple, au lieu d'avoir 00:00:55, j'ai 00:00:01
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 févr. 2007 à 17:43
Allez,
Je vais m'arrêter aux années car le reste est évident (il suffit d'utiliser une division par 100 pour les siècles et prendre le reste pour les années...)
Private Sub Command1_Click()
date1 = "28-02-2009 11:00:00"
date2 = "27-02-2007 10:03:05"
d = DateAdd("s", DateDiff("s", date2, date1), "01-01-2000")
MsgBox Format(date1, "yyyy") - Format(date2, "yyyy") & " ans " & Format(date1, "d") _
- Format(date2, "d") & " jours " & Format(d, "hh:mm:ss")
End Sub
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 28 févr. 2007 à 17:47
Re,
si si Mortalino, pour gérer jj/mm/aaaa, il faut prendre l'exemple de Jacques, qui est presque en vbs
je vais tester son exemple...apparemment, il suffit d'utiliser FormatDateTime et jouer
avec des replace puisque format n'existe pas en vbs
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 28 févr. 2007 à 18:02
Non non, c-est la tienne, pis la mienne y est déjà.
L-honneur te revient
Et je trouve ça interressant d-en déposer plusieurs, c-est ainsi que l-on voit que certaines choses sont plus simples que l-on ne peut le croire ;)
(Ps : même login qu-ici)
@++
<hr size="2" width="100%" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 févr. 2007 à 18:06
Non M'sieur Mortalino...
J'ai assez travaillé et c'est l'heure du pastis ...
A toi la corvée (si tu ne le fais pas, je ne le ferai pas non plus, alors.... )
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 févr. 2007 à 20:33
Bonjour Jean-Marc :
ce n'est pas une date, mais une durée.
2 ans 1 mois 0 jours 11:56:55
2 ans c'est bon
1 mois c'est bon
0 jour, c'est bon, car il ne s'est pas écoulé 24 heures entre le 23h.03.05 et 11h.00.00,
11h.56.55 n'est en effet pas bon car 11.56.55 + 23:03:05 35:59:60 36:00:00 = 24 + 12 et non 24 + 11 comme il se devrait.
Tu as en effet mis le doigt sur une erreur importante et, du coup, sur 2 autres erreurs :
Dès lors que l'on passe à la durée, les dates ne signifient plus rien et il est vain de calculer les mois et les années car, par exemple, ol y a 366 jours entre le 01/01/2000 et le 31/12/2000 alors qu'il n'y en a que 365 entre le 01/01/1999 et le 31/12/1999 (bornes incluses). Maos ce n'est pas le seul embêtement ....