Comprendre la fonction INDIRECT Excel
La fonction INDIRECT dans Excel permet de créer une référence à une cellule en utilisant une chaîne de texte comme argument. Au lieu d'entrer une référence de cellule statique comme A1, vous pouvez utiliser une formule qui génère cette référence sous forme de texte. Cela offre une grande flexibilité, car vous pouvez modifier la chaîne de texte pour changer la cellule référencée dynamiquement.
Syntaxe de la fonction INDIRECT
La syntaxe de la fonction INDIRECT est simple :
=INDIRECT(ref_text; [a1])
ref_text: C'est l'argument obligatoire. Il s'agit de la chaîne de texte qui représente la référence de cellule que vous souhaitez utiliser. Cette chaîne peut être une référence de cellule directe (par exemple, "A1"), une plage de cellules (par exemple, "A1:B10"), ou le nom d'une plage nommée.[a1]: C'est l'argument optionnel. Il spécifie le type de référence utilisé dansref_text. Si cet argument estVRAI(ou omis),ref_textest interprété comme une référence de style A1 (par exemple, "A1", "B2"). Si cet argument estFAUX,ref_textest interprété comme une référence de style L1C1 (ligne 1, colonne 1), ce qui est moins courant. La valeur par défaut estVRAI.
Exemples basiques d'utilisation d'INDIRECT
-
Référence directe à une cellule :
Si la cellule A1 contient la valeur "Bonjour", la formule
=INDIRECT("A1")renverra "Bonjour". -
Utilisation d'une autre cellule pour définir la référence :
Si la cellule B1 contient le texte "A1", la formule
=INDIRECT(B1)renverra le contenu de la cellule A1. -
Utilisation d'une plage de cellules :
Si vous souhaitez faire référence à une plage de cellules, par exemple A1:B10, vous pouvez utiliser
=INDIRECT("A1:B10"). Cependant, il est important de noter que cette formule renverra une erreur si elle n'est pas utilisée dans une fonction qui accepte une plage comme argument (par exemple,SOMME).
Pourquoi utiliser la fonction INDIRECT ?
La fonction INDIRECT offre plusieurs avantages qui la rendent utile dans certaines situations spécifiques :
- Références dynamiques : C'est l'avantage principal. Vous pouvez modifier la référence de cellule en modifiant simplement le texte de la chaîne de référence. Cela est particulièrement utile lorsque vous souhaitez créer des formules qui s'adaptent en fonction de certaines conditions.
- Contourner les limitations des références relatives : Dans certaines situations, les références relatives peuvent poser problème, notamment lors de l'insertion ou de la suppression de lignes ou de colonnes.
INDIRECTpermet de créer des références absolues qui ne sont pas affectées par ces modifications. - Travailler avec des noms de feuilles dynamiques : Vous pouvez utiliser
INDIRECTpour faire référence à des cellules dans d'autres feuilles, même si le nom de la feuille est déterminé dynamiquement (par exemple, à partir d'une liste déroulante). - Simplifier les formules complexes : Dans certains cas, l'utilisation de
INDIRECTpeut rendre les formules plus lisibles et plus faciles à comprendre, en particulier lorsqu'il s'agit de gérer des références complexes.
Exemples pratiques de la fonction INDIRECT
Exemple 1 : Sélectionner des données en fonction d'une liste déroulante
Imaginez que vous avez plusieurs feuilles de calcul, chacune contenant des données pour un mois spécifique (par exemple, "Janvier", "Février", "Mars"). Vous souhaitez créer un tableau de bord qui affiche les données du mois sélectionné dans une liste déroulante.
- Créez les feuilles de calcul : Créez une feuille pour chaque mois, avec des données similaires dans chaque feuille (par exemple, les ventes par produit).
- Créez une liste déroulante : Dans une feuille de tableau de bord, créez une liste déroulante contenant les noms des mois. Vous pouvez utiliser la validation des données pour cela (onglet Données > Validation des données).
-
Utilisez la fonction INDIRECT : Dans la cellule où vous souhaitez afficher les ventes totales du mois sélectionné, utilisez la formule suivante :
excel =SOMME(INDIRECT("'"&A1&"'!B2:B10"))A1est la cellule contenant la liste déroulante avec le nom du mois sélectionné."'"&A1&"'!B2:B10"construit la chaîne de texte qui représente la référence à la plage de cellules B2:B10 dans la feuille dont le nom est celui sélectionné dans la liste déroulante. Les guillemets simples sont nécessaires pour les noms de feuilles contenant des espaces ou des caractères spéciaux.SOMMEcalcule la somme des valeurs dans la plage de cellules référencée parINDIRECT.
Explication détaillée :
Cette formule concatène plusieurs chaînes de texte pour former la référence de cellule dynamique. "'" ajoute un guillemet simple au début du nom de la feuille. &A1& ajoute le contenu de la cellule A1 (le nom du mois sélectionné). "'!B2:B10" ajoute un guillemet simple fermant, un point d'exclamation et la référence à la plage de cellules B2:B10. Le résultat est une chaîne de texte comme "'Janvier'!B2:B10", qui est ensuite interprétée par la fonction INDIRECT comme une référence à la plage de cellules B2:B10 dans la feuille "Janvier". La fonction SOMME additionne ensuite les valeurs de cette plage.
Exemple 2 : Créer une référence à une cellule basée sur des critères multiples
Supposons que vous ayez un tableau de données contenant les ventes par produit et par région. Vous souhaitez créer une formule qui renvoie les ventes pour un produit et une région spécifiques, sélectionnés à partir de listes déroulantes.
- Créez le tableau de données : Créez un tableau avec les produits en lignes et les régions en colonnes. Remplissez le tableau avec les données de ventes correspondantes.
- Créez les listes déroulantes : Créez deux listes déroulantes : une pour sélectionner le produit et une pour sélectionner la région.
-
Utilisez la fonction INDIRECT et ADRESSE : Utilisez les fonctions
ADRESSEetINDIRECTcombinées pour créer la référence dynamique :excel =INDIRECT(ADRESSE(EQUIV(A1;Produits;0);EQUIV(B1;Regions;0)))A1contient la liste déroulante du produit.B1contient la liste déroulante de la région.Produitsest une plage nommée contenant la liste des produits (les étiquettes de lignes du tableau).Regionsest une plage nommée contenant la liste des régions (les étiquettes de colonnes du tableau).EQUIV(A1;Produits;0)renvoie le numéro de ligne correspondant au produit sélectionné.EQUIV(B1;Regions;0)renvoie le numéro de colonne correspondant à la région sélectionnée.ADRESSE(num_ligne;num_colonne)construit la référence de cellule (par exemple, "C4") à partir du numéro de ligne et du numéro de colonne.INDIRECTconvertit la référence de cellule texte en une référence réelle, permettant d'accéder à la valeur de la cellule.
Explication détaillée :
La fonction EQUIV recherche la position du produit sélectionné dans la liste des produits et la position de la région sélectionnée dans la liste des régions. La fonction ADRESSE utilise ces positions pour construire l'adresse de la cellule contenant les ventes correspondantes. Enfin, la fonction INDIRECT utilise cette adresse pour récupérer la valeur des ventes.
Exemple 3 : Créer une somme dynamique en fonction d'une plage variable
Supposons que vous ayez des données de ventes sur plusieurs lignes et que vous souhaitiez calculer la somme d'une plage de cellules dont la taille varie en fonction d'une valeur entrée par l'utilisateur.
- Entrez les données de ventes : Remplissez une colonne avec vos données de ventes.
- Créez une cellule pour l'entrée utilisateur : Créez une cellule où l'utilisateur peut entrer le nombre de lignes à inclure dans la somme.
- Utilisez la fonction INDIRECT et DECALER : Utilisez les fonctions
DECALERetINDIRECTcombinées pour créer la plage dynamique :
=SOMME(INDIRECT("A1:"&ADRESSE(1+C1;1)))
A1est la première cellule de la plage de données.C1est la cellule où l'utilisateur entre le nombre de lignes à inclure.ADRESSE(1+C1;1)renvoie l'adresse de la dernière cellule à inclure dans la somme. On ajoute 1 à C1 car on commence à la ligne 1."A1:"&ADRESSE(1+C1;1)concatène la première cellule avec la dernière cellule pour créer une chaîne de texte représentant la plage (par exemple, "A1:A5").INDIRECTconvertit cette chaîne de texte en une référence de plage réelle.SOMMEcalcule la somme des valeurs dans cette plage.
Explication détaillée :
La fonction ADRESSE calcule l'adresse de la dernière cellule de la plage en fonction de la valeur entrée par l'utilisateur. La fonction INDIRECT utilise cette adresse pour créer une référence à la plage dynamique. La fonction SOMME calcule ensuite la somme des valeurs dans cette plage.
Bonnes pratiques et erreurs à éviter
- Utiliser des noms de plages nommées : Au lieu d'utiliser des références de cellules directes dans la fonction
INDIRECT, il est préférable d'utiliser des noms de plages nommées. Cela rend les formules plus lisibles et plus faciles à maintenir. - Vérifier la validité de la chaîne de référence : Assurez-vous que la chaîne de texte passée à la fonction
INDIRECTest une référence de cellule valide. Sinon, la fonction renverra une erreur#REF!. - Éviter les références circulaires : Soyez prudent lorsque vous utilisez la fonction
INDIRECTpour éviter de créer des références circulaires, qui peuvent entraîner des problèmes de performance et des résultats incorrects. - Faire attention aux performances : L'utilisation excessive de la fonction
INDIRECTpeut ralentir les performances de votre feuille de calcul, en particulier si vous avez de nombreuses formules qui l'utilisent. Essayez d'utiliser d'autres méthodes si possible, surtout pour les grands ensembles de données. - Utiliser des guillemets simples pour les noms de feuilles : Si le nom d'une feuille contient des espaces ou des caractères spéciaux, vous devez l'entourer de guillemets simples dans la chaîne de référence (par exemple,
'Nom de la feuille'!A1).
Alternatives à la fonction INDIRECT
Bien que la fonction INDIRECT soit utile dans certaines situations, il existe souvent des alternatives qui peuvent être plus efficaces ou plus faciles à utiliser.
- INDEX et EQUIV : Les fonctions
INDEXetEQUIVsont souvent une alternative plus performante àINDIRECTpour créer des références dynamiques basées sur des critères de recherche. Elles sont particulièrement utiles lorsqu'il s'agit de récupérer des données à partir d'un tableau en fonction de valeurs de recherche. - DECALER : La fonction
DECALERpermet de créer une référence à une plage de cellules qui est décalée par rapport à une cellule de base. Elle peut être utilisée pour créer des plages dynamiques dont la taille varie en fonction de certaines conditions. - Les tableaux structurés : Les tableaux structurés (anciennement appelés "Listes") offrent de nombreux avantages par rapport aux plages de cellules traditionnelles, notamment la possibilité de faire référence à des colonnes entières par leur nom, ce qui rend les formules plus lisibles et plus faciles à maintenir.
Conclusion
La fonction INDIRECT est un outil puissant pour créer des références de cellules dynamiques dans Excel. Bien qu'elle puisse être complexe à utiliser au début, elle offre une grande flexibilité et peut être utile dans de nombreuses situations. Cependant, il est important de comprendre ses limitations et d'utiliser d'autres méthodes lorsque cela est possible, afin d'optimiser les performances de vos feuilles de calcul. En maîtrisant la fonction INDIRECT et ses alternatives, vous serez en mesure de créer des feuilles de calcul plus sophistiquées et plus automatisées.
N'oubliez pas d'expérimenter avec les exemples fournis et d'adapter les formules à vos besoins spécifiques. La clé est de comprendre le fonctionnement de la fonction INDIRECT et de savoir quand et comment l'utiliser de manière efficace.