Comment créer deux fonctions pour calculer l’âge en mois et en années dans Access

Avancé : nécessite des compétences d’experts en codage, en interopérabilité et en multi-utilisateur.

Cet article s’applique à une base de données Microsoft Office Access (.accdb et .mdb) et au projet Microsoft Access (.apd).

Résumé

Cet article explique comment créer deux fonctions que vous pouvez utiliser pour calculer l’âge d’une personne ou d’une chose en fonction d’une date spécifiée.

Remarque

Vous pouvez voir une démonstration de la technique utilisée dans cet article dans l’exemple de fichier Qrysmp00.exe.

Informations supplémentaires

Création des fonctions

Tapez ou collez le code suivant dans un module :

'==========================================================
' General Declaration
'==========================================================
Option Explicit

'*************************************************************
' FUNCTION NAME: Age()
'
' PURPOSE:
'    Calculates age in years from a specified date to today's date.
'
' INPUT PARAMETERS:
'    StartDate: The beginning date (for example, a birth date).
'
' RETURN
'    Age in years.
'
'*************************************************************
Function Age (varBirthDate As Variant) As Integer
   Dim varAge As Variant

If IsNull(varBirthdate) then Age = 0: Exit Function

varAge = DateDiff("yyyy", varBirthDate, Now)
   If Date < DateSerial(Year(Now), Month(varBirthDate), _
                        Day(varBirthDate)) Then
      varAge = varAge - 1
   End If
   Age = CInt(varAge)
End Function

'*************************************************************
' FUNCTION NAME: AgeMonths()
'
' PURPOSE:
'  Compliments the Age() function by calculating the number of months
'  that have expired since the last month supplied by the specified date.
'  If the specified date is a birthday, the function returns the number of
'    months since the last birthday.
'
' INPUT PARAMETERS:
'    StartDate: The beginning date (for example, a birthday).
'
' RETURN
'    Months since the last birthday.
'*************************************************************
Function AgeMonths(ByVal StartDate As String) As Integer

Dim tAge As Double
   tAge = (DateDiff("m", StartDate, Now))
   If (DatePart("d", StartDate) > DatePart("d", Now)) Then
      tAge = tAge - 1
   End If
   If tAge < 0 Then
      tAge = tAge + 1
   End If

AgeMonths = CInt(tAge Mod 12)

End Function

Test des fonctions Age() et AgeMonths()

Pour tester les fonctions Age() et AgeMonths(), procédez comme suit.

Importante

Les étapes suivantes vous demandent de modifier la date sur votre ordinateur. Veillez à effectuer l’étape 6 pour réinitialiser la date à la date actuelle.

  1. À l’aide de l’outil Date/Heure dans Panneau de configuration, notez la date actuelle, puis définissez la date sur le 3 juin 2001.

  2. Ouvrez un module ou créez-en un.

  3. Dans le menu Affichage, cliquez sur Fenêtre Exécution.

  4. Supposons que la date de naissance de votre ami était le 15 novembre 1967 et aujourd’hui est le 3 juin 2001. Tapez la ligne suivante dans la fenêtre Exécution, puis appuyez sur Entrée :

    ? Âge(« 15/11/67 »)

    Notez que Microsoft Access répond avec la valeur 33 (années).

  5. Tapez la ligne suivante, puis appuyez sur Entrée :

    ? AgeMonths(« 15/11/67 »)

    Notez que Microsoft Access répond avec la valeur 6, indiquant que six mois se sont écoulés depuis le dernier anniversaire de cette personne. Votre ami a 33 ans et six mois.

  6. En utilisant l’outil Date/Heure dans Panneau de configuration, réinitialisez la date à la date actuelle que vous avez notée à l’étape 1.

Utilisation des fonctions Age() et AgeMonths()

La procédure suivante explique comment marquer les anciennes commandes en plaçant la valeur d’âge dans un nouveau contrôle.

  1. Dans l’exemple de base de données Northwind.mdb, tapez les fonctions Age() et AgeMonth() dans un nouveau module.

  2. Ouvrez le formulaire Commandes en mode Création et ajoutez un contrôle de zone de texte indépendant.

  3. Tapez la ligne suivante dans la propriété ControlSource du nouveau contrôle de zone de texte :

    =Age([OrderDate]) & " yrs " & AgeMonths([OrderDate]) & " mos »

  4. Affichez le formulaire en mode Formulaire. Notez que l’ancienneté de la commande s’affiche dans le nouveau contrôle de zone de texte.

References

Pour plus d’informations sur les différences de date, dans le Rédacteur Visual Basic, cliquez sur Aide de Microsoft Visual Basic dans le menu Aide, tapez la fonction datediff dans le Assistant Office ou l’Assistant Réponse, puis cliquez sur Rechercher pour afficher la rubrique.