Référence DAX · 5 min de lecture

EDATE : ajouter ou retirer des mois à une date en DAX

Calculer une échéance, une fin de contrat ou le début d’une période glissante. Avec le piège des fins de mois qui glissent quand on enchaîne les calculs.

EDATE renvoie la date située un nombre donné de mois avant ou après une date de départ, le même jour du mois. Le 15 mars plus deux mois donne le 15 mai. Un nombre négatif remonte dans le temps.

Elle sert à toutes les dates qui se comptent en mois : échéance d’une facture payable à deux mois, date de renouvellement d’un abonnement, fin d’une garantie. En analyse, elle fixe aussi la borne de départ d’un cumul sur douze mois glissants.

Syntaxe

Une date, un nombre de mois

EDATE(<start_date>, <months>)
ParamètreRôle
start_dateLa date de départ, au format date ou sous forme de texte. Si ce n’est pas une date valide, EDATE renvoie une erreur.
monthsLe nombre de mois à ajouter, négatif pour reculer. Un nombre décimal est tronqué : 1,9 compte pour 1.

La fonction renvoie une date. Quand le jour demandé n’existe pas dans le mois d’arrivée, elle renvoie le dernier jour de ce mois : selon la documentation de l’éditeur, le 29, le 30 et le 31 janvier 2009 plus un mois donnent tous le 28 février 2009. Elle n’est pas prise en charge en mode DirectQuery dans les colonnes calculées et les règles RLS.

Exemples

Une colonne, une valeur, une mesure

Le modèle relie une table Ventes (Date, Montant) à Produits et à une table Calendrier. La mesure de base est CA = SUM(Ventes[Montant]).

Une date d’échéance à deux mois

Échéance = EDATE(Ventes[Date], 2)

En colonne calculée dans Ventes, chaque vente reçoit sa date d’échéance, le même jour du mois deux mois plus tard. Une vente du 10 avril est due le 10 juin.

Le comportement en fin de mois

EDATE(DATE(2026, 1, 31), 1)

Le 31 février n’existe pas : le résultat est le 28 février 2026, dernier jour du mois d’arrivée.

Le chiffre d’affaires des douze derniers mois

CA 12 mois glissants =
VAR Fin = MAX(Calendrier[Date])
VAR Debut = EDATE(Fin, -12) + 1
RETURN
    CALCULATE(
        [CA],
        FILTER(
            ALL(Calendrier),
            Calendrier[Date] >= Debut && Calendrier[Date] <= Fin
        )
    )

Pour un mois de mars 2026, la fenêtre va du 1er avril 2025 au 31 mars 2026. Le + 1 évite de compter deux fois le jour anniversaire, et ALL(Calendrier) libère la fenêtre du filtre de mois posé par le visuel.

En pratique

Les fins de mois qui glissent

Un échéancier mensuel démarre le 31 janvier. Chaque échéance est calculée à partir de la précédente : EDATE(échéance précédente, 1). Février tombe le 28, comme prévu. Mais mars tombe ensuite le 28 aussi, puis avril, puis tous les mois suivants : le calcul part du 28 février, et EDATE garde le même jour.

La parade est double. D’abord, calculer chaque échéance à partir de la date d’origine et non de la précédente : EDATE(DateDébut, N), où N est le numéro de l’échéance. Le 31 janvier plus deux mois donne bien le 31 mars.

Ensuite, si la règle de gestion est « payable en fin de mois », la bonne fonction n’est pas EDATE mais EOMONTH, qui renvoie toujours le dernier jour du mois :

Échéance fin de mois = EOMONTH(Ventes[Date], 1)

Une vente du 10 avril est alors due le 31 mai. Choisir entre les deux, c’est traduire fidèlement les conditions de paiement, pas une question de goût.

Questions fréquentes

Ce qu’on nous demande sur EDATE

Quelle différence entre EDATE et EOMONTH ?

EDATE garde le jour du mois de la date de départ : le 10 avril plus un mois donne le 10 mai. EOMONTH renvoie toujours le dernier jour du mois visé : le 10 avril plus un mois donne le 31 mai. Autre nuance, EDATE tronque un nombre de mois décimal alors que EOMONTH l’arrondit.

Quelle différence entre EDATE et DATEADD ?

EDATE renvoie une seule date, calculée à partir d’une valeur. DATEADD renvoie une table de dates décalées à partir des dates du contexte courant, prises dans une colonne de dates. On utilise DATEADD comme filtre dans CALCULATE pour comparer des périodes, et EDATE pour calculer une date précise.

EDATE accepte-t-elle une date au format texte ?

Oui, mais le texte est interprété selon les paramètres régionaux de l’ordinateur : 1/8/2009 peut être lu comme le 8 janvier ou le 1er août. Mieux vaut convertir les dates au bon type dès Power Query.

Comment calculer une date antérieure ?

Avec un nombre de mois négatif. EDATE(Ventes[Date], -3) renvoie la date située trois mois avant, le même jour du mois.

À côté

Pour aller plus loin

Sources. Documentation officielle de l’éditeur, consultée le 13 octobre 2026 : EDATE, EOMONTH, DATEADD.

Vos échéances ne tombent pas à la bonne date ?

Nous reprenons vos calculs de dates pour qu’ils appliquent exactement vos conditions de paiement et de contrat.

Réserver un appelou 01 83 64 60 25
01 83 64 60 25 Réserver un appel