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
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.