Qu'est-ce que la fonction DATEDIF ?
DATEDIF est la fonction à sortir dès qu'une simple soustraction de dates ne te suffit plus et que tu as besoin d'un résultat exprimé en années, en mois ou en jours complets. Elle porte le même nom en français et en anglais (DATEDIF), n'apparaît pas dans l'autocomplétion, mais elle fonctionne parfaitement depuis des décennies : héritage de l'ancien tableur Lotus 1-2-3.
Tu vas l'utiliser pour gérer l'ancienneté des employés à la minute près, suivre les échéances clients et identifier les factures en retard, mesurer la durée des cycles de vente, ou calculer automatiquement l'âge de quelqu'un en années, mois et jours combinés. Peu de fonctions Excel permettent ce niveau de précision sur les intervalles de dates.
Syntaxe
=DATEDIF(date_début; date_fin; unité)Clique sur un argument pour aller à son explication.
DATEDIF n'apparaît pas dans l'autocomplétion d'Excel et n'est pas officiellement documentée par Microsoft. Elle doit être saisie manuellement. Si date_début est postérieure à date_fin, la fonction renvoie #NOMBRE!.

Comprendre chaque paramètre de la fonction DATEDIF
date_début
: la date de départ du calculÇa peut être une référence de cellule comme A1, une date construite avec DATE(2020;1;15), ou la fonction AUJOURDHUI(). Cette date doit être antérieure à date_fin, sinon tu obtiens #NOMBRE!.
Attention à bien avoir des cellules au format Date dans Excel, pas du texte qui ressemble à une date.
Attention : Si date_début est postérieure à date_fin, DATEDIF renvoie #NOMBRE!. Pour te protéger, utilise =DATEDIF(MIN(A1;B1); MAX(A1;B1); "D") qui place automatiquement la date la plus petite en premier.
date_fin
: la date d'arrivée du calculElle doit être postérieure à date_début. Pour calculer une durée jusqu'à aujourd'hui, utilise AUJOURDHUI() comme date_fin. C'est particulièrement utile pour les âges ou les anciennetés qui évoluent automatiquement chaque jour.
unité
: l'unité de mesure pour la différence de datesCe paramètre doit être entre guillemets. Six valeurs sont disponibles :
"Y" → années complètes entre les deux dates
"M" → mois complets entre les deux dates
"D" → nombre total de jours entre les deux dates
"YM" → mois restants après avoir compté les années complètes (0 à 11)
"MD" → jours restants après avoir compté les mois complets (attention aux bugs connus)
"YD" → jours entre les dates comme si elles étaient dans la même année

Exemples pratiques pas à pas
Comment calculer l'ancienneté d'un salarié en années avec la fonction DATEDIF
La prime d'ancienneté tombe en fin d'année et le tableau des salariés ne contient que les dates d'embauche. Recalculer chaque ancienneté à la main, c'est la garantie d'un oubli, et le fichier est déjà périmé le mois suivant.
Tu as une colonne Embauche avec les dates de chaque salarié, et tu veux le nombre d'années complètes passées dans l'entreprise. DATEDIF mesure l'écart entre deux dates et le renvoie dans l'unité que tu lui demandes, ici des années entières.
- 1Dans une cellule, écris
=DATEDIF(. - 2En 1er argument : clique sur la cellule qui contient la date d'embauche,
B2. DATEDIF attend toujours la plus ancienne des deux dates à cette place, et si tu inverses les deux, elle renvoie#NOMBRE!au lieu d'un nombre d'années. - 3En 2ᵉ argument : écris la date qui arrête le calcul,
AUJOURDHUI(). Cette fonction s'écrit sans rien entre ses parenthèses et renvoie la date du jour, mais tu mettrais à la place la cellule d'une date de sortie si tu calculais l'ancienneté d'un salarié parti de l'entreprise. - 4En 3ᵉ argument : saisis l'unité du résultat,
"y", qui compte les années complètes. Les guillemets sont obligatoires : sans eux, Excel cherche une cellule nommée Y et la formule échoue. - 5Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas pour toute l'équipe.
=DATEDIF(B2; AUJOURDHUI(); "y")14/03/2018, la formule affiche donc 8 années complètes. Ce chiffre est vivant : comme la date de fin est AUJOURDHUI(), il se recalcule tout seul à chaque ouverture du fichier et passera à 9 le jour anniversaire de l'embauche, sans que tu touches à quoi que ce soit.Comment mesurer le nombre de jours écoulés depuis une facture avec la fonction DATEDIF
Les impayés s'accumulent et personne ne sait quelle facture relancer en premier, faute de savoir depuis combien de temps chacune traîne. Attendre trois mois pour s'en apercevoir, c'est de la trésorerie perdue.
Tu as une colonne Date facture et tu veux, pour chaque ligne, l'âge de la facture en jours. Même fonction que dans l'exemple précédent, mais tu changes l'unité pour compter des jours au lieu des années.
- 1Dans une cellule, écris
=DATEDIF(. - 2En 1er argument : clique sur la cellule qui porte la date d'émission de la facture,
B2. C'est elle qui déclenche le compteur, et plus elle est ancienne, plus le nombre de jours affiché sera grand. - 3En 2ᵉ argument : écris la date qui referme la période,
AUJOURDHUI(). Tu obtiens ainsi l'âge de la facture au moment précis où tu ouvres le fichier, ce qu'une date de relance tapée en dur ne te donnerait pas. - 4En 3ᵉ argument : saisis l'unité du résultat,
"d", qui compte les jours. Ce sont des jours calendaires, week-ends et jours fériés inclus, là où le"y"du premier exemple ne retenait que les années complètes. - 5Ferme la parenthèse et appuie sur Entrée, puis recopie la formule sur les autres factures.
=DATEDIF(B2; AUJOURDHUI(); "d")48 jours se sont écoulés depuis la facture d'Entreprise ABC. Le compteur avance d'un jour chaque matin, ce qui permet de brancher une mise en forme conditionnelle qui passe la ligne en rouge au-delà de 60 jours.Attention : DATEDIF compte les jours calendaires, pas les jours ouvrés. Pour exclure les week-ends et les jours fériés, passe par NB.JOURS.OUVRES (voir le tableau comparatif plus bas).
Comment afficher une durée en années, mois et jours avec la fonction DATEDIF
Un salarié conteste le calcul de ses droits à congés et « 8 ans » ne suffit plus à trancher : il faut le détail au jour près, celui qui figure sur une attestation.
Tu repars de la même colonne Embauche, mais tu veux cette fois une durée complète du type 8 ans, 4 mois et 2 jours. L'astuce consiste à appeler DATEDIF trois fois sur les mêmes dates, avec trois unités différentes, et à concaténer les résultats.
- 1Dans une cellule, écris
=DATEDIF(. - 2En 1er argument : clique sur la cellule qui contient la date d'embauche,
B2. En pointant la cellule plutôt qu'en tapant14/03/2018en dur, tu pourras recopier la formule sur les lignes du dessous sans la réécrire. - 3En 2ᵉ argument : écris la date jusqu'à laquelle tu comptes,
AUJOURDHUI(). Comme aucune date n'est figée dans la formule, l'attestation que tu sors reste exacte le jour où tu la sors. - 4En 3ᵉ argument : saisis l'unité du premier morceau de la phrase,
"y", qui compte les années complètes. C'est le nombre qui viendra se placer juste devant le motansdans la cellule. - 5Ferme la parenthèse, complète par
& " ans, " & DATEDIF(B2; AUJOURDHUI(); "ym") & " mois et " & DATEDIF(B2; AUJOURDHUI(); "md") & " jours", puis appuie sur Entrée. L'unité"ym"compte les mois qui restent une fois les années entières retirées, donc un nombre entre0et11, et"md"compte les jours qui restent une fois les mois complets retirés.
=DATEDIF(B2; AUJOURDHUI(); "y") & " ans, " & DATEDIF(B2; AUJOURDHUI(); "ym") & " mois et " & DATEDIF(B2; AUJOURDHUI(); "md") & " jours"& pour former une phrase lisible. Chacun repart de la même date d'embauche, seule l'unité change, et l'ensemble se recalcule tous les jours.
Les erreurs fréquentes avec la fonction DATEDIF
Erreur #NOMBRE! : date_début postérieure à date_fin
Si ta date de début est postérieure à ta date de fin, Excel renvoie #NOMBRE!. C'est l'erreur la plus fréquente avec DATEDIF.
Solution : Vérifie l'ordre de tes dates. Si tu n'es pas sûr de l'ordre, utilise =DATEDIF(MIN(A1;B1); MAX(A1;B1); "D") pour que la plus petite date soit toujours en premier.
Résultats incorrects avec l'unité MD
L'unité MD peut donner des résultats erronés dans certains cas, notamment quand le jour de la date de début est supérieur au jour de la date de fin (par exemple du 31 janvier au 15 février). Microsoft reconnaît ce bug.
Solution : Teste toujours tes formules avec des dates connues. Pour plus de fiabilité, préfère des alternatives ou utilise JOURS() combinée avec des calculs manuels sur les parties de dates.
Oubli des guillemets autour de l'unité
Si tu écris =DATEDIF(A1;B1;Y) au lieu de =DATEDIF(A1;B1;"Y"), Excel cherche une cellule nommée Y et renvoie une erreur.
Solution : Mets toujours l'unité entre guillemets : "Y", "M", "D", "YM", "MD" ou "YD".

DATEDIF vs JOURS vs NB.JOURS.OUVRES vs MOIS.DECALER
Utilise DATEDIF quand tu as besoin de calculer des différences en années ou en mois (ancienneté, âge). Privilégie NB.JOURS.OUVRES pour la planification de projet (exclu week-ends et jours fériés). Pour les calculs simples de jours, JOURS est plus moderne et documenté.
| Critère | DATEDIF | JOURS | NB.JOURS.OUVRES | MOIS.DECALER |
|---|---|---|---|---|
| Unités disponibles | Années, mois, jours (6 options) | Jours uniquement | Jours ouvrés uniquement | Renvoie une date |
| Compte les week-ends | ✅ Oui | ✅ Oui | ❌ Non | N/A |
| Gère les jours fériés | ❌ Non | ❌ Non | ✅ Oui (paramètre optionnel) | ❌ Non |
| Documentée officiellement | ❌ Non | ✅ Oui | ✅ Oui | ✅ Oui |
| Usage recommandé | Âges, anciennetés | Calculs simples de jours | Planification de projet | Ajouter ou retirer des mois |

Astuces avancées avec DATEDIF
Calcul d'âge automatique avec AUJOURDHUI
Pour afficher l'âge qui se met à jour chaque jour sans intervention : =DATEDIF(A1;AUJOURDHUI();"Y")&" ans". Le tableau RH se corrige tout seul à chaque ouverture du fichier.
Pour gérer le pluriel, ajoute un SI : =DATEDIF(A1;AUJOURDHUI();"Y")&" "&SI(DATEDIF(A1;AUJOURDHUI();"Y")>1;"ans";"an").
Protège ta formule contre l'inversion de dates
Convertis une durée en mois total
Pour obtenir le total en mois (pas en années + mois), utilise simplement l'unité M : =DATEDIF(A1;B1;"M")&" mois" renvoie 27 mois là où les unités combinées Y+YM donneraient « 2 ans, 3 mois ».
Pratique pour comparer des durées de contrats sur une seule colonne triable.
Questions fréquentes
DATEDIF est une fonction non documentée, héritée de l'ancien tableur Lotus 1-2-3 pour des raisons de compatibilité. Elle fonctionne parfaitement mais n'est pas officiellement supportée par Microsoft. Tu dois donc la taper manuellement sans autocomplétion.
Y compte les années complètes, M compte les mois complets, et D compte tous les jours. Par exemple, entre le 15/01/2020 et le 20/03/2023 : Y=3 ans, M=38 mois, D=1 160 jours. Chaque unité compte différemment la même période.
YM donne les mois restants après avoir compté les années complètes. MD donne les jours restants après avoir compté les mois. YD compte les jours comme si les dates étaient dans la même année. Ces unités sont utiles pour afficher des durées détaillées comme « 3 ans, 2 mois et 5 jours ».
Oui, l'unité MD peut donner des résultats incorrects dans certains cas spécifiques, notamment quand le jour de la date de début est supérieur au jour de la date de fin. Microsoft reconnaît ce problème. Vérifie toujours tes résultats avec des données de test connues si tu utilises MD.
Utilise =DATEDIF(date_naissance; AUJOURDHUI(); "Y") pour obtenir l'âge en années complètes. Si tu veux le format « 35 ans, 4 mois et 12 jours », combine plusieurs DATEDIF : années avec Y, mois avec YM, et jours avec MD.
Pour aller plus loin
Continue sur ta lancée après la fonction DATEDIF : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voirLes dates et heures dans Excel

Le modèle Excel « Calcul d'ancienneté »

Le guide complet pour bien démarrer sur Excel



