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

VBA234 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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 :)

3 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
0
Utilisateur anonyme
 
Bonjour
Ce ne seait pas plus simple avec datediff?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Oui, mais cette personne veut du VBA, alors ......!
0
Utilisateur anonyme > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 
J’ai pas de quoi tester sous la main, mais il me semble que ça marche en vba
https://support.microsoft.com/fr-fr/office/datediff-fonction-e6dd7ee6-3d01-4531-905c-e24fc238f85f?ui=fr-fr&rs=fr-fr&ad=fr
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Re,

Petit detail: les cellules ne sont pas au formats date courants
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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


0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour Patrice33740, meilleur voeux

Pas avec son format date 23.04.1980 qui n'est pas "normal"
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Re,
que la cellule contienne une date Ben oui, mais lui non, donc a voir
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
0
Utilisateur anonyme
 
Oui tout à fait
0