L'essentiel —
INDEX/MATCHest 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 queVLOOKUPne 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 deMATCH— utilisez0pour la correspondance exacte. Fonctionne dans toutes les versions ; dans Excel 365,XLOOKUPré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 où, 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
