Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre du Club
    Arrondir à l'inférieur le nombre d'année entre deux dates
    Bonjour,

    Voici une requête Access pour connaître l'âge d'une personne en années :

    AgeAn: DiffDate("yyyy";[DateNaiss];Maintenant()).

    Le résultat donne 26 pour une personne qui est née le 22.11.1994 alors qu'elle n'a pas encore 26 ans révolus.

    Comment obtenir 25 ans ?

    Merci d'avance pour votre réponse !

    Belle fin de week-end.
    SuzyR

  2. #2
    Membre régulier
    Arrondir à l'inférieur le nombre d'année entre deux dates
    Bonjour,

    J'utilise cette fonction pour avoir l'age par rapport à la date du jour ou d'une date précise (par exemple la date de début d'une compétition,d'un événement):

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function CalculAge2(DateNaissance As Date, Optional dateReference As Date)
    If dateReference = 0 Then dateReference = Date
    CalculAge2 = Year(dateReference) - Year(DateNaissance) + _
    (Format(DateNaissance, "mmdd") > Format(dateReference, "mmdd"))
    End Function


    Cordialement
    Riton

  3. #3
    Membre du Club
    Bonsoir Riton,

    Merci beaucoup !!

    Belle soirée.
    SuzyR

  4. #4
    Membre du Club
    Bonsoir,

    Je me permets de revenir vers vous, car j'ai utilisé la fonction dans une requête et ça fonctionne très bien.

    Par contre, quand je veux mettre un critère, par exemple 9, pour obtenir toutes les personnes qui ont 9 ans, le message suivant s'affiche :

    "Type de données incompatibles dans l'expression du critère."

    J'ai essayé de déclarer la fonction en Integer mais ça ne fonctionne pas.

    Voici la requête :
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CalculAge([DateNaiss]) AS AgeAn
    FROM T_Enfant
    WHERE (((CalculAge([DateNaiss]))=9));


    Merci !

    Merci d'avance pour votre aide !!

    SuzyR

  5. #5
    Expert éminent sénior
    bonsoir,
    le résultat de la fonction retourne un Variant (fonction déclarée sans type)
    3 solutions:
    - mettre des apostrophes ou des guillemets autour du critère:
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    WHERE CalculAge([DateNaiss])='9';
    WHERE CalculAge([DateNaiss]))="9";

    - convertir le résultat en numérique
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    WHERE CInt(CalculAge([DateNaiss]))=9;

    ou on peut aussi déclarer le type de la fonction (Entier suffit largement pour un calcul d'âge):
    Code VBA :Sélectionner tout -Visualiser dans une fenêtre à part
    Function CalculAge2(DateNaissance As Date, Optional dateReference As Date) As Integer
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...

  6. #6
    Membre régulier
    Bonjour,

    Merci Tee pour ces précisions.
    Comme d’habitude, tes interventions sont "Tip Top".
    Au plaisir de te lire.
    Cordialement
    Riton

###raw>template_hook.ano_emploi###