Table.Unpivot : transformer des colonnes en lignes dans Power Query
Passer d’un tableau avec un mois par colonne à une table exploitable, avec une ligne par client et par mois. Et choisir entre Table.Unpivot et Table.UnpivotOtherColumns.
Table.Unpivot convertit un ensemble de colonnes en paires attribut et valeur. Chaque colonne citée devient une ligne : son nom part dans une colonne d’attribut, son contenu dans une colonne de valeur, et les autres colonnes de la ligne sont répétées à côté. C’est l’opération qu’il faut pour un fichier de suivi où chaque mois occupe sa propre colonne : tant que les mois restent en colonnes, impossible de filtrer sur une période ou de relier la table à un calendrier.
Dans l’éditeur, les commandes se trouvent par clic droit sur les en-têtes ou dans l’onglet Transformer. Dépivoter uniquement les colonnes sélectionnées écrit Table.Unpivot. Dépivoter les colonnes et Dépivoter les autres colonnes écrivent sa variante Table.UnpivotOtherColumns, que l’interface produit le plus souvent.
Quatre paramètres, tous obligatoires
Table.Unpivot(
table as table,
pivotColumns as list,
attributeColumn as text,
valueColumn as text
) as table
| Paramètre | Rôle |
|---|---|
table | La table de départ. |
pivotColumns | La liste des colonnes à transformer en lignes. |
attributeColumn | Le nom de la nouvelle colonne qui recevra les anciens en-têtes. |
valueColumn | Le nom de la nouvelle colonne qui recevra les valeurs. |
Table.UnpivotOtherColumns a exactement la même signature, mais sa liste désigne l’inverse : les colonnes à conserver. Toutes les autres sont dépivotées. Par défaut, l’interface nomme les deux nouvelles colonnes Attribut et Valeur.
Un tableau de suivi mensuel
Sur une table avec une colonne Client (Bob, Jim) et une colonne par mois : Janvier, Février, Mars. Jim n’a rien facturé en février, la cellule est vide (null).
Dépivoter les mois cités
Table.Unpivot(Source, {"Janvier", "Février", "Mars"}, "Mois", "Montant")
Le résultat compte trois colonnes, Client, Mois et Montant, et une ligne par client et par mois. Bob obtient trois lignes. Jim n’en obtient que deux : comme dans l’exemple de la documentation, la cellule null ne produit pas de ligne.
Dépivoter tout sauf le client
Table.UnpivotOtherColumns(Source, {"Client"}, "Mois", "Montant")
Même résultat sur ce tableau. La différence n’apparaît que lorsque les colonnes de la source changent.
Le mois d’avril qui reste en colonne
Le fichier de suivi s’enrichit d’une colonne par mois. En avril, une colonne Avril apparaît. Avec Table.Unpivot et sa liste figée, seuls Janvier, Février et Mars sont dépivotés : Avril reste une colonne à part, ses montants n’entrent pas dans la colonne Montant, et les totaux du rapport ignorent le mois sans aucune erreur. La documentation de l’éditeur décrit précisément ce comportement : la colonne ajoutée après coup reste inchangée.
Quand la liste des mois grandit, on inverse la logique : on cite ce qui est stable, les colonnes descriptives, et on laisse Power Query dépivoter tout le reste.
let
Source = ...,
Depivote = Table.UnpivotOtherColumns(Source, {"Client"}, "Mois", "Montant")
in
Depivote
La contrepartie : toute nouvelle colonne descriptive, une colonne Ville par exemple, serait elle aussi dépivotée. Il faut l’ajouter à la liste des colonnes conservées dès qu’elle apparaît.
Ce qu’on nous demande sur Table.Unpivot
Pourquoi certaines lignes disparaissent-elles après le dépivotage ?
Les cellules null ne produisent pas de ligne, comme le montre l’exemple de la documentation. Si chaque client doit avoir une ligne pour chaque mois, remplacez d’abord les null par 0, par exemple avec Table.ReplaceValue(Source, null, 0, Replacer.ReplaceValue, {« Janvier », « Février », « Mars »}).
Quelle différence entre Table.Unpivot et Table.UnpivotOtherColumns ?
Table.Unpivot reçoit la liste des colonnes à dépivoter. Table.UnpivotOtherColumns reçoit la liste des colonnes à garder et dépivote toutes les autres. La seconde absorbe les nouvelles colonnes de la source, la première les laisse de côté.
Pourquoi la colonne des mois est-elle du texte ?
Elle reçoit les anciens en-têtes de colonnes, qui sont des noms. Pour la relier à un calendrier, il faut la convertir ensuite en date ou la rapprocher d’une table de correspondance des mois.
Comment revenir à un mois par colonne ?
C’est l’opération inverse, Table.Pivot, que l’interface écrit derrière la commande Colonne dynamique. Dans un modèle Power BI, la forme dépivotée reste en général la plus pratique à analyser.
Pour aller plus loin
Sources. Documentation officielle de l’éditeur, consultée le 13 octobre 2026 : Table.Unpivot, Table.UnpivotOtherColumns, Dépivoter des colonnes.
Un nouveau mois dans le fichier et des totaux qui ne bougent pas ?
Nous transformons vos tableaux de suivi Excel en tables qui absorbent les nouvelles périodes sans retouche.