INDEX-MATCH vs RECHERCHEV
Le grand débat : INDEX-MATCH vs. RECHERCHEV
RECHERCHEV est la fonction de recherche la plus célèbre d'Excel, et INDEX-MATCH est son concurrent le plus puissant et le plus flexible. Ce débat fait rage dans les forums Excel depuis plus de dix ans, et pour une bonne raison : choisir la bonne méthode de recherche affecte directement la fiabilité, la flexibilité et les performances de votre feuille de calcul.
Spoiler : si vous avez Excel 2021 ou 365, XLOOKUP rend les deux méthodes quasiment obsolètes. Mais des millions d'utilisateurs restent sur des versions plus anciennes, et les principes que vous apprenez avec INDEX-MATCH s'appliquent à toutes les fonctions Excel. Même les utilisateurs de XLOOKUP gagnent à comprendre le mécanisme sous-jacent.
Pas à pas : Convertir un RECHERCHEV en INDEX-MATCH
Scénario : vous avez une table de produits avec l'ID produit en colonne D et le Prix en colonne A. RECHERCHEV échoue parce que la colonne de recherche est à DROITE de la colonne de retour. Vous avez besoin d'INDEX-MATCH.
Étape 1 — Comprendre l'anatomie d'INDEX-MATCH
- La structure de la formule :
=INDEX(plage_retour, EQUIV(valeur_recherche, plage_recherche, 0)) - INDEX(plage, num_ligne) — renvoie la valeur d'une plage à une position de ligne spécifique.
- EQUIV(valeur, plage, 0) — trouve la position d'une valeur dans une plage. Le 0 signifie « correspondance exacte ».
- Ensemble : EQUIV trouve le numéro de ligne, INDEX renvoie la valeur à cette ligne dans la colonne de retour.
Étape 2 — Écrire la formule morceau par morceau
- Dans une cellule vide, commencez avec EQUIV seul pour vérifier qu'il fonctionne :
=EQUIV(A2, D:D, 0). Cela doit renvoyer le numéro de ligne où l'ID produit en A2 se trouve dans la colonne D. - Maintenant, enveloppez-le avec INDEX pour obtenir le prix :
=INDEX(A:A, EQUIV(A2, D:D, 0)). Cela renvoie le prix de la colonne A à la ligne trouvée par EQUIV. - Pour une utilisation en production, verrouillez les plages :
=INDEX($A$2:$A$1000, EQUIV(A2, $D$2:$D$1000, 0)). Ne laissez jamais des plages de colonnes entières (A:A) sauf si vous aimez les calculs lents.
Étape 3 — Gérer les erreurs #N/A avec élégance
- Enveloppez la formule entière avec SIERREUR :
=SIERREUR(INDEX($A$2:$A$1000, EQUIV(A2, $D$2:$D$1000, 0)), "Non trouvé"). - Désormais, quand un ID produit n'existe pas dans la table de recherche, vous voyez « Non trouvé » au lieu d'une erreur disgracieuse.
- Pour les tableaux de bord, utilisez "" (chaîne vide) au lieu de "Non trouvé" pour un aspect plus propre.
Quand RECHERCHEV l'emporte
- Simplicité et lisibilité. Une formule RECHERCHEV est plus facile à lire et à enseigner que la combinaison INDEX-MATCH. Pour les recherches simples où la colonne de recherche est à gauche, RECHERCHEV est plus rapide à écrire et plus facile à comprendre pour les collègues.
- Recherches ponctuelles rapides. Quand vous avez besoin d'une recherche unique et que les données sont déjà organisées avec la colonne de recherche en premier, RECHERCHEV est le chemin de moindre résistance. Tapez-la et passez à autre chose.
- Scénarios de correspondance approximative. Pour les tranches numériques (tranches d'imposition, barèmes de commission, échelles de notation), RECHERCHEV avec VRAI comme quatrième argument est simple et bien documenté.
Quand INDEX-MATCH l'emporte
- La colonne de recherche est à DROITE de la colonne de retour. RECHERCHEV ne recherche que de gauche à droite. INDEX-MATCH ne se soucie pas de l'ordre des colonnes.
- Insertion ou suppression de colonnes. Le col_index_num de RECHERCHEV est codé en dur. Insérez une colonne et tous les RECHERCHEV référençant des colonnes à droite se cassent. INDEX-MATCH utilise des références de colonnes réelles et s'ajuste correctement.
- Performance sur les grands jeux de données. INDEX-MATCH peut être plus rapide parce que vous pouvez limiter la recherche à une seule colonne plutôt que de parcourir la totalité du tableau. La différence devient perceptible au-delà de 50 000 lignes.
- Recherches bidirectionnelles (matricielles). INDEX-MATCH-MATCH est une capacité native :
=INDEX(plage_donnees, EQUIV(valeur_ligne, entetes_lignes, 0), EQUIV(valeur_colonne, entetes_colonnes, 0)).
Erreurs courantes
- Oublier que RECHERCHEV ne peut pas regarder à gauche. C'est la frustration n°1. Si vous vous surprenez à réorganiser les colonnes juste pour faire fonctionner RECHERCHEV, vous menez le mauvais combat — passez à INDEX-MATCH.
- RECHERCHEV utilisant accidentellement la correspondance approximative. Le quatrième argument est VRAI par défaut s'il est omis. Oublier d'ajouter FAUX produit des résultats « assez proches » qui semblent corrects mais sont subtilement faux. Écrivez toujours FAUX explicitement.
- Ne pas verrouiller les plages EQUIV dans INDEX-MATCH.
=INDEX(D:D, EQUIV(A2, B:B, 0))est fragile. Verrouillez les plages :=INDEX($D$2:$D$100, EQUIV(A2, $B$2:$B$100, 0)). - Supposer qu'INDEX-MATCH est toujours plus rapide. Sur de petits jeux de données (moins de 1 000 lignes), la différence de performance est négligeable. La simplicité l'emporte souvent sur un gain de vitesse marginal.
Astuces avancées
- INDEX-MATCH-MATCH pour la sélection dynamique de colonnes : Créez une liste déroulante pour le nom de colonne, puis
=INDEX(donnees, EQUIV(val_ligne, col_ligne, 0), EQUIV(liste_deroulante, entetes, 0)). Une formule devient un outil de recherche en libre-service. - INDEX-MATCH pour la dernière occurrence :
=INDEX(plage_retour, EQUIV(2, 1/(plage_recherche=valeur), 1))renvoie la dernière correspondance, pas la première. Utile pour trouver la transaction la plus récente d'un client. - INDEX-MATCH matriciel pour critères multiples :
=INDEX(plage_retour, EQUIV(1, (plage1=A2)*(plage2=B2), 0))saisi avec Ctrl+Maj+Entrée. Renvoie la première ligne correspondant à plusieurs conditions sans colonnes auxiliaires.