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, lEcart As Long
Dim lTempJ As Long, lTempH As Long, lTempM As Long
Dim sJour As String, sHeure As String, sMinute As String
sJour = Space(1) & "jour"
sHeure = Space(1) & "heure"
sMinute = Space(1) & "minute"
dStart = DateDebut & Space(1) & HeureDebut: dEnd = DateFin & Space(1) & HeureFin
lEcart = DateDiff("n", dStart, dEnd)
Select Case lEcart
Case Is < 2
EcartDate = lEcart & sMinute
Case 2 To 59
EcartDate = lEcart & sMinute & "s"
Case 60
EcartDate = "1" & sHeure
Case 61 To 1439
lTempH = lEcart \ 24
If lTempH < 2 Then EcartDate = lTempH & sHeure Else _
EcartDate = lTempH & sHeure & "s"
lTempM = lEcart Mod 24
If lTempM < 2 Then EcartDate = EcartDate & Space(1) & lTempM & sMinute Else _
EcartDate = EcartDate & Space(1) & lTempM & sMinute & "s"
Case 1440
EcartDate = "1" & sJour
Case Is > 1440
lTempJ = lEcart \ (24 * 60)
If lTempJ < 2 Then EcartDate = lTempJ & sJour Else _
EcartDate = lTempJ & sJour & "s"
lTempH = (lEcart - (lTempJ * (24 * 60))) \ 60
If lTempH < 2 Then EcartDate = EcartDate & Space(1) & lTempH & sHeure Else _
EcartDate = EcartDate & Space(1) & lTempH & sHeure & "s"
lTempM = (lEcart - (lTempJ * (24 * 60))) Mod 60 * (((lEcart - (lTempJ * (24 * 60))) \ 60))
If lTempM < 2 Then EcartDate = EcartDate & Space(1) & lTempM & sMinute Else _
EcartDate = EcartDate & Space(1) & lTempM & sMinute & "s"
End Select
End Function
Sub Exemple_Utilisation()
Debug.Print EcartDate(#11/10/2006#, "19:58", #11/15/2006#, "21:00") '5 jours 1 heure 2 minutes
Debug.Print EcartDate(#11/10/2006#, "19:58", #11/15/2006#, "20:59") '5 jours 1 heure 1 minute
Debug.Print EcartDate(#11/10/2006#, "19:58", #11/15/2006#, "20:58") '5 jours 1 heure 0 minute
Debug.Print EcartDate(#11/10/2006#, "19:58", #11/15/2006#, "22:00") '5 jours 2 heures 2 minutes
Debug.Print EcartDate(#11/14/2006#, "20:00", #11/15/2006#, "21:01") '1 jour 1 heure 1 minute
Debug.Print EcartDate(39036, 0.625, 39037, 0.625) '1 jour
End Sub