Qu'est-ce que la fonction INDEX ?
INDEX te sert dès que RECHERCHEV te bloque parce que ta colonne de résultat se trouve à gauche de la colonne de recherche, ou que tu dois chercher en remontant, en croisant deux critères, ou dans un tableau à deux dimensions. Combinée à EQUIV, elle devient une recherche universelle qui va chercher une valeur dans n'importe quelle direction, sans les limites de RECHERCHEV.
En pratique, c'est la combinaison INDEX-EQUIV qui fait la différence dans les fichiers sérieux : retrouver le salaire d'un employé à partir de son email, récupérer les ventes d'un produit pour un mois précis dans un tableau croisé, ou contourner les limitations de RECHERCHEV quand la colonne de résultat est à gauche de la colonne de recherche.
Syntaxe
=INDEX(matrice; no_ligne; [no_colonne])Clique sur un argument pour aller à son explication.
Si tu passes 0 comme no_ligne, INDEX retourne la colonne entière ; si tu passes 0 comme no_colonne, elle retourne la ligne entière. C'est utile dans les formules matricielles pour opérer sur toute une ligne ou colonne.

Comprendre chaque paramètre de la fonction INDEX
Tu donnes d'abord la plage où chercher, puis le numéro de ligne, et enfin celui de la colonne. Ces numéros comptent à partir du coin de ta plage : la première ligne de A2:D4 est la ligne 1, pas la ligne 2 de la feuille. Seul [no_colonne] est facultatif, et tu peux l'oublier quand ta plage tient sur une seule colonne, comme =INDEX(A1:A10; 3).
matrice
: la plage de cellules dans laquelle INDEX va chercherÇa peut être une plage comme A1:D10, un tableau nommé, ou même le résultat d'une autre fonction. Si ta plage ne contient qu'une seule ligne ou colonne, tu peux omettre le paramètre correspondant.
Tu peux aussi passer plusieurs plages entre parenthèses et utiliser un 4e argument pour choisir la zone : =INDEX((A1:B10; D1:E10); 3; 2; 2) retourne la valeur en ligne 3, colonne 2 de la 2e zone (D1:E10).
no_ligne
: le numéro de la ligne dans la matriceLa première ligne de ta plage est la ligne 1 (pas le numéro de ligne de la feuille). Si tu mets 0, INDEX retourne la colonne entière, ce qui est utile dans les formules matricielles.
Ce paramètre est souvent remplacé par une formule EQUIV qui calcule automatiquement la bonne position à partir d'une valeur recherchée.
[no_colonne]
: le numéro de la colonne dans la matrice(facultatif)La première colonne de ta plage est la colonne 1. Si tu l'omets pour une plage d'une seule colonne, INDEX prend la 1re colonne. Si tu mets 0, INDEX retourne la ligne entière.
Comme pour no_ligne, ce paramètre peut être remplacé par EQUIV pour créer une recherche bidimensionnelle : INDEX cherche à l'intersection de la ligne trouvée par EQUIV et de la colonne trouvée par un second EQUIV.

Exemples pratiques pas à pas
Comment faire une fonction INDEX simple
Un client hésite entre deux formules d'abonnement et te demande le tarif Pro d'une licence, tout de suite au téléphone. Ta grille tient dans un tableau avec les licences en lignes et les niveaux d'offre (Basic, Pro, Enterprise) en colonnes, et tu connais déjà la position exacte de la case qui t'intéresse. Plutôt que de balayer la grille des yeux, tu laisses la fonction INDEX aller chercher la valeur à l'intersection de la ligne et de la colonne voulues.
- 1Dans une cellule, écris
=INDEX(. - 2En 1er argument : sélectionne la zone de tarifs dans laquelle chercher,
A2:D19. Les deux numéros qui suivent se comptent à partir du coin supérieur gauche de cette zone, et non d'après les lignes et les colonnes de la feuille. - 3En 2ᵉ argument : saisis le numéro de la ligne à atteindre,
2. La première ligne de la zone porte le numéro 1, quel que soit son rang dans la feuille. Le2désigne donc la deuxième ligne de la zone, celle de la Licence B. - 4En 3ᵉ argument : saisis le numéro de la colonne à lire,
3. La colonne A ouvre la zone et compte donc pour 1. La troisième colonne est ainsi la colonne C, celle du tarif Pro. - 5Ferme la parenthèse et appuie sur Entrée.
=INDEX(A2:D19; 2; 3)A2:D19 (la Licence B), puis file jusqu'à la 3e colonne (Tarif Pro) et renvoie la valeur à cette intersection, soit 299 €. Le piège à retenir : la ligne et la colonne se comptent à l'intérieur de la plage, pas d'après les numéros de lignes et les lettres de colonnes d'Excel.Comment chercher vers la gauche avec les fonctions INDEX et EQUIV
On te réclame le code interne de Paul Martin et tu n'as sous la main que son nom, alors que la colonne des codes est rangée à gauche de celle des noms. La fonction RECHERCHEV bute sur ce cas de figure : elle ne renvoie jamais une colonne située à gauche de sa colonne de recherche. Le duo formé par les fonctions INDEX et EQUIV ignore cette contrainte et retrouve le code dans n'importe quel sens.
- 1Dans une cellule, écris
=INDEX(. - 2En 1er argument : sélectionne la colonne qui contient la réponse cherchée,
A2:A4. Ce sont les codes internes, et la fonction INDEX ne ramènera rien d'autre que l'un d'eux. Cette colonne est pourtant rangée à gauche des noms, une position qui ne gêne en rien la fonction INDEX. - 3En 2ᵉ argument : écris la recherche qui trouve la position et referme-la,
EQUIV("Paul Martin"; B2:B4; 0). La fonction EQUIV parcourt la colonne des noms et renvoie2, le rang de Paul Martin. Son0final impose une correspondance exacte du nom. - 4Ferme la parenthèse de la fonction INDEX et appuie sur Entrée. Celle de la fonction EQUIV a déjà été refermée à l'étape précédente.
=INDEX(A2:A4; EQUIV("Paul Martin"; B2:B4; 0))Comment croiser deux critères avec les fonctions INDEX et EQUIV
Ton tableau de ventes croise les produits en lignes et les mois en colonnes, et ton responsable veut le chiffre du Produit B pour Mars avant la réunion. Retrouver cette case à la main devient vite risqué dès que les lignes ou les colonnes sont réordonnées. La fonction INDEX, épaulée par deux EQUIV, va chercher directement la valeur au croisement de la bonne ligne et de la bonne colonne, quel que soit l'ordre du tableau.
- 1Dans une cellule, écris
=INDEX(. - 2En 1er argument : sélectionne la grille des chiffres à croiser,
B2:D4. Les libellés de produits et la ligne des mois restent en dehors, puisque la valeur renvoyée sortira forcément de cette grille. - 3En 2ᵉ argument : écris la recherche qui trouve la ligne et referme-la,
EQUIV("Produit B"; A2:A4; 0). La fonction EQUIV situe le Produit B en 2ᵉ position dans la colonne des produits, et c'est ce2que reçoit la fonction INDEX. - 4En 3ᵉ argument : écris la recherche qui trouve la colonne et referme-la,
EQUIV("Mars"; B1:D1; 0). Ce second EQUIV balaie cette fois la ligne des mois et y trouve Mars en 3ᵉ position. Comme il travaille surB1:D1, ses positions se calent exactement sur les colonnes de la grilleB2:D4. - 5Ferme la parenthèse de la fonction INDEX et appuie sur Entrée. Celles des deux fonctions EQUIV ont déjà été refermées dans leur étape.
=INDEX(B2:D4; EQUIV("Produit B"; A2:A4; 0); EQUIV("Mars"; B1:D1; 0))Comment gérer l'erreur #N/A avec les fonctions INDEX, EQUIV et SIERREUR
Tu montes un annuaire partagé où chacun tape un nom pour récupérer le service correspondant, mais dès qu'un nom est mal orthographié ou absent, la recherche renvoie un #N/A peu engageant. Ce code d'erreur inquiète les collègues et casse les formules qui s'appuient sur la cellule. Pour un rendu propre, tu enveloppes les fonctions INDEX et EQUIV dans une fonction SIERREUR qui remplace l'erreur par le message de ton choix.
- 1Dans une cellule, écris
=SIERREUR(. - 2En 1er argument : écris la recherche à surveiller et referme-la,
INDEX(C2:C4; EQUIV("Julien Roche"; B2:B4; 0)). Cette recherche renvoie le service dès que le nom figure dans l'annuaire. Ici, « Julien Roche » est absent de la colonne des noms, donc la fonction EQUIV ne trouve aucune position et l'ensemble retourne#N/A. - 3En 2ᵉ argument : saisis le texte à afficher quand la recherche échoue,
"Nom inconnu". Les guillemets signalent à Excel qu'il s'agit d'un texte à reprendre tel quel. Tu peux aussi saisir""pour laisser la cellule vide plutôt que d'afficher un message. - 4Ferme la parenthèse et appuie sur Entrée. Les fonctions INDEX et EQUIV ont été refermées dans l'étape qui leur est consacrée, si bien qu'il ne reste que la parenthèse de la fonction SIERREUR.
=SIERREUR(INDEX(C2:C4; EQUIV("Julien Roche"; B2:B4; 0)); "Nom inconnu")#N/A, car EQUIV ne trouve aucune position à transmettre. La fonction SIERREUR intercepte cette erreur et affiche « Nom inconnu » à la place, un message clair qui ne casse pas les calculs voisins.
Les erreurs fréquentes avec la fonction INDEX
Deux des trois pannes viennent de tes numéros : un #REF! signale que tu demandes une ligne ou une colonne qui dépasse ta plage, un #VALEUR! que le numéro n'est pas un entier propre (texte, décimal ou négatif glissé dedans). La troisième arrive seulement quand tu maries INDEX avec EQUIV : le #N/A ne vient pas d'INDEX mais d'EQUIV qui n'a pas retrouvé ta valeur, souvent à cause d'un espace en trop ou d'un texte confondu avec un nombre.
Erreur #REF! : le numéro de ligne ou de colonne dépasse la taille de la plage
Cette erreur apparaît quand no_ligne ou no_colonne est supérieur au nombre de lignes ou de colonnes dans ta matrice. Par exemple, demander la ligne 5 dans une plage de 4 lignes.
Solution : Vérifie que no_ligne est inférieur ou égal au nombre de lignes de ta plage, et que no_colonne est inférieur ou égal au nombre de colonnes. Ajuste la plage ou les numéros en conséquence.
Erreur #VALEUR! : le numéro de ligne ou de colonne n'est pas un entier valide
Le paramètre no_ligne ou no_colonne contient un texte, un décimal ou une valeur négative au lieu d'un nombre entier positif.
Solution : Assure-toi que no_ligne et no_colonne sont des nombres entiers positifs. Si tu utilises une formule pour calculer ces numéros, entoure-la de ENT() pour convertir en entier si nécessaire.
Erreur #N/A quand INDEX est combiné avec EQUIV : la valeur cherchée est introuvable
L'erreur vient d'EQUIV qui ne trouve pas la valeur dans la plage de recherche. Causes fréquentes : une faute de frappe, un espace en trop dans les données, ou un type incompatible (texte vs nombre).
Solution : Entoure ta formule de SIERREUR pour afficher un message personnalisé : =SIERREUR(INDEX(C:C; EQUIV(A1; B:B; 0)); "Non trouvé"). Vérifie aussi que ta valeur cherchée et les données de la plage sont du même type (texte ou nombre).

INDEX-EQUIV vs RECHERCHEV vs RECHERCHEX
RECHERCHEV est plus simple à écrire pour une recherche basique vers la droite. INDEX-EQUIV est plus flexible et robuste pour tout le reste. RECHERCHEX (Excel 365/2021) combine les avantages des deux mais n'est pas disponible dans toutes les versions.
| Critère | INDEX-EQUIV | RECHERCHEV | RECHERCHEX |
|---|---|---|---|
| Direction de recherche | Toutes directions | Droite uniquement | Toutes directions |
| Robustesse si colonne insérée | Aucun problème | Casse la formule | Aucun problème |
| Performance sur grands volumes | Meilleure | Moyenne | Bonne |
| Complexité | Moyenne (deux fonctions) | Simple | Simple |
| Disponibilité | Toutes versions | Toutes versions | Excel 365 et 2021+ |
| Recherche 2D (ligne et colonne) | Oui (avec deux EQUIV) | Non | Partielle |

Astuces avancées avec INDEX
Rendre la formule robuste aux insertions de colonnes
Quand tu utilises RECHERCHEV avec un numéro de colonne fixe (ex. 3), insérer une colonne dans ton tableau casse la formule sans prévenir. Avec INDEX-EQUIV, tu références la colonne par son adresse, pas par son numéro : ajouter une colonne ne change rien.
C'est la principale raison pour laquelle les analystes financiers préfèrent INDEX-EQUIV sur les grands fichiers partagés.
Recherche sur deux critères sans formule matricielle
Pour croiser deux colonnes (nom ET département), tu peux concaténer les deux critères dans une seule colonne auxiliaire et utiliser EQUIV dessus : =INDEX(C:C; EQUIV(F1&G1; A:A&B:B; 0)). Entre les deux plages dans EQUIV, utilise le raccourci Ctrl+Maj+Entrée (Excel) ou laisse la formule normale (Google Sheets).
Cette technique évite d'ajouter des colonnes helper dans ton tableau source.
Utiliser INDEX pour retourner une plage entière
En passant 0 comme no_ligne, =INDEX(A:C; 0; 2) retourne la colonne B entière, ce qui est utilisable par d'autres fonctions comme SOMME ou MAX. C'est puissant pour créer des agrégats dynamiques qui s'adaptent quand tu changes le numéro de colonne.
Cette syntaxe fonctionne aussi dans les formules matricielles pour des calculs conditionnels avancés.
Questions fréquentes
RECHERCHEV cherche une valeur et retourne une colonne à droite. INDEX retourne simplement la valeur à une position donnée (ligne, colonne). INDEX seul ne cherche pas : c'est pourquoi on le combine souvent avec EQUIV pour créer une alternative plus flexible à RECHERCHEV.
EQUIV trouve la position d'une valeur dans une plage. En combinant avec INDEX, tu obtiens une recherche dynamique : EQUIV trouve la ligne, INDEX retourne la valeur. Cette combinaison peut chercher dans n'importe quelle direction, contrairement à RECHERCHEV qui ne cherche que vers la droite.
INDEX peut recevoir plusieurs plages entre parenthèses et un 4e argument pour choisir la zone. Exemple : =INDEX((A1:B10; D1:E10); 3; 2; 2) retourne la valeur en ligne 3, colonne 2 de la 2e zone (D1:E10). C'est utile pour des tableaux discontinus.
Oui, INDEX-EQUIV est généralement plus performant que RECHERCHEV sur de gros volumes de données, surtout quand la colonne de résultat est loin de la colonne de recherche. La différence devient notable au-delà de 10 000 lignes.
Pour aller plus loin
Continue sur ta lancée après la fonction INDEX : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voirLa recherche dans Excel (RECHERCHEV, INDEX, EQUIV)

Le modèle Excel « Gestion de stock »

Le guide complet pour bien démarrer sur Excel




