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

Fermé
VBA234 Messages postés 1 Date d'inscription mardi 2 janvier 2018 Statut Membre Dernière intervention 2 janvier 2018 - 2 janv. 2018 à 23:04
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 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 :)

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 janv. 2018 à 08:03
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
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 929
3 janv. 2018 à 13:16
Bonjour
Ce ne seait pas plus simple avec datediff?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 janv. 2018 à 13:47
Bonjour,

Oui, mais cette personne veut du VBA, alors ......!
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 929 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
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.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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 janv. 2018 à 13:55
Re,

Petit detail: les cellules ne sont pas au formats date courants
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
3 janv. 2018 à 10:40
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 janv. 2018 à 10:49
Bonjour Patrice33740, meilleur voeux

Pas avec son format date 23.04.1980 qui n'est pas "normal"
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
Modifié le 3 janv. 2018 à 11:03
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 janv. 2018 à 11:10
Re,
que la cellule contienne une date Ben oui, mais lui non, donc a voir
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 janv. 2018 à 16:19
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
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 929
3 janv. 2018 à 19:57
Oui tout à fait
0