Menu

FILTRE Excel : plusieurs critères, ET et OU (FILTER)

=FILTRE(A2:C7;B2:B7="North") renvoie chaque ligne de A2:C7 dont la région est North, et le résultat se met à jour quand les données changent. Plusieurs critères avec * et +, si_vide, #CALC! et tri du résultat.

Chaque feuille de cette page est interactive : modifiez un nombre ou une formule et elle se recalcule.

=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").

Les lignes de la région North
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120AnnNorth120
3BenSouth80CaraNorth200
4CaraNorth200FinnNorth60
5DanEast150
6EveSouth95
7FinnNorth60
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =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 de array, comme B2:B7="North". Elle doit avoir exactement autant de lignes que array. (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 :

Région choisie dans une liste déroulante
E3
ABCDEFG
1NameRegionSalesRegionNorth
2AnnNorth120
3BenSouth80AnnNorth120
4CaraNorth200CaraNorth200
5DanEast150FinnNorth60
6EveSouth95
7FinnNorth60
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =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 :

North et ventes supérieures à 100
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120AnnNorth120
3BenSouth80CaraNorth200
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =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 :

North ou East
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120AnnNorth120
3BenSouth80CaraNorth200
4CaraNorth200DanEast150
5DanEast150FinnNorth60
6EveSouth95
7FinnNorth60
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =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 :

Aucune ligne West
E2
ABCDEF
1NameRegionSalesNo if_emptyWith if_empty
2AnnNorth120#CALC!No match
3BenSouth80
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
#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.

Les lignes North, ventes les plus fortes d'abord
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120CaraNorth200
3BenSouth80AnnNorth120
4CaraNorth200FinnNorth60
5DanEast150
6EveSouth95
7FinnNorth60
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =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 :

Les noms qui contiennent "an"
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120AnnNorth120
3BenSouth80DanEast150
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =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

À vous
E2
ABCDEFG
1NameRegionSalesNameRegionSales
2AnnNorth120
3BenSouth80
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.

À 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

À vous
F3
ABCDEF
1NameRegionSalesRegionNorth
2AnnNorth120
3BenSouth80Names
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.

À 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 finir include sur les mêmes lignes que array.
  • 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. Écrivez C2: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.

Illustration des langages de programmation de Coddy

Apprendre à coder avec Coddy

COMMENCER