Menu

Calculer l'age de la personne a partir de la date de naissance-

VBA234 1 Messages postés mardi 2 janvier 2018Date d'inscription 2 janvier 2018 Dernière intervention - 2 janv. 2018 à 23:04 - Dernière réponse : Whismeril 11641 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention
- 3 janv. 2018 à 19:57
Bonsoir,

Dans une colonne j'ai une liste avec les dates de naissances au format ‘23.04.1980’ et je cherche à créer une nouvelle variable avec l’âge de la personne.
Ayant peu de connaissances en vba, s'il vous plaît, est-ce qu'il y a quelqu'un qui peut m'aider avec un code vba?

Merci beaucoup :)
Afficher la suite 

Votre réponse

11 réponses

f894009 13151 Messages postés dimanche 25 novembre 2007Date d'inscription 23 juin 2018 Dernière intervention - 3 janv. 2018 à 08:03
0
Merci
Bonjour,

Fonction VBA utilisable aussi dans une formule:

Function Age(Date_nais)
    Dim Ans As Long, Mois As Long, Jours As Long
    Dim DNais As Date
    
    DNais = Replace(Date_nais, ".", "/")        'date au format "normal"
    Ans = (Year(Now()) - Year(DNais))          'nombre annees
    Mois = (Month(Now()) - Month(DNais))    'nombre de mois
    Jours = (Day(Now()) - Day(DNais))          'nombre de jours
    If (Ans > 0 And Mois > 0) Or (Ans > 0 And Mois = 0 And Jours >= 0) Then
        Age = Ans
    Else
        Age = Ans - 1
    End If
End Function
Whismeril 11641 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention - 3 janv. 2018 à 13:16
Bonjour
Ce ne seait pas plus simple avec datediff?
f894009 13151 Messages postés dimanche 25 novembre 2007Date d'inscription 23 juin 2018 Dernière intervention - 3 janv. 2018 à 13:47
Bonjour,

Oui, mais cette personne veut du VBA, alors ......!
Whismeril 11641 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention > f894009 13151 Messages postés dimanche 25 novembre 2007Date d'inscription 23 juin 2018 Dernière intervention - 3 janv. 2018 à 14:11
J’ai pas de quoi tester sous la main, mais il me semble que ça marche en vba
https://support.office.com/fr-fr/article/DateDiff-fonction-E6DD7EE6-3D01-4531-905C-E24FC238F85F
f894009 13151 Messages postés dimanche 25 novembre 2007Date d'inscription 23 juin 2018 Dernière intervention - 3 janv. 2018 à 13:55
Re,

Petit detail: les cellules ne sont pas au formats date courants
Commenter la réponse de f894009
Patrice33740 6982 Messages postés dimanche 13 juin 2010Date d'inscription 22 juin 2018 Dernière intervention - 3 janv. 2018 à 10:40
0
Merci
Bonjour,

On peut aussi utiliser une fonction :
=ENT(FRACTION.ANNEE(DateDeNaissance;AUJOURDHUI()))

Ou en VBA :
Private Function Age(DateDeNaissance As Date) As Integer
  Age = Int(Application.WorksheetFunction.YearFrac(DateDeNaissance, Now))
End Function


f894009 13151 Messages postés dimanche 25 novembre 2007Date d'inscription 23 juin 2018 Dernière intervention - 3 janv. 2018 à 10:49
Bonjour Patrice33740, meilleur voeux

Pas avec son format date 23.04.1980 qui n'est pas "normal"
Patrice33740 6982 Messages postés dimanche 13 juin 2010Date d'inscription 22 juin 2018 Dernière intervention - 3 janv. 2018 à 11:01
Bonjour f894009 et meilleurs vœux également

Ça fonctionne quel que soit le format de date utilisé (par exemple ici au format date Allemand(Autriche)) mais effectivement il faut (comme il le précise) que la cellule contienne une date mais aussi si c'est un texte.

Cdlt
Patrice
f894009 13151 Messages postés dimanche 25 novembre 2007Date d'inscription 23 juin 2018 Dernière intervention - 3 janv. 2018 à 11:10
Re,
que la cellule contienne une date Ben oui, mais lui non, donc a voir
Commenter la réponse de Patrice33740
f894009 13151 Messages postés dimanche 25 novembre 2007Date d'inscription 23 juin 2018 Dernière intervention - 3 janv. 2018 à 16:19
0
Merci
Re Whismeril,
VBA, j'ai deja mis un exemple. Il est aussi interessant d'utiliser la fonction de Partrice33740 car plus simple

Function Age(Date_nais)
    DNais = CDate(Replace(Date_nais, ".", "/"))        'date au format "normal"
    Age = Int(Application.WorksheetFunction.YearFrac(DNais, Now))
End Function
Whismeril 11641 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention - 3 janv. 2018 à 19:57
Oui tout à fait
Commenter la réponse de f894009