IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Pierre Fauconnier

Calculer l'âge d'une personne avec Excel

Noter ce billet
par , 28/10/2021 à 09h00 (836 Affichages)
Pas de fonction AGE() dans Excel. Ce n'est pas bien grave, il existe des solutions

Salut.


- Pierre, j'ai quel âge?
- A te regarder, 69?
- Merci de me vieillir...
- heu non, c'était par rapport à la chanson de Serge... 69, année érotique...
- Ah, tu me files un rencard?
- Mais non ma belle...

Bon, trêve de plaisanterie, on est sur un blog sérieux, ici...


La mauvaise approche

Je me souviens d'une discussion sur le forum dans laquelle il était question d'âge. Les réponses farfelues d'un des membres m'avaient quelque peu irritées, puisqu'il partait de l'idée qu'il suffisait de diviser le nombre de jours entre la date de calcul et la date de naissance par 365 pour trouver la date. De plus, il arrondissait pour avoir une année entière. Du coup, à 47.5 ans, on passait à 48... Du grand m'importe quoi, mais la rigueur n'était manifestement pas son fort.

Nom : 2021-10-27_175507.png
Affichages : 46
Taille : 7,5 Ko

Comme on le voit, la précision n'est pas vraiment au rendez-vous. Le premier calcul est juste, mais pas le second*. En fait, la division par 365 omet de compter les années bissextiles, et donc l'erreur sera d'autant plus grande que la personne est âgée. Dans le cas présent, la personne passe à 47 ans le 30/04/2021, soit 12 jours avant sa vraie date d'anniversaire. C'est normal puisqu'il y a 12 années bissextiles entre 1974 et 2021...


Amélioration de la précision, effets de bord

on peut tenter la division par 365.25 pour avoir une meilleure approche, mais on a un effet de bord pour certaines dates

Nom : 2021-10-27_180801.png
Affichages : 46
Taille : 26,8 Ko


Une approche qui tient la route

Perso, je procède ainsi: Avec une date de naissance en A2 et la date de calcul en B2, j'utilise la formule =ANNEE(B2)-ANNEE(A2)-(DATE(ANNEE(B2);MOIS(A2);JOUR(A2))>B2). Je calcule la différence entre les années des dates, et je retranche 1 si la date d'anniversaire est ultérieure à la date du calcul.

Nom : 2021-10-27_180840.png
Affichages : 45
Taille : 24,0 Ko


On pratiquera de la même façon en VBA:
Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Function Age(BirthDate As Date, Optional CheckDate As Date) As Long
  If CheckDate = 0 Then CheckDate = Date
  Age = Year(CheckDate) - Year(BirthDate) + (DateSerial(Year(CheckDate), Month(BirthDate), Day(BirthDate)) > CheckDate) * 1
End Function


Conclusions

Il est toujours important de bien tester vos solutions, en étant très attentif aux valeurs créant des effets de bord. Dans ce cas, on testera la formule avec la veille de la date de calcul, la date de calcul elle-même et le lendemain de la date de calcul, pour être certain d'avoir les conditions correctement exprimées. C'est la base des bases pour le développeur professionnel.


Bon travail avec Excel







* Méfiez-vous des réponses non testées et bâclées

Envoyer le billet « Calculer l'âge d'une personne avec Excel » dans le blog Viadeo Envoyer le billet « Calculer l'âge d'une personne avec Excel » dans le blog Twitter Envoyer le billet « Calculer l'âge d'une personne avec Excel » dans le blog Google Envoyer le billet « Calculer l'âge d'une personne avec Excel » dans le blog Facebook Envoyer le billet « Calculer l'âge d'une personne avec Excel » dans le blog Digg Envoyer le billet « Calculer l'âge d'une personne avec Excel » dans le blog Delicious Envoyer le billet « Calculer l'âge d'une personne avec Excel » dans le blog MySpace Envoyer le billet « Calculer l'âge d'une personne avec Excel » dans le blog Yahoo

Commentaires