IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

VBA Access Discussion :

Calculer l'age en fonction du jour ou nous sommes [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 89
    Points
    89
    Par défaut Calculer l'age en fonction du jour ou nous sommes
    Bonjour,
    JE bloque.
    je souhaite (à partir d'une date de naissance "NAISSANCE _adh") calculer dans ma ttxbox "txt_age" l'age exact de la personne.

    J'utilise le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.TXT_Age = DateDiff("yyyy", NAISSANCE_Adh, date) & " ans"
    Alors le code fonctionne mais il va me donner l'age en fonction de l'année...
    si je suis né le 02/01/1976 j'aurais 40 ans OK
    si je suis né le 02/07/1976 j'aurais 40 ans PAS OK je veux qu'il affiche 39ans.

    Car en réalité (nous somme le 11/06/2016) j'ai 39 ans aujourd'hui !!!

    Quelqu'un a une idée?

    Merci par avance.

  2. #2
    Membre régulier
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mars 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mars 2016
    Messages : 58
    Points : 105
    Points
    105
    Par défaut
    Bonjour

    A vue de nez je dirai :

    Age = annee courante - annee anniversaire

    Si mois et jour de naissance superieur a mois et jour courant alors age = age - 1

  3. #3
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut


    Note : ceci est une adaptation du code source proposé par Michel Walsh

    Solution 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DiffDate("aaaa";[DateNaiss];Maintenant())+Int(Format(Maintenant();"mm""dd""")<Format([DateNaiss];"mm""dd""")) & " " & "ans"
    Solution 2
    Il faut créer cette fonction avec Visual Basic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Compare Database
    Option Explicit
    'Note : ceci est une adaptation du code source proposé par Michel Walsh
    Function Age(DateNaiss) As Integer
        If Month(Date) < Month(DateNaiss) Or (Month(Date) = Month(DateNaiss) And Day(Date) < Day(DateNaiss)) Then
                Age = Year(Date) - Year(DateNaiss) - 1
        Else
                Age = Year(Date) - Year(DateNaiss)
        End If
    End Function
    Ensuite dans la propriété Source contrôle de ton txtbox, tu peux appeler la fonction en saisisant le code ci-après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(Age([DateNaiss])) & " " & "ans"
    Voici la base de test :
    Fichiers attachés Fichiers attachés
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 89
    Points
    89
    Par défaut
    Hello,

    Super milkoseck...
    Ta solution 1 et ta solution 2 fonctionne très bien ...

    Merci beaucoup.

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, avec un peu de retard, j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Option Explicit
     
    Function DiffDateAMJ(DateDebut As Date, DateFin As Date) As String
    Dim NbAns As Long, NbMois As Long, NbJours As Long
    Dim Tmp As Date, sA As String, sM As String, sJ As String
     
        Tmp = DateSerial(Year(DateFin), Month(DateDebut), Day(DateDebut))
        NbAns = Year(DateFin) - Year(DateDebut) + (Tmp > DateFin)
        NbMois = Month(DateFin) - Month(DateDebut) - (12 * (Tmp > DateFin))
        NbJours = Day(DateFin) - Day(DateDebut) + 1    ' [ Date Début, Date Fin ]
     
        If NbJours < 0 Then
            NbMois = NbMois - 1
            NbJours = Day(DateSerial(Year(DateFin), Month(DateFin), 0)) + NbJours
        End If
     
        If NbAns = 0 Then sA = "" Else sA = NbAns & "a "
        If NbMois = 0 Then sM = "" Else sM = NbMois & "m "
        If NbJours = 0 Then sJ = "" Else sJ = NbJours & "j"
     
        DiffDateAMJ = Trim$(sA & sM & sJ)
    End Function
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment calculer l'age en année mois et jours en vb6 avec dtpicker
    Par abfalog dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 21/05/2013, 22h39
  2. Requete nb d'inscrit en fonction du jour
    Par Alain15 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/06/2006, 09h25
  3. Réponses: 5
    Dernier message: 21/03/2006, 21h39
  4. Comment utiliser la fonction NBR.JOURS.OUVRES?
    Par MEHCOOPER dans le forum Access
    Réponses: 9
    Dernier message: 20/10/2005, 12h50
  5. Calculer l'age d'une personne
    Par Oberown dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 27/09/2005, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo