Richard Ginier, fondateur · 20 août 2026

Manipuler les tables en Power Query

Mis à jour le

En Power Query, tout est table : chaque étape en reçoit une et en rend une autre. Savoir les combiner, les filtrer et les remodeler, c’est savoir construire une requête. Cet article couvre les opérations de tables que nous utilisons sur toutes les missions, du simple filtre à la récupération de tous les onglets d’un classeur Excel, avec le code M et, quand il existe, le bouton d’interface équivalent.

Filtrer et échantillonner les lignes

Table.SelectRows ( Source, each [Montant] > 0 )        // filtre libre
Table.SelectRows ( Source, each [Date] >= #date(2026,1,1) and [Pays] = "FR" )
Table.FirstN ( Source, 100 )      // les 100 premières lignes
Table.Skip ( Source, 2 )          // saute les 2 premières (en-têtes parasites)
Table.Distinct ( Source, {"Client"} )  // dédoublonne sur une colonne
Table.RowCount ( Source )         // compte les lignes

Table.SelectRows est le filtre de l’interface en plus puissant : la condition peut croiser plusieurs colonnes, appeler des fonctions de date ou de texte, ou comparer à un paramètre. Table.Skip sauve les exports qui arrivent avec deux lignes de titre avant les vrais en-têtes.

Empiler et fusionner plusieurs tables

// Empiler (mêmes colonnes) : ajout de requêtes
Table.Combine ( { Ventes2025, Ventes2026 } )

// Fusionner (jointure sur clé) : fusion de requêtes
Table.NestedJoin ( Ventes, {"ClientID"}, Clients, {"ID"}, "Infos", JoinKind.LeftOuter )

Deux logiques différentes : Combine empile des tables de même structure (des mois, des filiales), NestedJoin rapproche deux tables par une clé, comme un RECHERCHEX. Les types de jointure couvrent tous les besoins (LeftOuter pour enrichir, Inner pour ne garder que les correspondances, LeftAnti pour trouver les orphelines, précieuse en contrôle de cohérence). Pour des libellés saisis à la main qui ne matchent jamais exactement, la variante Table.FuzzyNestedJoin tolère les écarts.

Développer les colonnes imbriquées

Après une fusion (ou une source JSON), la nouvelle colonne contient des tables imbriquées : c’est l’icône aux deux flèches en en-tête. La développer génère :

Table.ExpandTableColumn ( Fusion, "Infos", {"Nom", "Segment"}, {"Client", "Segment"} )
// colonne à développer, colonnes à sortir, noms de destination

Deux réflexes ici. Ne développez que les colonnes utiles : chaque colonne inutile ralentit l’actualisation et gonfle le modèle. Et décochez « Utiliser le nom de colonne d’origine comme préfixe », sinon vous héritez de libellés « Infos.Nom » à renettoyer partout.

Regrouper : les sous-totaux côté requête

Table.Group ( Source, {"Client"},
  {
    {"CA", each List.Sum ( [Montant] ), type number},
    {"NbCommandes", each Table.RowCount ( _ ), Int64.Type}
  }
)

Le bouton Regrouper par fait la même chose. À utiliser pour préparer une table d’agrégats (un import allégé, une table de référence), pas pour remplacer les mesures : les totaux qui doivent réagir aux filtres du rapport restent du ressort de DAX.

Récupérer tous les onglets d’un classeur Excel

let
    Source = Excel.Workbook ( File.Contents ( "C:\Exports\ventes.xlsx" ), true ),
    Feuilles = Table.SelectRows ( Source, each [Kind] = "Sheet" ),
    Donnees = Table.Combine ( Feuilles[Data] )
in
    Donnees

Le classique du reporting mensuel : un onglet par mois, et personne ne veut refaire l’import en janvier. Excel.Workbook liste tout le classeur, on filtre sur les feuilles, on empile leurs données. Les nouveaux onglets arrivent tout seuls à l’actualisation suivante. Si les structures divergent d’un onglet à l’autre, l’empilement révèle vite lequel a une colonne renommée.

Tables Power Query : ce qui revient souvent

Fusionner dans Power Query ou créer une relation dans le modèle ?

Les deux existent pour de bonnes raisons. La relation dans le modèle est la voie normale du schéma en étoile : elle reste dynamique et ne duplique rien. La fusion en Power Query se justifie pour aplatir une table de référence, corriger une granularité ou préparer une clé composite avant chargement.

Ma requête est lente après plusieurs fusions, que faire ?

Filtrez et supprimez les colonnes le plus tôt possible dans la chaîne d’étapes, vérifiez que le query folding fonctionne encore sur les sources base de données (clic droit sur une étape, Afficher la requête native), et évitez de développer des colonnes que vous n’utilisez pas. L’ordre des étapes change beaucoup de choses.

Comment vérifier qu’une jointure n’a rien perdu ?

Comptez avant et après avec Table.RowCount, et surtout faites la jointure inverse en LeftAnti : elle liste les lignes sans correspondance. Une jointure « propre » qui perd 3 % des lignes en silence est le genre de bug qu’on découvre en réunion de direction.

Une chaîne Power Query bien construite survit aux départs et aux changements d’exports. Nos projets data & BI livrent des requêtes documentées que vos équipes savent faire évoluer.

Sources — documentation officielle, consultée le 22 août 2026 : liste des fonctions Table, Table.NestedJoin, Table.Group.

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