Menu

Recherche multicritère Excel : RECHERCHEX et INDEX EQUIV

=RECHERCHEX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7) renvoie la valeur de la ligne où la colonne A correspond à E2 et la colonne B à F2. La version INDEX EQUIV, une colonne d'aide pour RECHERCHEV, et FILTRE pour toutes les correspondances.

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

=RECHERCHEX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7) renvoie le prix de la ligne où le produit est E2 et la taille est F2. Chaque comparaison vérifie toutes les lignes, leur produit ne vaut 1 que là où les deux sont vraies, et RECHERCHEX cherche ce 1. Elle demande Excel 2021 ou Microsoft 365 ; la version INDEX EQUIV ci-dessous fonctionne dans toutes les versions. RECHERCHEX s'appelle XLOOKUP dans un Excel anglais, le nom que montre le tableau ; vous pouvez aussi y taper les formules en français, avec des points-virgules.

Prix selon le produit et la taille
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50TeaLarge$3.00
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =RECHERCHEX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7)

Tea et Large se rencontrent à la ligne 5, donc G2 renvoie $3.00. Choisissez Juice et Small : $3.00 à nouveau, depuis une autre ligne. Ajoutez un quatrième argument pour le cas où aucune ligne ne correspond aux deux : =RECHERCHEX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7;"No such item").

Comment fonctionnent les conditions multipliées

A2:A7=E2 compare chaque produit à E2 et renvoie six valeurs VRAI ou FAUX. Multiplier deux listes de ce type transforme VRAI en 1 et FAUX en 0, et une ligne ne vaut 1 que si elle vaut 1 dans les deux. La colonne D montre cette liste, propagée à partir d'une seule formule.

La matrice que parcourt RECHERCHEX
D2
ABCDEFG
1ProductSizePriceBoth matchProductSize
2CoffeeSmall$2.500TeaLarge
3CoffeeLarge$3.500
4TeaSmall$2.000
5TeaLarge$3.001
6JuiceSmall$3.000
7JuiceLarge$4.000
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =(A2:A7=F2)*(B2:B7=G2)

Seule D5 vaut 1. Modifiez F2 ou G2 et le 1 se déplace. Chaque critère supplémentaire est un *(plage=valeur) de plus, et les conditions ne sont pas forcément des égalités : *(C2:C7<3) ajoute "prix inférieur à 3". Toutes les plages doivent couvrir les mêmes lignes (A2:A7, B2:B7, C2:C7) : si la plage de résultat n'a pas la même taille que les conditions, RECHERCHEX renvoie #VALEUR! (en anglais #VALUE!, le nom qu'affiche le tableau).

INDEX EQUIV avec plusieurs critères

Pour Excel 2019 et versions antérieures, EQUIV (MATCH en anglais) peut chercher le 1 dans la même matrice, et INDEX renvoie le prix à cette position.

Deux critères avec INDEX et EQUIV
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50CoffeeLarge$3.50
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =INDEX(C2:C7;EQUIV(1;(A2:A7=E2)*(B2:B7=F2);0))

Coffee et Large est la position 2 de la matrice, et INDEX renvoie $3.50. En français, la formule s'écrit =INDEX(C2:C7;EQUIV(1;(A2:A7=E2)*(B2:B7=F2);0)). Dans Excel 2019 et versions antérieures, c'est une formule matricielle : appuyez sur Ctrl+Maj+Entrée (Cmd+Maj+Entrée sur Mac) au lieu d'Entrée, et Excel l'affiche entre accolades. Un simple Entrée y renvoie généralement #N/A ou #VALEUR!. Dans Excel 365, Entrée suffit. La forme à un seul critère se trouve sur la page INDEX et EQUIV.

Assembler les critères en une seule clé

L'autre méthode consiste à transformer deux critères en un seul en les assemblant. RECHERCHEV a besoin des valeurs assemblées dans une colonne d'aide au début de la table (la page RECHERCHEV montre cette version). RECHERCHEX peut assembler les plages dans la formule, sans colonne d'aide.

Assembler produit et taille en une clé
G2
ABCDEFG
1ProductSizePriceProductSizePrice
2CoffeeSmall$2.50JuiceLarge$4.00
3CoffeeLarge$3.50
4TeaSmall$2.00
5TeaLarge$3.00
6JuiceSmall$3.00
7JuiceLarge$4.00
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =RECHERCHEX(E2&"|"&F2;A2:A7&"|"&B2:B7;C2:C7)

A2:A7&"|"&B2:B7 construit six clés comme Juice|Large, et RECHERCHEX trouve Juice|Large parmi elles : $4.00. Placez un séparateur entre les parties. Sans lui, "AB" et "C" donnent le même "ABC" que "A" et "BC", et la recherche peut renvoyer la mauvaise ligne.

Si la valeur voulue est un nombre et que chaque combinaison n'apparaît qu'une fois, SOMME.SI.ENS (SUMIFS en anglais) donne la même réponse sans aucune matrice : =SOMME.SI.ENS(C2:C7;A2:A7;E2;B2:B7;F2). Elle renvoie 0 au lieu d'une erreur quand rien ne correspond, ce qui peut masquer une faute de frappe.

Renvoyer toutes les correspondances avec FILTRE

RECHERCHEX et INDEX EQUIV renvoient la première ligne qui correspond. Quand plusieurs lignes correspondent et que vous les voulez toutes, utilisez FILTRE (FILTER en anglais) avec les mêmes conditions.

Toutes les commandes Phone de North
F2
ABCDEFG
1RegionProductQuarterSalesMatches
2NorthLaptopQ1120Q1210
3NorthPhoneQ1210Q2225
4SouthLaptopQ195Q3240
5NorthPhoneQ2225
6SouthPhoneQ2180
7NorthLaptopQ2135
8NorthPhoneQ3240
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(C2:D8;(A2:A8="North")*(B2:B8="Phone"))

Trois lignes sont North et Phone, donc F2 propage leurs trimestres et leurs ventes dans F2:G4. En français : =FILTRE(C2:D8;(A2:A8="North")*(B2:B8="Phone")). Remplacez A3 par South et la liste se réduit à deux lignes. Si aucune ligne ne correspond, FILTRE renvoie #CALC! ; un troisième argument comme "None" affiche un texte à la place. D'autres options se trouvent sur la page FILTRE.

Exercice : trois critères

Ventes par région, produit et trimestre
G4
ABCDEFG
1RegionProductQuarterSalesRegionSouth
2NorthLaptopQ1120ProductLaptop
3NorthLaptopQ2135QuarterQ2
4NorthPhoneQ1210Sales
5SouthLaptopQ195
6SouthPhoneQ2180
7SouthLaptopQ2110
8NorthPhoneQ2225
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.

À vous : Renvoyez en G4 les ventes de la région de G1, du produit de G2 et du trimestre de G3.

Questions fréquentes

Comment utiliser RECHERCHEX avec plusieurs critères ?

Multipliez une comparaison par critère et cherchez 1 : =RECHERCHEX(1;(A2:A7=E2)*(B2:B7=F2);C2:C7). Chaque comparaison donne VRAI ou FAUX pour chaque ligne, le produit ne vaut 1 que là où toutes sont VRAI, et RECHERCHEX renvoie la première de ces lignes.

Comment faire un INDEX EQUIV avec deux critères ?

Utilisez les mêmes conditions multipliées dans EQUIV : =INDEX(C2:C7;EQUIV(1;(A2:A7=E2)*(B2:B7=F2);0)). Dans Excel 2019 et versions antérieures, validez-la avec Ctrl+Maj+Entrée (Cmd+Maj+Entrée sur Mac).

RECHERCHEV peut-elle utiliser deux critères ?

Pas directement. Ajoutez au début de la table une colonne d'aide qui assemble les deux valeurs, comme =A2&"|"&B2, puis cherchez la valeur assemblée : =RECHERCHEV(E2&"|"&F2;table_aide;col;FAUX).

SOMME.SI.ENS peut-elle remplacer une recherche à deux critères ?

Oui, quand la valeur est un nombre et que chaque combinaison n'apparaît qu'une fois : =SOMME.SI.ENS(C2:C7;A2:A7;E2;B2:B7;F2). Elle renvoie 0 au lieu de #N/A quand aucune ligne ne correspond, et additionne les valeurs si une combinaison apparaît deux fois.

Comment faire une recherche avec des critères OU ?

Additionnez les conditions au lieu de les multiplier : (A2:A7="Tea")+(A2:A7="Juice") vaut 1 ou plus là où l'une des deux est vraie. Cherchez une valeur supérieure à 0, par exemple avec =RECHERCHEX(VRAI;((A2:A7="Tea")+(A2:A7="Juice"))>0;C2:C7).

Illustration des langages de programmation de Coddy

Apprendre à coder avec Coddy

COMMENCER