Retour aux fonctions

DATEDIF

Calcule le nombre de jours, de mois ou d'années entre deux dates.

DateDATEDIF(start_date, end_date, unit)

DATEDIF calcule la différence entre deux dates en années, mois ou jours entiers. C'est la méthode standard pour obtenir l'âge d'une personne, l'ancienneté d'un salarié ou les mois restant sur un contrat, et elle renvoie des nombres entiers propres plutôt que des fractions.

Syntaxe

=DATEDIF(start_date, end_date, unit)
  • start_date : La date la plus ancienne.
  • end_date : La date la plus récente. Elle ne doit pas précéder start_date, sinon vous obtenez #NUM!.
  • unit : Un code texte, entre guillemets, qui indique ce qu'il faut compter.

Unités

  • "Y" : années complètes entre les dates
  • "M" : mois complets
  • "D" : jours
  • "YM" : mois après soustraction des années complètes (ignore les années)
  • "YD" : jours après soustraction des années complètes (ignore les années)
  • "MD" : jours après soustraction des mois complets (ignore les mois et les années)

L'unité ne tient pas compte de la casse, mais elle doit être entre guillemets : "Y", pas Y.

Exemples de base

Avec une date de début du 15 janvier 2020 en A2 et une date de fin du 10 mars 2026 en B2 :

=DATEDIF(A2, B2, "Y")

Renvoie 6 : les années complètes.

=DATEDIF(A2, B2, "M")

Renvoie 73 : les mois complets.

=DATEDIF(A2, B2, "D")

Renvoie le nombre de jours. C'est égal à B2 - A2.

Âge et ancienneté

Âge en années

=DATEDIF(A2, TODAY(), "Y")

Avec une date de naissance en A2. Elle ne compte que les années accomplies : quelqu'un qui aura 30 ans demain en a encore 29 aujourd'hui.

Années, mois et jours dans une même phrase

=DATEDIF(A2, TODAY(), "Y") & " ans, " & DATEDIF(A2, TODAY(), "YM") & " mois, " & DATEDIF(A2, TODAY(), "MD") & " jours"

Renvoie quelque chose comme 6 ans, 1 mois, 23 jours. Les unités "YM" et "MD" donnent le reste après retrait des unités plus grandes, ce qui fait fonctionner la phrase.

Ancienneté d'un salarié en mois entiers

=DATEDIF(A2, TODAY(), "M")

Mois restant avant la fin d'un contrat

=DATEDIF(TODAY(), B2, "M")

Assurez-vous que la date de fin est dans le futur, sinon le résultat est #NUM!.

Gérer les dates de début postérieures aux dates de fin

DATEDIF échoue avec #NUM! quand le début est postérieur à la fin. Protégez-vous :

=IF(A2 <= B2, DATEDIF(A2, B2, "D"), "")

Ou renvoyez la différence dans un sens comme dans l'autre avec MIN et MAX :

=DATEDIF(MIN(A2, B2), MAX(A2, B2), "D")

L'utiliser sur une colonne

=ARRAYFORMULA(IF(A2:A = "", "", DATEDIF(A2:A, TODAY(), "Y")))

Alternatives à DATEDIF

  • Jours entre deux dates : =B2 - A2 ou =DAYS(B2, A2).
  • Années fractionnaires : =YEARFRAC(A2, B2), qui renvoie par exemple 6.15, utile pour des calculs au prorata.
  • Jours ouvrés : NETWORKDAYS.
  • Mois, y compris partiels : =(YEAR(B2) - YEAR(A2)) * 12 + MONTH(B2) - MONTH(A2), qui compte les limites de mois civils franchies.

Comportement d'arrondi à connaître

DATEDIF compte des unités complètes. Du 31 janvier au 28 février, "M" renvoie 0, car un mois entier ne s'est pas écoulé. Si vous devez compter les limites de mois, utilisez l'arithmétique YEAR/MONTH ci-dessus. Soyez prudent avec "MD" quand les mois n'ont pas la même longueur : les résultats près des fins de mois peuvent surprendre, testez donc des cas limites comme du 29 au 31 avant de vous y fier.

Erreurs courantes

  • #NUM!. La date de début est postérieure à la date de fin.
  • #VALUE!. L'une des dates est du texte et non une vraie date, ou l'unité est invalide. Vérifiez l'alignement (les dates sont alignées à droite par défaut) et convertissez avec DATEVALUE.
  • #NAME?. L'unité n'est pas entre guillemets.
  • 0 inattendu. Moins d'une unité complète s'est écoulée.
  • Âge décalé d'un an. DATEDIF compte les années accomplies, ce qui est la bonne façon de compter l'âge. Pour « âge au prochain anniversaire », ajoutez 1.

Questions fréquentes

La date de fin est-elle incluse ? La différence est le temps écoulé entre les dates : DATEDIF de lundi à mardi en jours donne 1. Ajoutez 1 si vous voulez un décompte inclusif.

Comment obtenir l'âge sous forme décimale ? YEARFRAC(A2, TODAY()).

DATEDIF accepte-t-elle des heures ? Elle ignore l'heure de la journée et travaille sur des dates entières.

Fonctions associées

  • TODAY : Renvoie la date du jour.
  • NETWORKDAYS : Compte les jours ouvrés entre deux dates.
  • EOMONTH : Renvoie le dernier jour d'un mois.
  • DAYS : Renvoie le nombre de jours entre deux dates.
  • YEARFRAC : Renvoie la fraction d'année entre deux dates.

Articles associés

Newsletter

Plus d'exemples sur DATEDIF arrivent bientôt.

Nous préparons des mises à jour courtes et pratiques pour les utilisateurs avancés de Sheets.