Home
Home

---Soumis par Dev Ashish---

Calculer l'âge.

(Q) Comment calculer l'âge d'une personne si on connaît sa date de naissance?

(A) Il y a plusieurs solutions. Je ne liste que deux d'etnre elles apparues récemment dans les groupes de discussions:

- **Soumis par Michel Walsh**

Supposant que la date de naissance est un champ nommé [BDate], de type de données date, on peut alors utiliser le calcul suivant

    Age=DateDiff("yyyy", [Bdate], Now())+ _
            Int( Format(now(), "mmdd") < Format( [Bdate], "mmdd") )

Alternative: Vous pouvez utiliser la fonction suivante

Function Age(Bdate, DateToday) As Integer
' Retourne l'âge en années, entre deux dates
' Ne couvre pas des âges négatifs i.e. Bdate > DateToday


    If Month(DateToday) < Month(Bdate) Or (Month(DateToday) = _
                Month(Bdate) And Day(DateToday) < Day(Bdate)) Then
            Age = Year(DateToday) - Year(Bdate) - 1
    Else
            Age = Year(DateToday) - Year(Bdate)
    End If
End Function

---Soumis par Tim Walters---

    Voici un calcul détaillé d'âge

'--- CODE START ---
Public Sub CalcAge(vDate1 As Date, vdate2 As Date, ByRef vYears As Integer,
ByRef vMonths As Integer, ByRef vDays As Integer)
    ' Commentaire  : calcule l'âge en an, mois, jour
    ' Paramètres:
    '    vDate1 - date de naissance.
    '    vDate2 - date pour laquelle on effectue le calcul
    '    vYears - nombre d'ans
    '    vMonths - nombre de mois
    '    vDays - nombre de jours
    vMonths = DateDiff("m", vDate1, vdate2)
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    If vDays < 0 Then
        ' dû à la façon bizarre de calculer utilsé par DateDiff, corriger si requis
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    End If
    vYears = vMonths \ 12 ' division entière
    vMonths = vMonths Mod 12 ' ce qui reste
End Sub
'--- CODE END ---