La Fonction INDIRECT est une fonction si intéressante et qui demande plus d’attention lors de son utilisation. Elle permet de chercher le contenu de la ou des cellules spécifiées par leurs références.
Pour vous aider à bien comprendre comment l’utiliser, mettez en pratique ces exemples où je ferai de mon mieux pour vous simplifier leurs explications.
La syntaxe de la fonction INDIRECT
Sa syntaxe est la suivante : INDIRECT(réf_texte ;[a1])
La fonction INDIRECT contient donc deux arguments :
- réf_texte : obligatoire, il doit être une référence à une
cellule ou à une plage de cellule, cette référence pourra être de type A1, L1C1
ou nom de cellule ou de plage de cellules. Et pour que la fonction INDIRECT
renvoie le contenu de la cellule (des cellules) référencée (es), vous devez
mettre sa référence entre guillemets.
- [a1] : cet argument est facultatif, il représente le type de
référence défini dans Excel. Généralement c’est le type A1 (Colonnes numérotées
en lettres et lignes en chiffres) dans ce cas vous n’êtes pas obligé de mentionner
sa valeur VRAI, mais ; si le type de référencement est L1C1, vous devez
alors saisir la valeur FAUX pour cet argument.
Comment utiliser la fonction INDIRECT ?
- En référençant une cellule
Exemple 1 – INDIRECT renvoie un résultat statique
Dans l’illustration suivante, vous voyez que la cellule A2 contient
le texte « J’apprends bien ! ».
Supposons que vous aimeriez que ce texte soit affiché dans la
cellule D4 en utilisant la fonction INDIRECT. Vous allez donc taper dans D4
cette formule :
=INDIRECT("A2")
Et lorsque vous tapez Entrée, vous obtiendrez donc votre résultat
attendu.
Vous venez donc de respecter la règle de la syntaxe de la fonction
INDIRECT, en mettant la référence A2 dont vous souhaitez afficher son contenu, entre
guillemets.
Or, si vous saisissez la formule suivante : =INDIRECT(A2), Excel
vous renvoie une erreur #REF !
Voyons ensemble comment Excel exécute cette formule pour déterminer
la cause de ce problème :
- La fonction INDIRECT lit l’argument A2 et comprend que vous ne
l’avez pas mentionné comme référence puisque vous avez omis les guillemets,
alors elle constate que vous lui demandez d’aller chercher la référence cible
dans le contenu de la cellule A2.
- La cellule A2 contient : J’apprends bien !, INDIRECT va
donc remplacer A2 par son contenu ce qui donne :
=INDIRECT(" J’apprends bien ! ")
- Dans la dernière étape, INDIRECT évalue la chaîne de texte
« J’apprends bien ! », il n’est ni référence de type A1 ni un
nom de cellule, elle détecte donc que ce n’est pas une bonne référence.
C’est pour cette raison qu’elle renvoie erreur de référence
#REF ! (Vous trouvez plus de détails sur cette erreur et d’autres ici: Les erreurs dans Excel
J’espère que c’est clair !
Exemple 2 – INDIRECT renvoie un résultat dynamique
Dans cet exemple, remarquez que j’ai saisi trois valeurs différentes
:
- B2 contient le texte : Facture
- B3 contient la date :15/07/2019
- B4 que j’ai nommée Montant, contient le montant : 750.00 €
Dans la cellule E7, vous allez utiliser la fonction INDIRECT pour demander à Excel d’afficher l’une de ces valeurs et ceci en prenant en considération la référence
que vous allez préciser dans la cellule H3.
- Ecrivez donc dans H3 : B2
- Dans la cellule E7 saisissez =INDIRECT(H3)
Et voici comment va se dérouler l’exécution de cette formule :
- =INDIRECT(H3)
- =INDIRECT("B2") : INDIRECT utilise le contenu de
la cellule H3 qui est B2 et le met entre guillemets " "
En respectant les mêmes étapes d’exécution :
- INDIRECT renvoie 43661
- Mettez alors la cellule E7 au format Date pour faire afficher la date
correctement
- Cette fois écrivez dans H3: Montant, qui est le nom de la cellule B4
INDIRECT sera exécutée en passant par ces étapes:
- =INDIRECT(H3)
- =INDIRECT("Montant")
- INDIRECT renvoie le contenu de la cellule Montant : 750, que
vous pouvez lui appliquer ensuite le format monétaire.
En référençant une plage de cellules
– Utilisation statique
Exemple 3
Dans l’exemple ci-dessous, vous avez une liste des fruits, et un
tableau de données composé de quatre colonnes : Fruits, Qte(quantité),
Prix Unit (unitaire) et Total
Au lieu de reprendre la saisie des noms des fruits ; contenus
dans la plage de cellules A6:A10 ; dans la colonne Fruits et
précisément dans la plage de cellules E6:E10, vous aller vous servir de
la fonction INDIRECT pour vous faciliter la tâche.
Et puisque vous avez 5 valeurs à afficher et à fin d’obtenir un
meilleur résultat, vous êtes appelé à utiliser INDIRECT dans une formule
matricielle.
- Sélectionnez tout d’abord la plage E6:E10.
- Allez dans la barre de formule et écrivez
=INDIRECT("A6 :A10") puis validez en combinant Ctrl+Maj+Entrée
- Remarquez que la référence de la plage de cellules est mise entre
guillemets elle aussi.
Exemple 4
Reprenons le même exemple dernier, mais cette fois, et au lieu
d’utiliser cette référence A6:A10 dans INDIRECT, vous allez la remplacer
par un nom défini pour elle.
- Sélectionnez A6:A10 et nommez-la Fruits.
- Sélectionnez la plage de cellules E6:E10 puis dans la barre
de formule saisissez =INDIRECT("Fruits") et validez enfin par
Ctrl+Maj+Entrée
– Utilisation dynamique
Exemple 5
Supposons dans cet exemple que vous avez deux colonnes comme sources
de données : Fruits et Légumes, et que vous avez une liste déroulante dans
l’entête de la première colonne de votre tableau de données.
Vous désirez par exemple que lorsque vous sélectionnez entre Fruits
ou Légumes, Excel vous affichera les éléments de la source de données
correspondant à votre sélection.
- Définissez en premier le nom Fruits pour la plage de cellules
A6:A10 et Légumes pour la plage B6 :B10.
- Sélectionnez la cellule F5 et créez ensuite une liste déroulante en
utilisant l’outil Validation des données et qui comportera les deux noms juste
créés :Fruits et Légumes.
- Sélectionnez maintenant la plage de cellules F6:F10 et dans la
barre de formule tapez : =INDIRECT(F5) puis validez par Ctrl+Maj+Entrée.
- Choisissez entre Fruits ou Légumes à chaque fois.
L’exécution de INDIRECT dans cet exemple suit le même principe
expliqué dans l’exemple 2 vu en haut :
- Quand vous sélectionnez Légumes par exemple, voici ce qui se produit :
- L’argument réf_texte reçoit Légumes que contient la cellule F5 et
est mis entre guillemets : =INDIRECT("Légumes")
- en exécutant la formule matricielle intégrant INDIRECT, elle cherche les 5 noms de légumes dans la plage de
cellules Légumes et les place successivement dans les cellules de la plage
F6 :F10
Exemple 6
En reprenant cet exemple, la formule utilisée est =INDIRECT($D$12) et une fois validée, l’argument
$D$12 sera remplacé par le nom de la plage de cellules contenu dans cette
cellule, puis la liste 2 accueillera les valeurs de cette plage.