Aller au contenu principal

Qu'est-ce que la fonction DATEDIF ?

Définition
La fonction DATEDIF calcule la différence entre deux dates selon une unité choisie : années complètes (Y), mois complets (M), jours (D), ou des variantes pour décomposer la durée (YM, MD, YD).

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

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!.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction DATEDIF

1

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.

2

date_fin

: la date d'arrivée du calcul

Elle 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.

3

unité

: l'unité de mesure pour la différence de dates

Ce 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

Le conseil du pro
Le troisième argument choisit l'unité du résultat : « y » pour les années complètes, « m » pour les mois, « d » pour les jours. C'est ce qui rend DATEDIF idéale pour un âge ou une ancienneté.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

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.

Les étapes
  1. 1
    Dans une cellule, écris =DATEDIF(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    En 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.
  5. 5
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas pour toute l'équipe.
Au final, ta formule devrait ressembler à ça :=DATEDIF(B2; AUJOURDHUI(); "y")
Explication
Marie a été embauchée le 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.
Exemple 2

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.

Les étapes
  1. 1
    Dans une cellule, écris =DATEDIF(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    En 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.
  5. 5
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule sur les autres factures.
Voici la formule que tu obtiens à la fin :=DATEDIF(B2; AUJOURDHUI(); "d")
Explication
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).

Exemple 3

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.

Les étapes
  1. 1
    Dans une cellule, écris =DATEDIF(.
  2. 2
    En 1er argument : clique sur la cellule qui contient la date d'embauche, B2. En pointant la cellule plutôt qu'en tapant 14/03/2018 en dur, tu pourras recopier la formule sur les lignes du dessous sans la réécrire.
  3. 3
    En 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.
  4. 4
    En 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 mot ans dans la cellule.
  5. 5
    Ferme 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 entre 0 et 11, et "md" compte les jours qui restent une fois les mois complets retirés.
Une fois les morceaux assemblés, ta formule donne ça :=DATEDIF(B2; AUJOURDHUI(); "y") & " ans, " & DATEDIF(B2; AUJOURDHUI(); "ym") & " mois et " & DATEDIF(B2; AUJOURDHUI(); "md") & " jours"
Explication
Les trois DATEDIF sont collés bout à bout par l'esperluette & 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.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

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".

Lucas, la mascotte du Dojo, compare deux fonctions Excel

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èreDATEDIFJOURSNB.JOURS.OUVRESMOIS.DECALER
Unités disponiblesAnnées, mois, jours (6 options)Jours uniquementJours ouvrés uniquementRenvoie une date
Compte les week-ends✅ Oui✅ Oui❌ NonN/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ésCalculs simples de joursPlanification de projetAjouter ou retirer des mois
Le savais-tu ?
DATEDIF n'apparaît pas dans l'assistant de fonctions et n'a aucune aide intégrée. Héritée du tableur Lotus 1-2-3, elle fonctionne pourtant dans toutes les versions d'Excel.
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec DATEDIF

1Astuce

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").

2Astuce

Protège ta formule contre l'inversion de dates

Si tu n'es pas sûr de l'ordre des dates dans tes données, entoure DATEDIF avec MIN et MAX : =DATEDIF(MIN(A1;B1);MAX(A1;B1);"D"). La plus petite date sera toujours en premier, sans erreur #NOMBRE!.
Utile pour les imports où l'ordre des colonnes n'est pas garanti.

3Astuce

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.

FAQ

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.

Ressources

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 voir