Les fonctions de recherche classiques (RECHERCHEV, EQUIV, EQUIVX, RECHERCHEX...) travaille/recherche sur des matrices vecteurs (1 dimension), c'est à dire que la recherche réelle se fait sur une colonne ou une ligne mais pas dans une matrice avec plusieurs lignes et colonnes (2 dimensions).
Par exemple dans la fonction RECHERCHEV, bien que l'on lui fournisse une plage de plusieurs lignes et colonnes, la recherche de la valeur cherchée (la clé) ne se fait que sur la 1ère colonne, les autres colonnes servant à fournir la valeur résultat.
Je vous propose quelques formules, que je trouve sympa, permettant de dépasser cette contrainte.
Tableaux utilisés pour l'exemple

Objectif
Chercher une valeur dans le tableau 1 (recherche) et ramener la valeur correspondante du tableau 2 (Valeurs résultat)
Solution 1
On récupère seulement la 1ère valeur correspondante à la recherche.
On va utiliser la puissance des nouvelles formules d'Excel.
Le principe :
- On va utiliser les formules de recherche d'Excel et pour cela on transforme la plage du tableau 1 en un tableau à 1 dimension (DANSCOL).
- À partir de la position de la valeur recherché (EQUIV), on en déduit la position Lignes/Colonnes.
=LET(v;D9;md;B2:E6;ma;H2:K6;
nbl;LIGNES(md);
mc;DANSCOL(md;;VRAI);
pos;EQUIV(v;mc;0)-1;
SIERREUR(INDEX(ma;MOD(pos;nbl)+1;ENT(pos/nbl)+1);"Non trouvé"))- v : Valeur cherchée.
- md : Matrice de départ (Tableau1).
- ma : Matrice d'arrivée (Tableau2).
- nbl : Nombre de ligne du Tableau1/2.
- mc : Matrice une colonne correspondante à Tableau1.
- Pos : Position dans mc de la valeur cherché (v).
- Résultat : Extraction de la valeur de Tableau2.
Solution 2
Version 1
On récupère toutes les valeurs correspondantes à la recherche dans une plage de cellules.
=DANSCOL(SI(D10=B2:E6;H2:K6;NA());3)- La fonction SI génère une matrice ou les valeurs de Tableau2 ne correspondant pas à la valeur cherchée sont remplacées par la valeur d'erreur NA.
- La fonction DANSCOL (ou DANSLIGNE) permet de récupérer une matrice résultat où les valeurs d'erreur (ici NA) ont été retirées via l'argument ignore (3).
Remarque : Pour ne récupérer que la 1ère valeur on pourrait utiliser la fonction INDEX( ... ; 1).
Version 2
On récupère toutes les valeurs correspondantes à la recherche dans une seule cellule.
=JOINDRE.TEXTE("-";;SI(D10=B2:E6;H2:K6;""))- La fonction SI génère une matrice ou les valeurs de Tableau2 ne correspondant pas à la valeur cherchée sont remplacées par une chaîne vide.
- La fonction JOINDRE.TEXTE permet de concaténer les résultats en une seule chaîne.
D'autres articles traitant de la recherche de valeurs :
Les fonctions de recherche de valeur
Intéressante formule de rechercher (catégorisation de dépenses)
Merci pour votre attention bienveillante.
