Nombre d'années(age)

Contenu du snippet

Function GetElapsedYears(ByVal d1 As Date,  ByVal d2 As Date) As  Integer
'   d2 doit être supérieur à  d1
    If d2 < d1 Then
        Err.Raise vbObjectError Or vbDate, "GetElapsedYears", "Utilisation incorrecte de la  fonction, la date de début doit être inférieure ou égale à la date de  fin."
    Else
'       on cale la date de début à l'année de  fin
        Dim d As Date
        d = CDate(Format$(Year(d2) & "-" & Month(d1) & "-" & Day(d1), "YYYY-MM-DD"))
        
        If d > d2 Then
'           la date supérieure  à la date de comparaison, l'année n'est donc pas  complète
            GetElapsedYears = Year(d2) - Year(d1) - 1
        Else
'           année  écoulée
            GetElapsedYears = Year(d2) - Year(d1)
        End If
    End If
End Function

'----------------
' CODE  EXEMPLE
'----------------

Private Sub Test()
'   age de référence (date de naissance)
    Dim dBirth As Date
    dBirth = CDate("1970-12-15")
    
'   date de comparaison le 14 décembre 2009
    Dim d14dec As Date
    d14dec = CDate("2009-12-14")
'   le 14dec, il a encore 38 ans. à partir du lendemain il aura  39, ces 2 dates bien dans la même année
    
    Dim iRes1 As Integer
    Dim iRes2 As Integer
    
    iRes1 = GetElapsedYears(dBirth, d14dec)
    iRes2 = GetElapsedYears(dBirth, DateAdd("d", 1, d14dec))
    
    
    MsgBox "Aujourd'hui le 14/12/2009,  l'utilisateur a " & CStr(iRes1) & " ans." & vbCrLf & _
           "Demain le 15, il aura " & CStr(iRes2) & " ans."
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.