Convertit en jours / heures / minutes le temps entre 2 dates & heures

Contenu du snippet

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

Compatibilité : VB6, VBA

Disponible dans d'autres langages :

A voir également

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.