🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel INDEX & MATCH — La recherche à deux fonctions qui surpasse VLOOKUP

|

Excel INDEX & MATCH — La recherche à deux fonctions qui surpasse VLOOKUP

L'essentielINDEX/MATCH est une recherche bâtie à partir de deux fonctions qui font chacune un seul travail. MATCH(value, lookup_column, 0) renvoie la position d'une valeur dans une colonne (quelle ligne). INDEX(return_column, position) renvoie la valeur à cette position. Imbriquez-les — =INDEX(Return, MATCH(key, Lookup, 0)) — et vous obtenez une recherche que VLOOKUP ne sait pas égaler : elle regarde à gauche ou à droite, survit aux colonnes insérées et s'étend à une vraie recherche ligne-et-colonne. Le seul piège est le troisième argument de MATCH — utilisez 0 pour la correspondance exacte. Fonctionne dans toutes les versions ; dans Excel 365, XLOOKUP réunit les deux en une seule.

=INDEX(C2:C500, MATCH(F2, A2:A500, 0))     ' trouve F2 dans A, renvoie le C correspondant
=INDEX(Price, MATCH("APX-100", ID, 0))     ' les plages nommées se lisent comme une phrase

Si les vétérans du tableur tendent la main vers INDEX/MATCH, ce n'est pas par nostalgie — c'est qu'il sépare deux choses que VLOOKUP soude ensemble : trouver une ligne et récupérer une valeur. MATCH fait le repérage. INDEX fait la récupération. Comme aucun des deux ne se soucie de l'emplacement de la colonne de l'autre, toute la géométrie rigide de VLOOKUP — valeur-à-gauche, compter-les-colonnes-vers-la-droite — s'évapore purement et simplement.

Remarque : dans une interface Excel en français, ces fonctions s'appellent INDEX (INDEX), EQUIV (MATCH), RECHERCHEV (VLOOKUP), RECHERCHEX (XLOOKUP), SIERREUR (IFERROR) et FILTRE (FILTER). Les codes d'erreur s'affichent #N/A, #REF!, #NOM?, #VALEUR!, #DIV/0!. Les formules ci-dessous utilisent les noms anglais — le comportement est identique.

Ce que vous allez apprendre

  • Le modèle mental : MATCH trouve , INDEX récupère quoi
  • Pourquoi le découplage vous permet de regarder à gauche, pas seulement à droite
  • Pourquoi INDEX/MATCH survit aux colonnes insérées là où VLOOKUP casse en silence
  • Le piège de match_type — la même leçon « utilisez 0 » que le quatrième argument de VLOOKUP
  • Le geste que rien d'autre ne fait proprement : une recherche bidirectionnelle (ligne × colonne)
  • Quand XLOOKUP le remplace — et quand INDEX/MATCH gagne encore

Le modèle mental : MATCH trouve où, INDEX récupère quoi

Exécutez chaque moitié séparément et la division du travail saute aux yeux.

=MATCH("APX-100", A2:A500, 0)    ' -> 37   (APX-100 est le 37ᵉ élément de la colonne A)
=INDEX(C2:C500, 37)              ' -> la valeur dans la 37ᵉ cellule de la colonne C

MATCH recherche dans une seule colonne et rend un nombre : la position de votre valeur. INDEX ignore complètement la recherche — donnez-lui une plage et une position, et il renvoie la valeur qui s'y trouve. Aucun des deux ne connaît l'autre. Vous les boulonnez ensemble en injectant la position de MATCH directement dans INDEX :

=INDEX(C2:C500, MATCH("APX-100", A2:A500, 0))
'       ^récupérer depuis ici      ^trouver la ligne ici

C'est toute la technique. Et remarquez ce qui n'y figure pas : aucun comptage de colonnes, aucune exigence que les deux plages soient côte à côte ou dans un ordre particulier.

Le découplage vous permet de regarder à gauche

Parce que la plage de recherche et la plage de retour sont des arguments indépendants, leur ordre de gauche à droite est sans importance. Vous mettez l'ID en colonne D et le nom en colonne A ? MATCH recherche D, INDEX récupère depuis A, et ça marche tout simplement :

' A = Nom, D = ID.  Vous avez l'ID ; vous voulez le Nom à sa GAUCHE.
=INDEX(A2:A500, MATCH(F2, D2:D500, 0))    ' sans effort — VLOOKUP en est incapable

C'est l'avantage phare. VLOOKUP ne peut renvoyer que des colonnes situées à droite de la colonne de recherche ; INDEX/MATCH n'a pas cette règle, car il n'existe pas de « tableau » unique doté d'une première colonne fixe — juste deux plages que vous nommez explicitement.

Il survit aux colonnes insérées

Le col_index_num de VLOOKUP est un entier codé en dur qui pointe sur la mauvaise colonne à l'instant même où quelqu'un en insère une. INDEX/MATCH ne compte jamais de colonnes — il pointe sur des plages nommées ou des références de colonne entière qu'Excel met à jour automatiquement :

=INDEX(C2:C500, MATCH(F2, A2:A500, 0))
' Insérer une colonne entre A et C ? Excel réécrit C2:C500 -> D2:D500 pour vous.

Insérez, supprimez ou déplacez une colonne, et les références se décalent avec elle. Voilà pourquoi INDEX/MATCH est le choix le plus sûr pour un classeur que d'autres personnes vont modifier — la formule décrit quelles données elle veut, pas combien de colonnes plus loin elles se trouvent aujourd'hui.

Le piège de match_type (la même leçon que VLOOKUP)

Le troisième argument de MATCH est exactement le même piège que le quatrième de VLOOKUP. Il vaut par défaut 1 (approximatif, suppose un tri croissant). Vous voulez presque toujours 0 :

=MATCH(F2, A2:A500)       ' DANGER — vaut 1 par défaut, approximatif, exige des données triées
=MATCH(F2, A2:A500, 1)    ' approximatif : plus grande valeur <= F2 (tri croissant requis)
=MATCH(F2, A2:A500, 0)    ' CORRECT pour les recherches exactes — la ligne égale à F2
=MATCH(F2, A2:A500, -1)   ' approximatif : plus petite valeur >= F2 (tri décroissant requis)

Tapez 0 pour la correspondance exacte que vous voulez presque à coup sûr. Le MATCH approximatif a le même créneau légitime que le VLOOKUP approximatif — les recherches par tranches sur une colonne triée (trouver dans quelle tranche une valeur tombe) — et la même défaillance silencieuse à mauvaise réponse partout ailleurs.

Le geste que rien d'autre ne fait proprement : une recherche bidirectionnelle

C'est ici qu'INDEX/MATCH cesse d'être « VLOOKUP en mieux » et devient un outil à part entière. INDEX accepte à la fois un numéro de ligne et un numéro de colonne. Alimentez chacun depuis son propre MATCH et vous recherchez une valeur à l'intersection d'une clé de ligne et d'une clé de colonne — une recherche contre une matrice :

' Grille : les mois en colonne A, les régions sur la ligne 1, les nombres au milieu.
=INDEX(B2:M13, MATCH(F2, A2:A13, 0), MATCH(G2, B1:M1, 0))
'              ^quelle ligne (mois)      ^quelle colonne (région)

Un MATCH localise la ligne, l'autre localise la colonne, et INDEX renvoie la cellule où elles se croisent. VLOOKUP a besoin d'une colonne d'aide maladroite pour cela ; XLOOKUP doit être imbriqué à l'intérieur d'un autre XLOOKUP. INDEX avec deux MATCH se lit en une seule ligne — c'est encore la recherche bidirectionnelle la plus nette d'Excel.

Envelopper les erreurs — au plus juste

Un MATCH qui ne trouve rien renvoie #N/A, qui se propage à travers INDEX. Gérez-le avec la même discipline : corrigez d'abord la cause (espaces, incohérence texte-vs-nombre), puis n'enveloppez qu'une fois la formule correcte.

=IFERROR(INDEX(C2:C500, MATCH(F2, A2:A500, 0)), "Introuvable")

Préférez ici IFERROR à un enveloppement généralisé qui avalerait aussi une référence réellement défectueuse. Un #N/A renvoyé par MATCH est une information — il vous dit que la clé n'est pas là.

Le choix éclairé : INDEX/MATCH, VLOOKUP ou XLOOKUP ?

  • XLOOKUP — si vous êtes sur Excel 365, c'est le choix par défaut pour une recherche à valeur unique : il regarde dans les deux sens, accepte une valeur « introuvable » intégrée, et se lit plus simplement qu'un INDEX/MATCH imbriqué.
  • INDEX/MATCH — reste le vainqueur pour les recherches bidirectionnelles (ligne × colonne), et le choix le plus robuste dans les versions plus anciennes sans XLOOKUP où il vous faut des recherches à gauche et des références à l'épreuve des insertions.
  • VLOOKUP — convient pour le cas simple correspondance-exacte-retour-à-droite, mais c'est celui qui casse quand les colonnes bougent.

Le savoir-faire, c'est de lire la forme du problème : une valeur ou une intersection ? Excel moderne ou un vieux classeur partagé ? Cela vous dit lequel des trois vous tenez entre les mains.

Comment ExcelMaster aide

La partie la plus difficile d'INDEX/MATCH, pour la plupart des gens, c'est l'imbrication — se rappeler quelle plage MATCH recherche, laquelle INDEX renvoie, et où vont les deux MATCH dans une recherche bidirectionnelle. ExcelMaster écrit tout le motif à partir d'une simple description (« tire la région de chaque commande depuis la feuille clients, en faisant correspondre sur l'ID client »), verrouille la correspondance exacte, et choisit la bonne structure — un seul XLOOKUP quand c'est plus propre, un INDEX à deux MATCH quand vous faites réellement une recherche en grille — pour que vous n'assembliez pas les parenthèses à la main.

Questions fréquentes

Qu'est-ce qu'INDEX MATCH et comment ça fonctionne ?

C'est une recherche faite de deux fonctions. MATCH(value, lookup_range, 0) renvoie la position d'une valeur dans une colonne ; INDEX(return_range, position) renvoie la valeur à cette position. Combinées en =INDEX(return_range, MATCH(value, lookup_range, 0)), MATCH trouve la ligne et INDEX récupère le résultat depuis n'importe quelle colonne de votre choix.

Pourquoi utiliser INDEX MATCH plutôt que VLOOKUP ?

Trois raisons : il peut regarder à gauche (renvoyer une colonne avant la colonne de recherche), il survit aux colonnes insérées ou déplacées parce qu'il ne code pas de numéro de colonne en dur, et il s'étend à une vraie recherche bidirectionnelle (ligne × colonne). VLOOKUP ne peut renvoyer que des colonnes à droite et casse quand les colonnes du tableau changent.

Comment faire une recherche bidirectionnelle avec INDEX et MATCH ?

Utilisez deux fonctions MATCH à l'intérieur d'INDEX, une pour la ligne et une pour la colonne : =INDEX(data, MATCH(row_key, row_headers, 0), MATCH(col_key, col_headers, 0)). Le premier MATCH trouve quelle ligne, le second trouve quelle colonne, et INDEX renvoie la valeur à leur intersection.

Que signifie le 0 dans MATCH ?

0 est le match_type pour une correspondance exacte — la position de la valeur qui est égale à votre valeur recherchée. 1 (la valeur par défaut) et -1 font une correspondance approximative sur des données triées. Utilisez 0 pour les recherches normales ; l'omettre revient à 1 et peut renvoyer en silence la mauvaise ligne sur des données non triées.

INDEX MATCH vaut-il encore la peine d'être appris si j'ai XLOOKUP ?

Oui. XLOOKUP remplace INDEX/MATCH pour les recherches simples à valeur unique, mais INDEX/MATCH reste la façon la plus nette de faire une recherche bidirectionnelle (ligne × colonne), et il est indispensable dans les versions plus anciennes d'Excel qui n'ont pas XLOOKUP.

Testé dans

Testé dans : Excel 365 (Windows 11) — dernière vérification le 05/07/2026.

Guides associés : Excel VLOOKUP · Excel HLOOKUP & LOOKUP · XLOOKUP (2025) · Excel IFERROR · Excel FILTER