Table.SelectRows : filtrer les lignes d’une table dans Power Query
Garder les factures utiles et écarter les autres, avec une condition écrite une fois et rejouée à chaque actualisation.
Table.SelectRows renvoie les lignes d’une table qui satisfont une condition. La condition est une fonction évaluée sur chaque ligne : la ligne est gardée quand le résultat est vrai. Les colonnes ne changent pas, seul le nombre de lignes diminue.
C’est l’étape qu’écrit Power Query quand vous filtrez depuis la flèche d’un en-tête de colonne, en cochant des valeurs ou en passant par la boîte de dialogue Filtrer les lignes et ses modes De base et Avancé. Écrire la condition à la main permet d’aller plus loin : combiner plusieurs colonnes, ignorer la casse, comparer à une liste de valeurs.
Une table et une condition
Table.SelectRows(table as table, condition as function) as table
| Paramètre | Rôle |
|---|---|
table | La table à filtrer. |
condition | La fonction appliquée à chaque ligne. On l’écrit presque toujours avec each, en citant les colonnes entre crochets : each [Montant] > 100. |
Il n’y a aucun paramètre facultatif : tout se joue dans l’écriture de la condition.
Quatre filtres qui reviennent souvent
Sur une table Factures avec les colonnes Client, Mois, Libellé et Montant, et des lignes pour Bob, Jim, Paul et Ringo.
Un seuil numérique
Table.SelectRows(Factures, each [Montant] > 100)
Seules les factures de plus de 100 restent.
Plusieurs conditions
Table.SelectRows(Factures, each ([Client] = "Bob" or [Client] = "Jim") and [Montant] > 100)
Les factures de Bob ou de Jim, au-delà de 100. Les parenthèses fixent l’ordre de lecture : nous les mettons dès que and et or se mélangent.
Une liste de valeurs
Table.SelectRows(Factures, each List.Contains({"Bob", "Jim", "Paul"}, [Client]))
Plus lisible qu’une suite de or, et la liste peut venir d’une autre requête.
Exclure un texte sans tenir compte de la casse
Table.SelectRows(Factures, each not Text.Contains([Libellé], "avoir", Comparer.OrdinalIgnoreCase))
Les lignes dont le libellé contient « avoir », « Avoir » ou « AVOIR » sont écartées.
Le filtre texte qui laisse passer des avoirs
Pour retirer les avoirs d’un export de factures, on écrit :
Table.SelectRows(Factures, each not Text.Contains([Libellé], "Avoir"))
Le résultat semble juste sur les premières lignes. Mais Text.Contains distingue majuscules et minuscules par défaut : les libellés saisis « avoir » ou « AVOIR » passent le filtre et restent dans le total, sans message. Ajouter Comparer.OrdinalIgnoreCase en troisième argument règle la question de la casse.
Reste le libellé vide. Quand [Libellé] vaut null, Text.Contains renvoie null et non vrai ou faux. Nous préférons alors dire explicitement ce que l’on veut faire de ces lignes, par exemple les garder :
Table.SelectRows(Factures, each [Libellé] = null
or not Text.Contains([Libellé], "avoir", Comparer.OrdinalIgnoreCase))
Dernier point côté interface : la liste de valeurs à cocher ne charge que les 1 000 premières valeurs distinctes de la colonne, avec un lien Charger plus. Sur une colonne très variée, une condition écrite à la main est plus sûre qu’une liste cochée sur un échantillon.
Ce qu’on nous demande sur Table.SelectRows
Comment filtrer sur plusieurs valeurs sans enchaîner les or ?
Avec List.Contains dans la condition : each List.Contains({"Bob", "Jim"}, [Client]) garde les lignes dont le client figure dans la liste.
Le filtre tient-il compte des majuscules ?
Les comparaisons de texte comme Text.Contains sont sensibles à la casse par défaut. Le comparateur Comparer.OrdinalIgnoreCase, passé en dernier argument, les rend insensibles.
Comment retirer les lignes vides d’une colonne ?
La commande Supprimer vide du menu de la colonne applique deux règles : elle écarte les valeurs null et les valeurs vides.
Faut-il une seule étape de filtre ou plusieurs ?
Dans le mode Avancé, toutes les clauses agissent au même niveau. Quand un filtre doit s’appuyer sur le résultat d’un autre, la documentation conseille de créer plusieurs étapes de filtre.
Pour aller plus loin
Table.RemoveRows: supprimer des lignes par position.- Rechercher un texte dans une table.
- Les fonctions de texte en Power Query.
- La référence complète Power Query et DAX.
Sources. Documentation officielle de l’éditeur, consultée le 14 octobre 2026 : Table.SelectRows, Text.Contains, List.Contains, Filtrer par valeurs dans une colonne.
Vos filtres laissent passer des lignes qu’ils devraient écarter ?
Nous relisons vos conditions de filtre pour qu’elles tiennent face aux variations de saisie de vos exports.