Richard Ginier, fondateur · 13 août 2026

Manipuler les dates en Power Query

Mis à jour le

Les dates arrivent rarement propres : du texte à convertir, des datetimes avec heures qui empêchent les jointures, des périodes à reconstruire. Power Query règle tout ça avant le modèle, et c’est le bon endroit pour le faire (une colonne calculée en amont coûte moins cher qu’une colonne DAX). Cet article regroupe les opérations de dates que nous utilisons sur chaque mission, classées par besoin. Toutes s’écrivent dans une colonne personnalisée (Ajouter une colonne → Colonne personnalisée) ou directement dans la barre de formule.

Extraire année, mois, jour

Date.Year ( [MaDate] )          // 2026
Date.Month ( [MaDate] )         // 8
Date.Day ( [MaDate] )           // 12
Date.QuarterOfYear ( [MaDate] ) // 3
Date.WeekOfYear ( [MaDate] )    // numéro de semaine
Date.DayOfWeek ( [MaDate], Day.Monday )  // 0 = lundi
Date.DayOfYear ( [MaDate] )     // 224
Date.ToText ( [MaDate], "MMMM", "fr-FR" ) // "août"

L’interface fait la même chose sans code : sélectionnez la colonne, puis Ajouter une colonne → Date et choisissez Année, Mois, Jour… Le code devient utile dès qu’on combine (année fiscale, clé AnnéeMois, libellé personnalisé).

Décaler une date : jours, semaines, mois, trimestres

Date.AddDays ( [MaDate], 30 )      // + 30 jours
Date.AddWeeks ( [MaDate], -2 )     // - 2 semaines
Date.AddMonths ( [MaDate], 3 )     // + 3 mois (gère les fins de mois)
Date.AddQuarters ( [MaDate], 1 )   // + 1 trimestre
Date.AddYears ( [MaDate], -1 )     // - 1 an

Le nombre peut être négatif pour reculer. Date.AddMonths gère les cas limites correctement : le 31 janvier + 1 mois donne le 28 (ou 29) février, pas une erreur. C’est la façon propre de calculer une date d’échéance ou une période de comparaison.

Débuts et fins de période

Date.StartOfMonth ( [MaDate] )    // 1er du mois
Date.EndOfMonth ( [MaDate] )      // dernier jour du mois
Date.EndOfWeek ( [MaDate], Day.Monday )  // dimanche de la semaine
Date.EndOfQuarter ( [MaDate] )    // fin de trimestre
Date.EndOfYear ( [MaDate] )       // 31 décembre
Date.DaysInMonth ( [MaDate] )     // 28, 29, 30 ou 31

Rattacher chaque ligne à sa fin de mois est le moyen le plus simple de construire des agrégats mensuels comparables, notamment quand les journées de facturation varient. Les mêmes fonctions existent en Start pour les débuts de période.

Convertir : texte, datetime, nombre

Date.From ( [Colonne] )                  // convertit texte ou datetime en date
Date.FromText ( "12/08/2026", [Culture="fr-FR"] )  // texte avec format français
DateTime.From ( [Colonne] )              // vers datetime
DateTime.Date ( [MonDatetime] )          // extrait la date pure d'un datetime
DateTime.LocalNow ()                     // maintenant (heure locale)
Date.From ( DateTime.LocalNow () )       // aujourd'hui

Le paramètre de culture évite le grand classique : un CSV français lu avec une culture anglaise, qui inverse jours et mois quand il ne plante pas. Et DateTime.Date résout un piège que nous corrigeons souvent en audit : une relation qui « ne filtre pas » parce que la colonne de faits contient des heures. On tronque, et la jointure vers le calendrier fonctionne.

Tester une date : période courante, comparaisons

Date.IsInCurrentDay ( [MaDate] )      // aujourd'hui ?
Date.IsInCurrentWeek ( [MaDate] )     // cette semaine ?
Date.IsInCurrentMonth ( [MaDate] )    // ce mois-ci ?
Date.IsInCurrentQuarter ( [MaDate] )  // ce trimestre ?
Date.IsInCurrentYear ( [MaDate] )     // cette année ?
Date.IsInPreviousNMonths ( [MaDate], 3 )  // dans les 3 derniers mois ?

Ces tests renvoient vrai ou faux : parfaits pour filtrer une requête sur une fenêtre glissante, ou créer un drapeau « période en cours » utilisé ensuite dans les rapports. Attention à une subtilité : ils s’évaluent à l’actualisation, pas à la consultation du rapport. Pour un filtre qui suit l’utilisateur en temps réel, la logique se fait plutôt en DAX, côté modèle.

Dates en Power Query : ce qui revient souvent

Power Query ou DAX pour les colonnes de dates ?

Power Query en priorité : les colonnes sont calculées une fois à l’actualisation et compressées comme les autres. DAX garde la main pour ce qui dépend du contexte de lecture (comparaisons de périodes, cumuls) via les mesures et le calendrier.

Pourquoi ma conversion de texte en date échoue-t-elle ?

Presque toujours une histoire de culture : « 12/08/2026 » se lit 12 août en France et 8 décembre aux États-Unis. Précisez la culture dans la conversion, ou utilisez « Modifier le type avec les paramètres régionaux » sur la colonne.

Comment calculer un âge ou une ancienneté ?

Soustrayez les deux dates puis convertissez : Duration.Days ( [Fin] - [Debut] ) donne des jours ; pour des années entières, comparez année, mois et jour ou divisez les jours par 365,25 selon la précision voulue.

Des dates propres, c’est la moitié d’un reporting fiable. Si vos équipes passent leurs journées à retraiter des exports, notre Audit Data Express cartographie vos flux et identifie les retraitements à automatiser.

Sources — documentation officielle, consultée le 22 août 2026 : liste des fonctions Date, Date.FromText, Date.EndOfMonth.

Parlons de vos données.

30 minutes pour évaluer votre situation — conseils concrets garantis, avec ou sans mission.

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