Aller au contenu principal

Qu'est-ce que la fonction INDEX ?

Définition
La fonction INDEX retourne la valeur d'une cellule à l'intersection d'un numéro de ligne et d'un numéro de colonne dans une plage donnée. Si la plage ne contient qu'une colonne ou une ligne, l'un des deux numéros peut être omis.

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

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.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

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).

1

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).

2

no_ligne

: le numéro de la ligne dans la matrice

La 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.

3

[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.

Le combo gagnant
INDEX seul ne cherche rien : c'est en l'associant à EQUIV qu'il devient redoutable. EQUIV trouve la position de ta valeur, INDEX ramène la donnée de même rang dans la colonne voulue, dans n'importe quelle direction, y compris à gauche là où RECHERCHEV cale.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

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.

Les étapes
  1. 1
    Dans une cellule, écris =INDEX(.
  2. 2
    En 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.
  3. 3
    En 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. Le 2 désigne donc la deuxième ligne de la zone, celle de la Licence B.
  4. 4
    En 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.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Au final, ta formule devrait ressembler à ça :=INDEX(A2:D19; 2; 3)
Explication
La fonction INDEX descend d'abord à la 2e ligne de la plage 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.
Exemple 2

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.

Les étapes
  1. 1
    Dans une cellule, écris =INDEX(.
  2. 2
    En 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.
  3. 3
    En 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 renvoie 2, le rang de Paul Martin. Son 0 final impose une correspondance exacte du nom.
  4. 4
    Ferme 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.
Voici la formule que tu obtiens à la fin :=INDEX(A2:A4; EQUIV("Paul Martin"; B2:B4; 0))
Explication
La formule combine deux fonctions : EQUIV repère que « Paul Martin » occupe la 2e position dans la colonne des noms, puis la fonction INDEX renvoie le code de même rang dans la colonne A, pourtant située à gauche du nom, soit EMP-1138. C'est exactement le cas où RECHERCHEV cale, puisqu'elle ne sait renvoyer qu'une colonne placée à droite.
Exemple 3

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.

Les étapes
  1. 1
    Dans une cellule, écris =INDEX(.
  2. 2
    En 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.
  3. 3
    En 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 ce 2 que reçoit la fonction INDEX.
  4. 4
    En 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 sur B1:D1, ses positions se calent exactement sur les colonnes de la grille B2:D4.
  5. 5
    Ferme 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.
Une fois les morceaux assemblés, ta formule donne ça :=INDEX(B2:D4; EQUIV("Produit B"; A2:A4; 0); EQUIV("Mars"; B1:D1; 0))
Explication
La formule s'appuie sur deux EQUIV imbriqués : le premier situe la ligne du Produit B (position 2), le second la colonne de Mars (position 3), et la fonction INDEX renvoie la valeur à leur intersection, soit 220. Comme tout repose sur des positions calculées, réordonner les lignes ou les colonnes ne fausse jamais le résultat.
Exemple 4

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.

Les étapes
  1. 1
    Dans une cellule, écris =SIERREUR(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    Ferme 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.
En mettant tout bout à bout, tu écris :=SIERREUR(INDEX(C2:C4; EQUIV("Julien Roche"; B2:B4; 0)); "Nom inconnu")
Explication
Le nom « Julien Roche » ne figure pas dans l'annuaire : seules, les fonctions INDEX et EQUIV renverraient #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.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

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).

Lucas, la mascotte du Dojo, compare deux fonctions Excel

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èreINDEX-EQUIVRECHERCHEVRECHERCHEX
Direction de rechercheToutes directionsDroite uniquementToutes directions
Robustesse si colonne inséréeAucun problèmeCasse la formuleAucun problème
Performance sur grands volumesMeilleureMoyenneBonne
ComplexitéMoyenne (deux fonctions)SimpleSimple
DisponibilitéToutes versionsToutes versionsExcel 365 et 2021+
Recherche 2D (ligne et colonne)Oui (avec deux EQUIV)NonPartielle
Le savais-tu ?
Passe 0 en numéro de ligne et INDEX(A:C; 0; 2) te renvoie la colonne B entière, réutilisable par SOMME ou MAX. Même idée avec un 0 en numéro de colonne pour récupérer une ligne complète.
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec INDEX

1Astuce

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.

2Astuce

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.

3Astuce

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.

FAQ

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.