=FILTRE(A2:C7;B2:B7="North") renvoie chaque ligne de A2:C7 dont la région, en colonne B, est North. Vous la tapez dans une seule cellule et les lignes trouvées se répandent dans les cellules en dessous et à droite. Remplacez une région de la colonne B par North, ou un North par South, et la liste se met à jour. Dans un Excel anglais, FILTRE s'appelle FILTER ; le tableau affiche les formules sous cette forme anglaise, avec des virgules, mais vous pouvez aussi les taper comme dans un Excel français, avec des points-virgules : =FILTRE(A2:C7;B2:B7="North").
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | Name | Region | Sales | |
| 2 | Ann | North | 120 | Ann | North | 120 | |
| 3 | Ben | South | 80 | Cara | North | 200 | |
| 4 | Cara | North | 200 | Finn | North | 60 | |
| 5 | Dan | East | 150 | ||||
| 6 | Eve | South | 95 | ||||
| 7 | Finn | North | 60 |
=FILTRE(A2:C7;B2:B7="North")Seule E2 contient une formule. Les autres cellules remplies de E:G sont son résultat répandu : cliquez sur F3 et vous voyez qu'elle appartient à la formule de E2. Si quelque chose est tapé dans cette zone, FILTRE affiche #EPARS! (#SPILL! en anglais ; le tableau affiche les noms d'erreur anglais) au lieu des lignes (voir les erreurs #EPARS!).
Syntaxe de FILTRE
=FILTER(array, include, [if_empty])
array(tableau) est ce que vous voulez récupérer : une colonne, plusieurs colonnes ou tout le tableau.include(inclure) est une condition avec un VRAI ou un FAUX par ligne dearray, commeB2:B7="North". Elle doit avoir exactement autant de lignes quearray. (Pour filtrer des colonnes, donnez-lui plutôt une valeur par colonne.)if_empty(si_vide) est ce qu'il faut afficher quand aucune ligne ne correspond. Sans lui, un résultat vide donne l'erreur #CALC!.
FILTRE exige Excel 2021, Excel 2024 ou Microsoft 365. Dans Excel 2019 et les versions plus anciennes, elle affiche #NOM?, et le bouton Filtrer de l'onglet Données est la façon de filtrer. Google Sheets a aussi FILTER, et chaque condition peut y être donnée comme argument séparé.
Les comparaisons de texte ignorent la casse : B2:B7="north" trouve North. FILTRE garde les lignes dans leur ordre d'origine ; trier le résultat est une étape à part, montrée plus bas.
Filtrer selon la valeur d'une cellule
Écrire "North" en dur dans la formule oblige à la modifier à chaque fois. Mettez la valeur dans une cellule et comparez plutôt avec la cellule. Choisissez une autre région en F1 et le résultat suit :
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | Region | North | ||
| 2 | Ann | North | 120 | ||||
| 3 | Ben | South | 80 | Ann | North | 120 | |
| 4 | Cara | North | 200 | Cara | North | 200 | |
| 5 | Dan | East | 150 | Finn | North | 60 | |
| 6 | Eve | South | 95 | ||||
| 7 | Finn | North | 60 |
=FILTRE(A2:C7;B2:B7=F1;"No sales")West n'a aucune ligne, donc le choisir affiche le texte de if_empty, No sales.
Les nombres fonctionnent de la même façon. C2:C7>=F1 avec 100 en F1 garde chaque ligne dont les ventes atteignent au moins 100, et C2:C7>F1 exige strictement plus.
FILTRE avec plusieurs critères (ET)
Pour ne garder une ligne que si deux conditions sont vraies, multipliez-les. Ceci renvoie les lignes North dont les ventes dépassent 100 :
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | Name | Region | Sales | |
| 2 | Ann | North | 120 | Ann | North | 120 | |
| 3 | Ben | South | 80 | Cara | North | 200 | |
| 4 | Cara | North | 200 | ||||
| 5 | Dan | East | 150 | ||||
| 6 | Eve | South | 95 | ||||
| 7 | Finn | North | 60 |
=FILTRE(A2:C7;(B2:B7="North")*(C2:C7>100))Ann (120) et Cara (200) passent. Finn est en North mais ses 60 ne dépassent pas 100, donc il est écarté.
Pourquoi multiplier : chaque condition est une colonne de VRAI et de FAUX, et dans un calcul VRAI compte pour 1 et FAUX pour 0. Une ligne n'obtient 1 que si chaque facteur vaut 1, donc * joue le rôle de ET. Chaque condition a besoin de ses propres parenthèses, et vous pouvez en enchaîner autant que vous voulez : (B2:B7="North")*(C2:C7>100)*(C2:C7<500).
ET() ne fonctionne pas ici. ET(B2:B7="North";C2:C7>100) réduit toute la plage à un seul VRAI ou FAUX au lieu d'un par ligne, donc FILTRE reçoit une forme incorrecte.
FILTRE avec OU
Additionnez les conditions pour garder une ligne quand au moins l'une d'elles est vraie. Ceci renvoie les lignes North et East :
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | Name | Region | Sales | |
| 2 | Ann | North | 120 | Ann | North | 120 | |
| 3 | Ben | South | 80 | Cara | North | 200 | |
| 4 | Cara | North | 200 | Dan | East | 150 | |
| 5 | Dan | East | 150 | Finn | North | 60 | |
| 6 | Eve | South | 95 | ||||
| 7 | Finn | North | 60 |
=FILTRE(A2:C7;(B2:B7="North")+(B2:B7="East"))Une ligne qui remplit les deux conditions donne 2, et FILTRE garde toute ligne dont le résultat n'est pas 0, donc la somme joue le rôle de OU. Vous pouvez combiner les deux : ((B2:B7="North")+(B2:B7="East"))*(C2:C7>100) signifie (North ou East) et plus de 100. Ici, cela renvoie Ann, Cara et Dan.
FILTRE renvoie #CALC! quand rien ne correspond
Quand aucune ligne ne passe, FILTRE n'a rien à renvoyer. Sans troisième argument, c'est l'erreur #CALC! ; avec, vous obtenez votre propre texte :
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | No if_empty | With if_empty | |
| 2 | Ann | North | 120 | #CALC! | No match | |
| 3 | Ben | South | 80 | |||
| 4 | Cara | North | 200 | |||
| 5 | Dan | East | 150 | |||
| 6 | Eve | South | 95 | |||
| 7 | Finn | North | 60 |
#CALC! Le calcul n’a pas de résultat, par exemple un FILTRE qui ne trouve rien.Dans Excel en français : =FILTRE(A2:A7;B2:B7="West")E2 affiche #CALC! et F2 affiche No match. Remplacez South par West en B3 et les deux formules renvoient Ben. Pour n'afficher rien du tout, utilisez une chaîne vide : =FILTRE(A2:A7;B2:B7="West";"").
Ce tableau montre aussi comment filtrer une seule colonne : array est A2:A7, donc seuls les noms reviennent. Pour obtenir certaines colonnes d'un tableau mais pas toutes, entourez le résultat de CHOISIRCOLS : =CHOISIRCOLS(FILTRE(A2:C7;B2:B7="North");1;3) renvoie les noms et les ventes sans la région. CHOISIRCOLS exige Microsoft 365 ou Excel 2024.
Trier le résultat de FILTRE
FILTRE renvoie les lignes dans l'ordre où elles apparaissent dans le tableau. Entourez-la de TRIER pour ordonner le résultat : ici les lignes North triées par ventes, de la plus grande à la plus petite. Le 3 est la colonne du résultat qui sert au tri, et -1 signifie décroissant.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | Name | Region | Sales | |
| 2 | Ann | North | 120 | Cara | North | 200 | |
| 3 | Ben | South | 80 | Ann | North | 120 | |
| 4 | Cara | North | 200 | Finn | North | 60 | |
| 5 | Dan | East | 150 | ||||
| 6 | Eve | South | 95 | ||||
| 7 | Finn | North | 60 |
=TRIER(FILTRE(A2:C7;B2:B7="North");3;-1)Cara (200) arrive en premier, puis Ann (120) et Finn (60). Pour ne renvoyer que les premières lignes, entourez encore le tout de PRENDRE : =PRENDRE(TRIER(FILTRE(A2:C7;B2:B7="North");3;-1);2) garde les deux premières (PRENDRE exige Microsoft 365 ou Excel 2024). TRIER et TRIERPAR présente les autres options de tri.
Filtrer les lignes qui contiennent un texte
FILTRE n'a pas de caractères génériques, donc B2:B7="*th*" cherche le texte littéral *th*. Pour garder les lignes dont le nom contient un texte, testez chaque cellule avec CHERCHE, qui renvoie une position quand le texte est trouvé et une erreur sinon, et entourez-la de ESTNUM :
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | Name | Region | Sales | |
| 2 | Ann | North | 120 | Ann | North | 120 | |
| 3 | Ben | South | 80 | Dan | East | 150 | |
| 4 | Cara | North | 200 | ||||
| 5 | Dan | East | 150 | ||||
| 6 | Eve | South | 95 | ||||
| 7 | Finn | North | 60 |
=FILTRE(A2:C7;ESTNUM(CHERCHE("an";A2:A7)))Ceci renvoie Ann et Dan : CHERCHE ignore la casse, donc "an" correspond aussi au An de Ann. Utilisez TROUVE au lieu de CHERCHE pour une correspondance sensible à la casse.
Exercice : FILTRE avec deux conditions
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | Name | Region | Sales | |
| 2 | Ann | North | 120 | ||||
| 3 | Ben | South | 80 | ||||
| 4 | Cara | North | 200 | ||||
| 5 | Dan | East | 150 | ||||
| 6 | Eve | South | 95 | ||||
| 7 | Finn | North | 60 |
À vous : En E2, renvoyez les lignes (les trois colonnes) des commerciaux de la région South dont les ventes dépassent 85.
Exercice : FILTRE selon une cellule, avec une valeur de repli
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Name | Region | Sales | Region | North | |
| 2 | Ann | North | 120 | |||
| 3 | Ben | South | 80 | Names | ||
| 4 | Cara | North | 200 | |||
| 5 | Dan | East | 150 | |||
| 6 | Eve | South | 95 | |||
| 7 | Finn | North | 60 |
À vous : En F3, listez les noms (colonne A seulement) des commerciaux de la région tapée en F1. S'il n'y en a aucun, affichez None.
Erreurs fréquentes avec FILTRE
- Des plages de hauteurs différentes.
=FILTRE(A2:C7;B2:B6="North")teste 5 lignes pour un tableau de 6, et Excel renvoie #VALEUR!. Faites commencer et finirincludesur les mêmes lignes quearray. - Des zéros là où la source est vide. FILTRE renvoie 0 pour une cellule vide de
array. Remplacez les vides par un texte vide avant de filtrer :=FILTRE(SI(A2:C7="";"";A2:C7);B2:B7="North"). - Des colonnes entières.
=FILTRE(A:C;B:B="North")fonctionne, mais si la formule elle-même se trouve dans les colonnes A à C, elle fait référence à elle-même. Placez le résultat à côté du tableau, ou utilisez une plage fixe comme A2:C1000. - Des guillemets autour des nombres.
C2:C7>"100"compare des nombres à du texte et ne garde rien. ÉcrivezC2:C7>100. - Attendre le comportement du bouton Filtrer. FILTRE copie les lignes trouvées à un autre endroit et laisse le tableau tel quel. Pour masquer des lignes dans le tableau lui-même, utilisez Données > Filtrer.
Questions fréquentes
Comment utiliser la fonction FILTRE dans Excel ?
Donnez-lui les lignes à renvoyer et une condition pour chaque ligne : =FILTRE(A2:C7;B2:B7="North") renvoie chaque ligne de A2:C7 où la colonne B vaut North. Tapez-la dans une seule cellule ; les lignes trouvées se répandent dans les cellules en dessous et à droite.
Comment utiliser FILTRE avec plusieurs critères dans Excel ?
Multipliez les conditions pour ET et additionnez-les pour OU : =FILTRE(A2:C7;(B2:B7="North")*(C2:C7>100)) garde les lignes qui remplissent les deux, =FILTRE(A2:C7;(B2:B7="North")+(B2:B7="East")) garde celles qui remplissent l'une ou l'autre. Chaque condition a besoin de ses propres parenthèses.
Pourquoi FILTRE renvoie-t-elle #CALC! ?
Parce qu'aucune ligne ne correspond et que vous n'avez pas donné de troisième argument. Ajoutez-en un pour afficher autre chose : =FILTRE(A2:C7;B2:B7="West";"No match") affiche No match au lieu de l'erreur.
Quelles versions d'Excel ont la fonction FILTRE ?
Excel 2021, Excel 2024 et Microsoft 365, ainsi qu'Excel pour le web. Excel 2019 et les versions plus anciennes ne l'ont pas et affichent #NOM? ; il faut y utiliser le bouton Filtrer de l'onglet Données ou une formule matricielle avec INDEX et PETITE.VALEUR.
Comment ne renvoyer que certaines colonnes avec FILTRE ?
Filtrez seulement les colonnes dont vous avez besoin, ou entourez le résultat de CHOISIRCOLS (Microsoft 365 ou Excel 2024) : =CHOISIRCOLS(FILTRE(A2:C7;B2:B7="North");1;3) renvoie la première et la troisième colonne des lignes trouvées.