---
title: "Filtrer les lignes d'une table : Table.SelectRows"
description: "Filtrer les lignes d'une table dans Power Query avec Table.SelectRows : syntaxe, conditions multiples, liste de valeurs et piège de la casse."
url: "https://data-slconsulting.com/reference-power-query-dax/filtrer-les-lignes-dune-table-power-bi/"
lang: "fr-FR"
---

Référence Power Query · 5 min de lecture

# 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.

Syntaxe

## 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.

Exemples

## 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.

En pratique

## 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.

Questions fréquentes

## 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.

À côté

## Pour aller plus loin

- [`Table.RemoveRows`](https://data-slconsulting.com/reference-power-query-dax/tableremoverows-power-query/) : supprimer des lignes par position.
- [Rechercher un texte dans une table](https://data-slconsulting.com/reference-power-query-dax/rechercher-un-texte-dans-une-table-power-bi/).
- [Les fonctions de texte en Power Query](https://data-slconsulting.com/texte-power-query/).
- [La référence complète Power Query et DAX](https://data-slconsulting.com/reference-power-query-dax/).

**Sources.** Documentation officielle de l’éditeur, consultée le 14 octobre 2026 : [Table.SelectRows](https://learn.microsoft.com/fr-fr/powerquery-m/table-selectrows), [Text.Contains](https://learn.microsoft.com/fr-fr/powerquery-m/text-contains), [List.Contains](https://learn.microsoft.com/fr-fr/powerquery-m/list-contains), [Filtrer par valeurs dans une colonne](https://learn.microsoft.com/fr-fr/power-query/filter-values).

## 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.

[Réserver un appel](https://data-slconsulting.com/contact/) ou 01 83 64 60 25

---

Version Markdown de https://data-slconsulting.com/reference-power-query-dax/filtrer-les-lignes-dune-table-power-bi/ (pour les agents IA : en-tête Accept: text/markdown, suffixe .md ou ?mode=agent). Index du site pour les agents : https://data-slconsulting.com/llms.txt. API publique : https://data-slconsulting.com/developers/. Contact : contact@data-slconsulting.com, 01 83 64 60 25.
