ElyxAI

INDEX Excel : La formule de recherche par position expliquée

Intermédiaire
=INDEX(matrice; no_ligne; [no_colonne])

La formule INDEX est l'une des fonctions les plus puissantes d'Excel pour extraire des données d'une plage ou d'un tableau. Contrairement à VLOOKUP qui recherche une valeur dans la première colonne, INDEX vous permet de récupérer une valeur à une position précise en spécifiant simplement le numéro de ligne et de colonne. Cette flexibilité en fait un outil indispensable pour les analyses de données complexes et les tableaux de bord professionnels. La véritable force d'INDEX réside dans sa capacité à fonctionner de manière dynamique lorsqu'elle est combinée avec d'autres fonctions comme MATCH. Cette combinaison crée une alternative plus robuste et flexible à VLOOKUP, capable de rechercher dans n'importe quelle direction et de gérer des données structurées de façon non conventionnelle. Que vous travailliez avec des données financières, des inventaires ou des bases de données clients, INDEX devient rapidement un élément clé de votre arsenal Excel. Dans ce guide complet, nous explorerons tous les aspects d'INDEX : sa syntaxe, ses paramètres, ses applications pratiques, et comment l'utiliser efficacement avec d'autres formules pour résoudre des problèmes de données complexes.

Syntaxe et paramètres

La syntaxe de INDEX est simple mais puissante : =INDEX(matrice; no_ligne; [no_colonne]). Le paramètre 'matrice' est obligatoire et représente la plage de cellules ou le tableau dans lequel vous souhaitez extraire une valeur. Ce peut être une simple plage comme A1:C10 ou une référence nommée plus descriptive. Le paramètre 'no_ligne' est également obligatoire et spécifie le numéro de ligne relatif à votre matrice. Important : ce numéro est relatif à la matrice, pas à la feuille entière. Par exemple, si votre matrice commence à la ligne 5, le numéro 1 correspondra à la ligne 5 de votre feuille. Le paramètre 'no_colonne' est optionnel. Si vous omettez ce paramètre, INDEX retournera la valeur de la ligne spécifiée. Si vous le fournissez, INDEX retournera la valeur à l'intersection de la ligne et de la colonne spécifiées. Lorsque la matrice est unidimensionnelle (une seule ligne ou colonne), ce paramètre n'est pas nécessaire. Pour les matrices multidimensionnelles, c'est lui qui précise exactement quelle colonne consulter. Vous pouvez également utiliser 0 comme numéro de ligne ou de colonne pour retourner l'intégralité de la colonne ou de la ligne.

array
Plage de cellules ou tableau
row_num
Numéro de ligne
column_num
Numéro de colonne
Optionnel

Exemples pratiques

Extraction simple d'une valeur de produit

=INDEX(B1:B100; 3)

Cette formule recherche dans la plage B1:B100 (colonne des prix) et retourne la valeur de la 3ème ligne, soit le prix du 3ème produit.

Recherche bidimensionnelle avec INDEX et MATCH

=INDEX(A1:E5; MATCH("Île-de-France"; A1:A5; 0); MATCH("Mars"; A1:E1; 0))

MATCH trouve la position de 'Île-de-France' dans les lignes et celle de 'Mars' dans les colonnes. INDEX utilise ces deux positions pour retourner la valeur exacte à l'intersection.

Extraction d'une colonne entière avec INDEX

=INDEX(A1:D1000; 0; 2)

Le paramètre 0 pour le numéro de ligne signifie 'toutes les lignes'. Le paramètre 2 pour la colonne retourne la 2ème colonne entière de la matrice (colonne B).

Points clés à retenir

  • INDEX est une fonction de recherche flexible qui retourne une valeur à une position précise (ligne, colonne) dans une matrice.
  • La combinaison INDEX+MATCH est plus puissante que VLOOKUP car elle permet une recherche dans n'importe quelle direction et n'est pas limitée à la première colonne.
  • INDEX peut retourner une ligne ou colonne entière en utilisant 0 comme paramètre de ligne ou colonne, offrant une flexibilité supplémentaire.
  • Avec les formules matricielles et les fonctions modernes d'Excel 365, INDEX peut gérer des recherches multi-critères sophistiquées et des données dynamiques.
  • Toujours encapsuler MATCH dans IFERROR pour gérer les cas où la valeur recherchée n'existe pas, rendant vos formules plus robustes.

Astuces de pro

Utilisez IFERROR autour de MATCH pour éviter les erreurs #N/A quand la valeur n'existe pas : =INDEX(matrice; IFERROR(MATCH(valeur; plage; 0); ""); colonne)

Impact : Rend vos formules plus robustes et vos tableaux de bord plus professionnels en gérant les cas d'erreur gracieusement.

Combinez INDEX avec ROWS et COLUMNS pour créer des formules entièrement dynamiques : =INDEX(matrice; ROWS(matrice)/2; COLUMNS(matrice)/2) retournera la valeur centrale.

Impact : Permet de créer des formules qui s'adaptent automatiquement à la taille de vos données, idéal pour les données qui changent régulièrement.

Utilisez INDEX avec 0 comme paramètre de ligne ou colonne pour retourner une ligne ou colonne entière, puis combinez avec d'autres fonctions : =SUM(INDEX(A1:D10; 3; 0))

Impact : Offre une syntaxe plus claire et plus flexible que les références directes, particulièrement utile dans les formules complexes.

Dans les formules matricielles, INDEX peut traiter plusieurs critères : {=INDEX(A1:A100; MATCH(1; (B1:B100=10)*(C1:C100="Oui"); 0))}

Impact : Permet des recherches multi-critères sophistiquées sans avoir besoin d'ajouter des colonnes d'aide, économisant du temps et de l'espace.

Combinaisons utiles

INDEX + MATCH pour une recherche puissante

=INDEX(D1:D100; MATCH("Dupont"; A1:A100; 0))

MATCH trouve la position du nom 'Dupont' dans la colonne A, et INDEX retourne la valeur correspondante de la colonne D. C'est la combinaison classique qui remplace avantageusement VLOOKUP pour sa flexibilité.

INDEX + SMALL + IF pour les n-ièmes plus petites valeurs

=INDEX(A1:A100; SMALL(IF(B1:B100>100; ROW(B1:B100)-ROW(B1)+1); 1))

Cette formule matricielle retourne la première valeur de la colonne A où la valeur correspondante en colonne B dépasse 100. Utile pour filtrer et extraire des données conditionnellement.

INDEX + AGGREGATE pour ignorer les erreurs

=INDEX(A1:A100; AGGREGATE(14; 6; ROW(A1:A100)/COUNTIF(A1:A100; A1:A100); 1))

AGGREGATE ignore les erreurs et les lignes masquées, ce qui rend cette combinaison robuste pour les données complexes ou filtrées. Parfait pour les tableaux de bord professionnels.

Erreurs courantes

#REF!

Cause : La plage de référence a été supprimée ou le numéro de ligne/colonne dépasse les limites de la matrice spécifiée. Par exemple, si votre matrice ne contient que 5 lignes et vous demandez la ligne 10.

Solution : Vérifiez que votre matrice existe toujours et que les numéros de ligne et colonne ne dépassent pas les dimensions réelles. Utilisez COUNTA ou ROWS pour vérifier dynamiquement la taille de votre matrice.

#VALUE!

Cause : Les paramètres 'no_ligne' ou 'no_colonne' contiennent du texte au lieu d'un nombre. Cela peut se produire si vous passez une formule MATCH qui retourne une erreur ou si vous entrez manuellement du texte.

Solution : Assurez-vous que MATCH retourne un nombre valide. Enveloppez MATCH dans IFERROR pour gérer les cas où la valeur n'est pas trouvée : =INDEX(matrice; IFERROR(MATCH(...); 1); colonne)

#NUM!

Cause : Le numéro de ligne ou de colonne est zéro ou négatif, ce qui n'est pas valide (sauf si vous utilisez intentionnellement 0 pour retourner une ligne/colonne entière).

Solution : Vérifiez que vos nombres de ligne et colonne sont positifs. Si vous utilisez MATCH, assurez-vous qu'il trouve bien la valeur recherchée et ne retourne pas 0 ou un nombre négatif.

Checklist de dépannage

  • 1.Vérifiez que les numéros de ligne et colonne sont des nombres entiers positifs et ne dépassent pas les dimensions réelles de votre matrice.
  • 2.Confirmez que la plage de référence (matrice) existe toujours et n'a pas été supprimée ou renommée.
  • 3.Si vous utilisez MATCH, testez-le séparément pour vous assurer qu'il retourne un nombre valide et non une erreur.
  • 4.Vérifiez que les critères de recherche dans MATCH correspondent exactement au format des données (majuscules/minuscules, espaces, etc.).
  • 5.Utilisez le mode d'audit des formules (Formules > Vérifier les formules > Fenêtre d'évaluation) pour tracer l'exécution étape par étape.
  • 6.Testez votre formule avec des valeurs simples et des plages réduites avant de l'appliquer à de grandes données.

Cas particuliers

Utiliser INDEX avec une plage qui contient des cellules fusionnées

Comportement : INDEX traite les cellules fusionnées comme une seule cellule. Le comportement peut être imprévisible si vous spécifiez un numéro de ligne qui tombe dans une cellule fusionnée.

Solution : Évitez les cellules fusionnées dans les plages utilisées avec INDEX, ou structurez vos données de façon à ne pas les inclure.

C'est une limitation générale d'Excel avec les cellules fusionnées, pas spécifique à INDEX.

INDEX avec des paramètres de ligne/colonne égaux à 0

Comportement : Retourne la ligne ou colonne entière. Par exemple, INDEX(A1:D10; 0; 2) retourne la colonne B entière (B1:B10).

Solution : Utilisez intentionnellement cette fonctionnalité pour retourner des lignes ou colonnes entières. Combinez avec SUM, AVERAGE, etc.

C'est une caractéristique intentionnelle et utile d'INDEX, pas une erreur.

INDEX avec MATCH quand plusieurs valeurs identiques existent

Comportement : MATCH retourne la position de la PREMIÈRE occurrence. INDEX retournera donc la valeur associée à la première correspondance.

Solution : Si vous avez besoin de toutes les correspondances, utilisez des formules matricielles ou des approches alternatives comme FILTER (Excel 365).

C'est le comportement standard de MATCH. Utilisez COUNTIF pour vérifier s'il y a plusieurs correspondances avant d'utiliser INDEX+MATCH.

Limitations

  • INDEX retourne une seule valeur à la fois. Pour retourner plusieurs valeurs, vous devez soit utiliser plusieurs formules INDEX, soit utiliser des formules matricielles ou FILTER (Excel 365).
  • Combinée avec MATCH, INDEX ne peut pas faire de recherche floue ou approximative sans paramétrage spécifique. MATCH avec le paramètre 1 ou -1 fait une recherche approximative, ce qui peut donner des résultats inattendus.
  • INDEX ne peut pas retourner des positions ou des indices ; elle retourne uniquement des valeurs. Si vous avez besoin de la position, utilisez MATCH directement.
  • Avec de très grandes matrices (plusieurs millions de lignes), les formules INDEX+MATCH peuvent être plus lentes que d'autres approches comme les tableaux croisés dynamiques ou les requêtes de base de données.

Alternatives

Plus simple pour les recherches de base dans des tableaux structurés classiquement

Quand : Recherche de valeur dans la première colonne avec retour d'une colonne à droite

Fonction moderne qui combine la flexibilité d'INDEX+MATCH avec une syntaxe plus simple

Quand : Recherche bidirectionnelle avec gestion native des erreurs et recherche en avant/arrière

Permet une référence complètement dynamique en construisant l'adresse sous forme de texte

Quand : Création de références très dynamiques basées sur des calculs ou des entrées utilisateur

Compatibilité

Excel

Depuis 2007

=INDEX(array; row_num; [column_num]) - Identique dans toutes les versions jusqu'à 365

Google Sheets

=INDEX(range; row; [column]) - Syntaxe identique, fonctionne exactement comme Excel

Google Sheets supporte également INDEX avec des tableaux dynamiques. La fonction fonctionne de manière identique et peut être combinée avec MATCH de la même façon.

LibreOffice

=INDEX(array; row; [column]) - Syntaxe compatible, comportement identique à Excel

Questions fréquentes

Besoin d'aide pour maîtriser INDEX et les formules complexes? Découvrez ElyxAI, votre assistant Excel intelligent qui explique et génère des formules en temps réel. Optimisez votre productivité avec ElyxAI et transformez vos données en insights actionnables.

Explorer Recherche et référence

Formules connexes