Calculer un âge ou une ancienneté dans Excel (cas RH)
« Combien d'années Pierre a-t-il dans l'entreprise ? Quel âge a Marie au 31 décembre ? Combien de jours reste-t-il avant la retraite ? » Ces questions reviennent en permanence en RH, en paie, en gestion de contrats. Excel offre plusieurs fonctions de calcul d'écart entre deux dates — chacune avec ses spécificités. Voici comment toujours obtenir le résultat correct.
La fonction reine : DATEDIF
Bizarre, mais vraie : DATEDIF existe dans Excel depuis 1995 et fonctionne dans toutes les versions, mais Microsoft ne la documente plus et elle n'apparaît pas dans l'auto-complétion. Vous devez la taper en entier — mais elle reste la formule la plus précise pour ce besoin.
Syntaxe
=DATEDIF(date_début; date_fin; "unité")
Le 3e argument détermine l'unité du résultat :
| Unité | Description | Exemple |
|---|---|---|
"Y" | années complètes entre les deux dates | =DATEDIF("01/01/1990"; "15/03/2025"; "Y") → 35 |
"M" | mois complets | … "M" → 422 |
"D" | jours calendaires | … "D" → 12 856 |
"YM" | mois restants après les années (0 à 11) | … "YM" → 2 (mois en plus des 35 ans) |
"MD" | jours restants après les mois (0 à 30) | … "MD" → 14 |
"YD" | jours restants après les années | … "YD" → 73 |
Calcul de l'âge en années révolues
La formule canonique :
=DATEDIF(A2; AUJOURDHUI(); "Y")
Où A2 contient la date de naissance. Le résultat est l'âge en années complètes (anniversaire passé = +1). AUJOURDHUI() est volatile : la formule se met à jour automatiquement chaque jour.
Variante : âge au 31 décembre de cette année
Pour anticiper l'âge en fin d'année (utile pour calculer un quotient familial fiscal, par exemple) :
=DATEDIF(A2; DATE(ANNEE(AUJOURDHUI()); 12; 31); "Y")
Variante : âge à une date précise
Pour l'âge au moment d'un événement (embauche, contrat) :
=DATEDIF(A2; B2; "Y") où B2 est la date d'événement.
Calcul d'ancienneté « X ans, Y mois »
Format très demandé en RH. Combiner deux DATEDIF :
=DATEDIF(A2; AUJOURDHUI(); "Y") & " ans, " & DATEDIF(A2; AUJOURDHUI(); "YM") & " mois"
Exemple : « 12 ans, 7 mois ». Lisible dans une fiche de poste, un avenant, un bilan social.
Version « X ans, Y mois, Z jours »
=DATEDIF(A2;AUJOURDHUI();"Y") & " ans, " & DATEDIF(A2;AUJOURDHUI();"YM") & " mois, " & DATEDIF(A2;AUJOURDHUI();"MD") & " jours"
Singulier / pluriel propre
Pour éviter « 1 ans, 1 mois » au lieu de « 1 an, 1 mois », encapsulez avec un SI :
=DATEDIF(A2;AUJOURDHUI();"Y") & SI(DATEDIF(A2;AUJOURDHUI();"Y")>1;" ans";" an")
Calcul d'ancienneté en fraction d'année
Quand vous calculez une prime au prorata, vous voulez 5,42 ans (5 ans et demi) plutôt que 5. Utilisez FRACTION.ANNEE :
=FRACTION.ANNEE(A2; AUJOURDHUI(); 1)
Le 3e argument (« base ») définit le mode de calcul :
0(défaut, US 30/360)1nombre réel de jours / nombre réel de jours dans l'année (le plus précis)2réel / 3603réel / 365430E/360 européen
Pour de la paie / RH, base 1 est la valeur recommandée.
Calcul d'ancienneté en jours ouvrés
Si vous voulez le nombre de jours travaillés (hors week-ends et jours fériés) :
=NB.JOURS.OUVRES(A2; AUJOURDHUI(); ListeFeries)
Où ListeFeries est une plage contenant les jours fériés. La fonction NB.JOURS.OUVRES.INTL permet en plus de personnaliser les jours du week-end (utile pour les pays où le week-end n'est pas samedi-dimanche).
Cas RH : prime d'ancienneté en paliers
Vous attribuez une prime selon l'ancienneté :
- 0–2 ans → 0 €
- 2–5 ans → 50 €
- 5–10 ans → 100 €
- 10 ans+ → 200 €
Avec SI.CONDITIONS (Excel 2019+) :
=SI.CONDITIONS(B2>=10;200; B2>=5;100; B2>=2;50; VRAI;0)
Où B2 contient l'ancienneté en années calculée par DATEDIF.
Cas RH : alerter sur les anniversaires de cette semaine
Une mise en forme conditionnelle simple. Sélectionnez la colonne « Date naissance », nouvelle règle avec formule :
=NUMERO.SEMAINE(DATE(ANNEE(AUJOURDHUI()); MOIS(A2); JOUR(A2))) = NUMERO.SEMAINE(AUJOURDHUI())
Couleur de fond verte. Les anniversaires de la semaine apparaissent surlignés.
Cas RH : départ en retraite à 64 ans
Calculer la date prévue de départ et le nombre de jours restants :
- Date de retraite :
=DATE(ANNEE(A2)+64; MOIS(A2); JOUR(A2)) - Jours restants :
=B2-AUJOURDHUI()(B2 = date de retraite) - Statut :
=SI(C2<0; "Retraité"; SI(C2<365; "Bientôt"; "Actif"))
Pièges classiques
Date en texte au lieu de date
Si vos dates ressemblent à des dates mais sont en réalité du texte (collées d'un PDF par exemple), DATEDIF renvoie #VALEUR!. Solution : =CNUM(A2) ou =DATEVAL(A2) pour convertir.
DATEDIF avec date_début > date_fin
Renvoie #NOMBRE!. Encapsulez : =SI(B2<A2; ""; DATEDIF(A2; B2; "Y")).
"YM" et "MD" bugs avant Excel 2010
Certaines combinaisons (notamment "MD") renvoient parfois des résultats erronés à cause d'un bug historique. Si précision critique, vérifiez le résultat manuellement ou préférez un calcul personnalisé.
Bonne pratique RH : stockez les dates au format date réel (jamais en texte). Configurez le format d'affichage français (jj/mm/aaaa) dans Format de cellule. Ne mélangez jamais les deux dans une même colonne.
À retenir
- DATEDIF est la formule incontournable pour calculer un âge ou une ancienneté.
- Tapez-la en entier : elle n'apparaît pas dans l'auto-complétion.
- Unités principales :
"Y"(années),"M"(mois),"D"(jours). Combinées :"YM","MD". - Pour la fraction d'année (calcul de prime au prorata) :
FRACTION.ANNEEavec base 1. - Pour les jours ouvrés :
NB.JOURS.OUVRES. - Combinez avec
SI.CONDITIONSpour des grilles de prime par paliers.