1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| Option Compare Database
Option Explicit
Public Enum acInterval
acIntervalText
acIntervalNum
End Enum
Public Function Interval(Date_Début As Date _
, Date_Fin As Date _
, Optional Fmt As acInterval = acIntervalText) As String
' cette fonction permet de calculer le temps passé
' entre deux dates selon le format.
On Error GoTo Err_Func
Dim Années As Long, Mois As Long, Jours As Long, _
Heures As Long, Minutes As Long, Secondes As Long
Dim Date1 As Date
Années = DateDiff("yyyy", Date_Début, Date_Fin)
If DateSerial(Year(Date_Fin), Month(Date_Début), _
Day(Date_Début)) > Date_Fin Then
Années = Années - 1
End If
Date1 = DateAdd("m", Années * 12, Date_Début)
Mois = DateDiff("m", Date1, Date_Fin)
If Day(Date_Fin) < Day(Date1) Then
Mois = Mois - 1
End If
Date1 = DateAdd("m", Mois, Date1)
Secondes = DateDiff("s", Date1, Date_Fin)
Jours = Int(Secondes / 86400)
Secondes = Secondes - (Jours * 86400)
Heures = Int(Secondes / 3600)
Secondes = Secondes - (Heures * 3600)
Minutes = Int(Secondes / 60)
Secondes = Secondes - (Minutes * 60)
Interval = ""
If Fmt = acIntervalText Then
Interval = Interval & IIf(Années = 0, "", _
IIf(Années = 1, Années & " an ", Années & " ans "))
Interval = Interval & IIf(Mois = 0, "", Mois & " mois ")
Interval = Interval & IIf(Jours = 0, "", _
IIf(Jours = 1, Jours & " jour ", Jours & " jours "))
Interval = Interval & IIf(Heures = 0, "", _
IIf(Heures = 1, Heures & " heure ", Heures & " heures "))
Interval = Interval & IIf(Minutes = 0, "", _
IIf(Minutes = 1, Minutes & " Minute ", Minutes & " Minutes "))
Interval = Interval & IIf(Secondes = 0, "", _
IIf(Secondes = 1, Secondes & " seconde ", Secondes & " secondes "))
Else
Interval = Interval & Format(Années, "00") & ":"
Interval = Interval & Format(Mois, "00") & ":"
Interval = Interval & Format(Jours, "00") & ":"
Interval = Interval & Format(Heures, "00") & ":"
Interval = Interval & Format(Minutes, "00") & ":"
Interval = Interval & Format(Secondes, "00")
End If
Exit Function
Err_Func:
Interval = "#Erreur"
End Function
Appel de la fonction:
<Variable String> = Interval(<Date début>, <date fin> [, acInterval]) |
Partager