Le besoin : rapprocher deux tableaux
Dans la vie d’un service, les informations sont rarement dans un seul tableau. Les commandes indiquent une référence produit et une quantité ; le prix se trouve dans le catalogue. Plutôt que de recopier les prix à la main, on demande à Excel d’aller chercher dans le catalogue la ligne qui porte la même référence. C’est le rôle des fonctions de recherche.
La colonne qui fait le lien entre les deux tableaux s’appelle la clé (ici Ref). Elle doit être unique dans la table de référence : si P003 apparaît deux fois dans le catalogue, Excel renverra la première occurrence sans prévenir.
RECHERCHEX
RECHERCHEX (XLOOKUP) est disponible dans Microsoft 365, Excel 2021 et les versions ultérieures, ainsi que dans Excel pour le web. Sa syntaxe :
=RECHERCHEX(valeur_cherchée;plage_de_recherche;plage_de_résultat;[si_non_trouvé];[mode_correspondance])
Pour le prix de la commande de la ligne 2 :
=RECHERCHEX(B2;Produits!$A$2:$A$9;Produits!$D$2:$D$9)
Excel cherche la valeur de B2 dans la colonne des références et renvoie la valeur située sur la même ligne dans la colonne des prix. Les deux plages doivent avoir la même hauteur. Elles sont bloquées en absolu pour que la formule puisse être recopiée vers le bas sans que le catalogue « glisse ».
Le quatrième argument, facultatif, indique quoi afficher si la clé est absente (par défaut, l’erreur #N/A). Le cinquième règle le mode de correspondance : 0 exact (par défaut), -1 exact ou valeur immédiatement inférieure, 1 exact ou valeur immédiatement supérieure, 2 caractères génériques.
RECHERCHEV, l’ancêtre
Vous rencontrerez souvent RECHERCHEV (VLOOKUP) dans des classeurs existants :
=RECHERCHEV(B2;Produits!$A$2:$E$9;4;FAUX)
Elle cherche B2 dans la première colonne de la table et renvoie la 4ᵉ colonne. Deux pièges : oublier FAUX en dernier argument (la recherche devient approchée et peut renvoyer un prix faux sans erreur visible), et insérer une colonne dans la table, ce qui décale le numéro 4. RECHERCHEX n’a aucun de ces défauts.
INDEX et EQUIV
Le duo INDEX/EQUIV (INDEX/MATCH) fonctionne dans toutes les versions d’Excel. EQUIV renvoie la position d’une valeur dans une plage ; INDEX renvoie la valeur située à une position donnée :
=EQUIV("P007";Produits!$A$2:$A$9;0) -> 7
=INDEX(Produits!$B$2:$B$9;7) -> Caisson 3 tiroirs
=INDEX(Produits!$B$2:$B$9;EQUIV("P007";Produits!$A$2:$A$9;0))
Le 0 d’EQUIV impose une correspondance exacte : ne l’oubliez jamais. Comme les deux plages sont indépendantes, la colonne de résultat peut se trouver à gauche de la clé, ce que RECHERCHEV ne sait pas faire. INDEX accepte aussi une ligne et une colonne : avec deux EQUIV, on obtient une recherche à double entrée (une référence et un nom de colonne).
Recherche approchée : les grilles de seuils
Certaines tables ne contiennent pas toutes les valeurs possibles mais des seuils : une grille de commissions (0 € : 0 %, 2 000 € : 3 %, 4 000 € : 5 %, 6 000 € : 7 %). Pour un chiffre d’affaires de 4 400 €, on veut le taux du seuil 4 000, c’est-à-dire la valeur égale ou immédiatement inférieure :
=RECHERCHEX(B2;Grille!$A$2:$A$5;Grille!$B$2:$B$5;;-1)
Le quatrième argument est laissé vide (deux points-virgules consécutifs) et le mode -1 fait le reste. Un chiffre d’affaires exactement égal à un seuil (4 000) obtient bien le taux de ce seuil.
Exercices
Les solutions et les tests restent sur le serveur. Dans l'espace étudiant, ton code est exécuté et corrigé, et le tuteur donne des indices avant la solution.
Valoriser des commandes avec RECHERCHEX
Créez avec le Bloc-notes le fichier
C:\Formation\produits.csv, collez-y le contenu ci-dessous, enregistrez-le, puis ouvrez-le dans Excel par un double-clic. Les données occupent la plageA1:E9. Renommez la feuille enProduits. Si tout arrive dans la colonne A, utilisez Données > Convertir avec le séparateur point-virgule.Ref;Designation;Famille;PrixHT;Stock P001;Ecran 24 pouces;Informatique;149;12 P002;Clavier sans fil;Informatique;39;40 P003;Fauteuil;Mobilier;229;5 P004;Bureau droit;Mobilier;310;3 P005;Lampe LED;Eclairage;45;18 P006;Casque audio;Informatique;79;0 P007;Caisson 3 tiroirs;Mobilier;139;7 P008;Multiprise;Electricite;19;55Dans le même classeur, ajoutez une feuille nommée
Commandeset saisissez (ou collez puis convertissez) les données suivantes dans la plageA1:C5:NumCde;Ref;Quantite C101;P003;2 C102;P008;10 C103;P001;4 C104;P006;1Dans la feuille
Commandes:- En D1, saisissez
PrixHT; en D2, écrivez une RECHERCHEX qui renvoie le prix de la référence B2 depuis la feuilleProduits. Recopiez jusqu’en D5. - En E1, saisissez
Montant; en E2, calculez quantité x prix, puis recopiez. - En E6, calculez le total des montants.
- Les plages de la feuille Produits sont en références absolues
- D2 affiche 229 et D5 affiche 79
- E4 affiche 596
- E6 affiche 1323
- En D1, saisissez
INDEX/EQUIV dans les deux sens
Sur le classeur précédent, dans une nouvelle feuille
Recherches:- En A1, saisissez
P007. En B1, affichez la désignation de cette référence avec INDEX et EQUIV. - En A2, saisissez
Lampe LED. En B2, affichez sa référence (colonne située à gauche de la désignation). - En A3, saisissez
P004et en A4Stock. En B3, écrivez une formule INDEX à double entrée qui renvoie la valeur de la colonne nommée en A4 pour la référence en A3. - Remplacez A4 par
PrixHTet observez B3.
- Chaque formule utilise EQUIV avec 0 comme dernier argument
- B1 affiche Caisson 3 tiroirs
- B2 affiche P005
- B3 affiche 3, puis 310 quand A4 vaut PrixHT
- En A1, saisissez
Grille de commissions
Créez avec le Bloc-notes le fichier
C:\Formation\grille.csv, collez-y le contenu ci-dessous, enregistrez-le, puis ouvrez-le dans Excel par un double-clic. Les données occupent la plageA1:B5. Renommez la feuille enGrille. Si tout arrive dans la colonne A, utilisez Données > Convertir avec le séparateur point-virgule.Seuil;Taux 0;0% 2000;3% 4000;5% 6000;7%Dans le même classeur, ajoutez une feuille nommée
Commissionset saisissez (ou collez puis convertissez) les données suivantes dans la plageA1:B4:Commercial;CA Martin;4400 Bernard;3700 Petit;4000Dans la feuille
Commissions:- En C1, saisissez
Taux; en C2, écrivez une RECHERCHEX en mode-1qui renvoie le taux de la grille correspondant au CA. Recopiez jusqu’en C4 et formatez en pourcentage. - En D1, saisissez
Commission; en D2, calculez CA x taux et recopiez. - En D5, faites le total des commissions.
- C2 (Martin, 4400) affiche 5 %, C3 (Bernard, 3700) affiche 3 %
- C4 (Petit, 4000, exactement un seuil) affiche 5 %
- D2 = 220, D3 = 111, D4 = 200
- D5 affiche 531
- En C1, saisissez
RECHERCHEV sans FAUX
Que risque-t-on en écrivant
=RECHERCHEV(B2;Produits!$A$2:$E$9;4)sans quatrième argument ?- Rien, la recherche est exacte par défaut
- Une recherche approchée qui peut renvoyer un prix faux sans afficher d'erreur
- Une erreur #NOM?
- La formule cherche dans la 4ᵉ ligne
Quiz de fin de leçon
Quel argument de RECHERCHEX permet d’afficher un texte quand la clé est absente ?
- Le troisième
- Le quatrième (si_non_trouvé)
- Le sixième
Que renvoie EQUIV(“P003”;A2:A9;0) si P003 est en A4 ?
- 4
- 3
- P003
Pour une grille de seuils, quel mode de correspondance de RECHERCHEX utiliser ?
- 0
- -1
- 2
La suite du cours
- SI imbriqués, SI.CONDITIONS, ET et OU20 min
- Sommes et comptages conditionnels : SOMME.SI.ENS, NB.SI.ENS20 min
- Fonctions de texte et de dates20 min
- Gérer les erreurs : SIERREUR et SI.NON.DISP15 min