Date.EndOfMonth et EOMONTH : obtenir la fin du mois dans Power BI
Ramener chaque date au dernier jour de son mois, en Power Query comme en DAX, sans se laisser surprendre par l’heure qui reste accrochée à la date.
Date.EndOfMonth renvoie la fin du mois qui contient la date fournie. Le 14 février donne le 28 février, le 3 mars donne le 31 mars. La fonction connaît la longueur réelle de chaque mois, années bissextiles comprises.
On s’en sert pour rattacher des opérations à un mois de clôture, pour calculer une échéance « fin de mois » ou pour regrouper des données par mois avec une vraie date plutôt qu’un libellé. En DAX, le même besoin passe par EOMONTH, qui ajoute la possibilité de décaler d’un nombre de mois.
Une date en Power Query, une date et un décalage en DAX
Date.EndOfMonth(dateTime as any) as any
EOMONTH(<start_date>, <months>)
| Paramètre | Rôle |
|---|---|
dateTime (Power Query) | Une valeur date, datetime ou datetimezone dont on veut la fin de mois. |
start_date (DAX) | La date de départ, au format date ou sous forme de texte. Si ce n’est pas une date valide, EOMONTH renvoie une erreur. |
months (DAX) | Le nombre de mois avant ou après la date de départ : 0 pour le mois même, négatif pour reculer. Un nombre décimal est arrondi à l’entier le plus proche. |
Date.EndOfMonth n’a pas de paramètre de décalage : pour viser un autre mois, on la combine avec Date.AddMonths. EOMONTH renvoie une date ; elle n’est pas prise en charge en mode DirectQuery dans les colonnes calculées et les règles RLS.
En Power Query, puis en DAX
Côté DAX, le modèle relie une table Ventes (Date, Montant) à Produits et à une table Calendrier.
Une colonne « fin de mois » en Power Query
Table.AddColumn(Source, "Fin de mois",
each Date.EndOfMonth([Date]), type date)
Sur une colonne typée en date, chaque ligne reçoit le dernier jour de son mois. Date.EndOfMonth(#date(2026, 2, 14)) renvoie #date(2026, 2, 28).
La fin du mois suivant en Power Query
Date.EndOfMonth(Date.AddMonths([Date], 1))
On avance d’abord d’un mois, puis on prend la fin de ce mois. Une facture du 10 avril aboutit au 31 mai.
Le même calcul en DAX
Fin de mois = EOMONTH(Ventes[Date], 0)
Échéance fin de mois suivant = EOMONTH(Ventes[Date], 1)
Deux colonnes calculées dans Ventes. Avec 0, EOMONTH reste dans le mois de la vente ; avec 1, elle passe au mois suivant.
Le premier jour du mois en DAX
Début du mois affiché = EOMONTH(MAX(Calendrier[Date]), -1) + 1
La fin du mois précédent, plus un jour : c’est le premier jour du mois en cours dans le visuel. Pratique pour borner un cumul depuis le début du mois.
L’heure qui empêche la jointure
Un export fournit des horodatages, pas des dates. On applique Date.EndOfMonth à cette colonne pour la relier à un calendrier ou à une table de clôtures mensuelles, et rien ne correspond.
La raison tient au type. La documentation de l’éditeur montre qu’une valeur datetimezone du 17 mai 2011 à 5 h donne le 31 mai 2011 à 23:59:59,9999999 : le résultat garde son heure, poussée au dernier instant du mois. Une telle valeur n’est égale à aucune date du calendrier.
La parade : ne garder que la date avant de chercher la fin du mois.
Table.AddColumn(Source, "Fin de mois",
each Date.EndOfMonth(DateTime.Date([Horodatage])), type date)
DateTime.Date extrait la partie date, et la colonne obtenue se relie sans difficulté à une table de dates.
Ce qu’on nous demande sur la fin du mois
Quelle différence entre Date.EndOfMonth et EOMONTH ?
Date.EndOfMonth est la fonction Power Query : elle prend une seule valeur et renvoie la fin de son mois. EOMONTH est la fonction DAX : elle prend en plus un nombre de mois, ce qui permet de viser directement la fin d’un mois antérieur ou postérieur.
Comment obtenir le premier jour du mois ?
En Power Query, avec Date.StartOfMonth, qui renvoie le début du mois contenant la date. En DAX, avec EOMONTH(date, -1) + 1 : la fin du mois précédent, plus un jour.
Que fait EOMONTH avec un nombre de mois décimal ?
Elle l’arrondit à l’entier le plus proche. Selon la documentation de l’éditeur, EOMONTH(« March 3, 2008 », 1.5) renvoie le 31 mai 2008, car 1,5 est arrondi à 2.
Pourquoi ma fin de mois ne correspond à aucune date du calendrier ?
Parce que la colonne de départ contient une heure. Le résultat de Date.EndOfMonth garde alors une heure en fin de journée. Extrayez la date avec DateTime.Date avant d’appliquer la fonction.
Pour aller plus loin
EDATE: ajouter des mois en gardant le même jour.- Les fonctions de date de Power Query.
- Créer un calendrier dynamique.
- La référence complète Power Query et DAX.
Sources. Documentation officielle de l’éditeur, consultée le 14 octobre 2026 : Date.EndOfMonth, Date.AddMonths, Date.StartOfMonth, DateTime.Date, EOMONTH.
Vos clôtures mensuelles ne tombent pas sur le bon jour ?
Nous reprenons vos calculs de fin de mois et d’échéance pour qu’ils collent à vos règles de gestion.