On reçoit un fichier RH avec trois cents dates de naissance en colonne B, et la demande tombe : « il faut l’âge exact de chaque salarié, mis à jour automatiquement ». Le réflexe de soustraire la date de naissance à la date du jour et de diviser par 365 donne un résultat approximatif, parfois faux d’un an pile le jour d’un anniversaire.
Le calcul âge dans Excel mérite une approche plus rigoureuse, surtout quand le résultat alimente un tableau de bord ou un rapport officiel.
Dates saisies comme texte : le piège qui fausse tout le calcul âge dans Excel
Avant même de choisir une formule, on vérifie que les dates de naissance sont de vraies dates Excel et non du texte. Une cellule qui affiche « 15/03/1990 » peut contenir une chaîne de caractères si elle a été importée d’un CSV ou copiée depuis un autre logiciel.
Le test rapide : cliquer sur la cellule et regarder la barre de formule. Si Excel reconnaît une date, il affiche un numéro de série (par exemple 32946) quand on passe la cellule en format « Nombre ». Si la valeur reste identique au texte affiché, la cellule contient du texte, pas une date.
Pour convertir ces fausses dates, la fonction DATEVAL fonctionne dans la plupart des cas. Sur un fichier où les dates arrivent au format JJ/MM/AAAA en texte, on écrit :
=DATEVAL(A2)
Si le format source est inversé (MM/JJ/AAAA, fréquent sur les exports anglo-saxons), il faut réagencer la chaîne avec STXT ou GAUCHE/DROITE avant d’appliquer DATEVAL. Ignorer cette étape, c’est garantir des erreurs silencieuses sur toute la colonne d’âges.

DATEDIF et AUJOURDHUI : la formule fiable pour un âge en années complètes
La fonction DATEDIF n’apparaît pas dans l’assistant de formules d’Excel, mais elle existe depuis les premières versions. Sa syntaxe pour obtenir un âge en années entières :
=DATEDIF(B2;AUJOURDHUI(); »y »)
L’argument « y » (pour years) renvoie le nombre d’années révolues. Une personne née le 20 décembre 1995 affichera 29 ans tant que la date du jour n’a pas atteint le 20 décembre 2025. C’est exactement le comportement attendu pour un âge civil.
Pourquoi AUJOURDHUI actualise l’âge sans intervention
AUJOURDHUI() recalcule la date courante à chaque ouverture du fichier ou à chaque modification d’une cellule. On n’a rien à mettre à jour manuellement. L’âge se rafraîchit automatiquement chaque jour, ce qui convient parfaitement à un suivi RH ou à un tableau de bord partagé.
Le cas particulier du 29 février
Un salarié né le 29 février pose une question de convention. DATEDIF considère que cette personne a un an de plus le 1er mars les années non bissextiles. Selon la règle métier retenue dans votre organisation, ce comportement peut convenir ou non.
Les retours varient sur ce point : certains services juridiques exigent que l’anniversaire tombe le 28 février, d’autres acceptent le 1er mars. On définit la convention avant d’automatiser, pas après.
ANNEE.FRACTION avec la base 1 : une alternative pour les années bissextiles
La fonction ANNEE.FRACTION (YEARFRAC en anglais) offre une approche différente. Avec le paramètre de base 1 (« actual/actual »), elle divise le nombre réel de jours écoulés par le nombre réel de jours dans chaque année traversée, y compris les années bissextiles.
=ENT(ANNEE.FRACTION(B2;AUJOURDHUI();1))
On enveloppe le résultat dans ENT (ou INT) pour obtenir un entier, puisque ANNEE.FRACTION renvoie un nombre décimal. La base 1 gère correctement les années bissextiles, là où une simple division par 365 introduit un décalage progressif.
En pratique, sur la majorité des cas courants, DATEDIF et ANNEE.FRACTION base 1 donnent le même résultat. La différence apparaît sur des cas limites (personnes très âgées, calculs sur des périodes couvrant plusieurs 29 février). Pour un fichier RH standard, les deux fonctions sont interchangeables.

Afficher un âge détaillé en années, mois et jours avec DATEDIF
Quand on a besoin d’un âge précis (suivi médical, contrat d’assurance), on combine trois appels à DATEDIF dans une seule cellule :
=DATEDIF(B2;AUJOURDHUI(); »y »)& » ans « &DATEDIF(B2;AUJOURDHUI(); »ym »)& » mois « &DATEDIF(B2;AUJOURDHUI(); »md »)& » jours »
- « y » renvoie les années complètes, « ym » les mois restants après les années, « md » les jours restants après les mois
- L’opérateur & concatène le tout en une phrase lisible du type « 32 ans 4 mois 12 jours »
- Si l’affichage « 0 mois » ou « 0 jours » gêne, on ajoute une condition SI pour masquer les valeurs nulles
Cette formule reste lisible même pour un utilisateur Excel intermédiaire. On la copie sur toute la colonne en un glisser-déposer.
Calcul d’âge à une date précise (pas la date du jour)
Il arrive qu’on doive calculer l’âge d’une personne à une date donnée : date d’un événement passé, date de clôture d’un exercice, date limite d’inscription. On remplace simplement AUJOURDHUI() par la référence de la cellule contenant cette date :
=DATEDIF(B2;D2; »y »)
où D2 contient la date cible. Toute formule DATEDIF accepte une date fixe à la place d’AUJOURDHUI, ce qui permet de figer le calcul indépendamment du jour d’ouverture du fichier.
Erreurs fréquentes à repérer dans un tableau d’âges Excel
Après avoir déployé la formule sur plusieurs centaines de lignes, certaines cellules peuvent afficher #VALEUR! ou un résultat aberrant. Les causes les plus courantes :
- La date de naissance est postérieure à la date de référence (DATEDIF renvoie une erreur si la date de début est après la date de fin)
- La cellule contient un espace invisible avant ou après la date, ce qui la transforme en texte
- Le format régional du poste (français vs anglais) inverse jour et mois, produisant des dates valides mais fausses (le 03/04/1988 devient le 4 mars au lieu du 3 avril)
- Une cellule vide dans la colonne de dates génère un âge erroné, souvent supérieur à 100 ans, parce qu’Excel interprète une cellule vide comme le 0 janvier 1900
On ajoute un contrôle SI pour neutraliser ces cas : =SI(B2= » »; » »;DATEDIF(B2;AUJOURDHUI(); »y »)). Ce garde-fou évite de polluer un rapport avec des valeurs aberrantes.
Le choix entre DATEDIF et ANNEE.FRACTION dépend surtout de la convention métier et du niveau de détail attendu. Pour un âge civil en années entières, DATEDIF avec « y » reste la formule la plus directe. L’étape qu’on néglige le plus souvent n’est pas la formule elle-même, mais la vérification que chaque cellule source contient bien une vraie date Excel.

