Retour aux fonctions

FILTER

Renvoie une version filtrée de la plage source, en ne conservant que les lignes ou les colonnes répondant aux conditions spécifiées.

FilterFILTER(range, condition1, [condition2])

FILTER (FILTRE dans un Google Sheets en français) renvoie uniquement les lignes (ou les colonnes) d'une plage qui remplissent les conditions que vous définissez, et se met à jour automatiquement quand les données changent. Elle remplace les vues filtrées manuelles, les colonnes d'aide et la plupart des contournements de VLOOKUP pour « donne-moi toutes les lignes où... ».

Syntaxe

=FILTER(range, condition1, [condition2, ...])
  • range : Les données à filtrer, sur une ou plusieurs colonnes.
  • condition1 : Une colonne (ou une ligne) de valeurs TRUE/FALSE, ou une expression qui en produit une, avec le même nombre de lignes que range. Seules les lignes où la condition est TRUE sont renvoyées.
  • condition2, ... [Facultatif] : D'autres conditions. Une ligne doit satisfaire toutes les conditions (logique ET).

Le résultat se déverse dans autant de cellules que nécessaire sous et à droite de la formule : ces cellules doivent donc être vides.

Exemples de base

Avec des données en A1:C100 (Nom, Service, Salaire) et des en-têtes en ligne 1 :

=FILTER(A2:C100, B2:B100 = "Ventes")

Renvoie toutes les lignes dont le service est Ventes.

=FILTER(A2:C100, C2:C100 > 50000)

Renvoie toutes les lignes dont le salaire dépasse 50 000.

Pour ne renvoyer que certaines colonnes, choisissez une plage plus étroite. Cette formule ne renvoie que les noms de l'équipe Ventes :

=FILTER(A2:A100, B2:B100 = "Ventes")

Plusieurs conditions

ET : toutes les conditions doivent être vraies

Passez plusieurs conditions :

=FILTER(A2:C100, B2:B100 = "Ventes", C2:C100 > 50000)

OU : au moins une doit être vraie

Additionnez les conditions. TRUE vaut 1, donc une somme supérieure à 0 signifie qu'au moins une condition est vraie :

=FILTER(A2:C100, (B2:B100 = "Ventes") + (B2:B100 = "IT"))

Mélanger ET et OU

=FILTER(A2:C100, ((B2:B100 = "Ventes") + (B2:B100 = "IT")) * (C2:C100 > 50000))

La multiplication est un ET, l'addition est un OU. Utilisez des parenthèses pour être explicite.

Conditions utiles

  • Non vide : A2:A100 <> ""
  • Contient du texte : ISNUMBER(SEARCH("urgent", A2:A100))
  • Expression régulière : REGEXMATCH(A2:A100, "^INV-\d+")
  • Plage de dates : (D2:D100 >= DATE(2026,1,1)) * (D2:D100 <= DATE(2026,3,31))
  • Valeur d'une cellule : B2:B100 = G1, où G1 peut être une liste déroulante, ce qui rend le filtre interactif
  • Dans une liste : ISNUMBER(MATCH(B2:B100, J2:J10, 0))
  • Différent de : B2:B100 <> "Ventes"

Gérer l'absence de résultat

Quand rien ne correspond, FILTER renvoie #N/A (« Aucune correspondance trouvée dans l'évaluation de FILTER »). Affichez quelque chose de plus clair avec IFERROR :

=IFERROR(FILTER(A2:C100, B2:B100 = G1), "Aucun résultat")

Trier et nettoyer le résultat

FILTER conserve l'ordre d'origine. Entourez-la de SORT pour ordonner le résultat :

=SORT(FILTER(A2:C100, B2:B100 = "Ventes"), 3, FALSE)

Cette formule trie les lignes filtrées selon la troisième colonne, par ordre décroissant. Entourez-la de UNIQUE pour supprimer les doublons, et de ARRAYFORMULA ou TRANSPOSE pour remodeler le résultat.

Filtrer des colonnes plutôt que des lignes

Pour filtrer des colonnes, utilisez une condition qui est une ligne de même largeur que la plage. Pour masquer les colonnes dont l'en-tête est Notes :

=FILTER(A1:F100, A1:F1 <> "Notes")

Filtrer entre feuilles et entre fichiers

Faites pointer la plage vers une autre feuille : =FILTER(Données!A2:C, Données!B2:B = "Ventes"). Pour un autre fichier, entourez la plage de IMPORTRANGE :

=FILTER(IMPORTRANGE("url", "Données!A2:C100"), IMPORTRANGE("url", "Données!B2:B100") = "Ventes")

Pour des cas aussi lourds, une seule QUERY est souvent plus claire.

Erreurs courantes

  • #N/A : aucune correspondance. Rien ne satisfait les conditions. Vérifiez les espaces et les différences texte/nombre, ou entourez la formule de IFERROR.
  • #REF! : le résultat de la matrice n'a pas été développé car il écraserait des données. Quelque chose bloque la zone de déversement. Videz les cellules en dessous et à droite.
  • #VALUE! : tailles de matrices différentes. La condition n'a pas le même nombre de lignes que range. FILTER(A2:C100, B2:B50 = ...) échoue : les deux plages doivent avoir la même taille.
  • Seule une partie des données s'affiche. Les plages ouvertes comme A2:C et B2:B sont correctes, mais mélanger A2:C avec B2:B100 crée une différence de taille.

FILTER, VLOOKUP ou QUERY ?

VLOOKUP et XLOOKUP renvoient une correspondance. FILTER renvoie toutes les correspondances. QUERY fait tout ce que fait FILTER, plus le tri, le regroupement et l'agrégation, au prix d'une syntaxe textuelle. FILTER est plus simple quand il suffit d'obtenir les lignes correspondantes.

Questions fréquentes

FILTER modifie-t-elle mes données sources ? Non. Elle n'affiche qu'une copie filtrée, l'original reste intact.

Peut-on filtrer sur le résultat d'une autre formule ? Oui. Une condition peut être n'importe quelle expression qui renvoie un tableau de valeurs vrai/faux.

Peut-on modifier les cellules filtrées ? Non, les résultats déversés sont le résultat d'une formule. Modifiez plutôt les données sources.

Fonctions associées

  • QUERY : Une façon de type SQL de filtrer, trier et agréger en une seule formule.
  • SORT : Trie les lignes d'une plage.
  • UNIQUE : Renvoie les lignes distinctes d'une plage.
  • XLOOKUP : Renvoie la première correspondance au lieu de toutes.
  • ARRAYFORMULA : Applique une formule à toute une plage.

Articles associés

Newsletter

Plus d'exemples sur FILTER arrivent bientôt.

Nous préparons des mises à jour courtes et pratiques pour les utilisateurs avancés de Sheets.