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 !
- Pourquoi ?
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)
- =INDIRECT(H3)
- =INDIRECT("B2") : INDIRECT utilise le contenu de la cellule H3 qui est B2 et le met entre guillemets " "
- E7 affiche enfin Facture
- Modifiez B2 par B3
- 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
L’avantage de la fonction INDIRECT parait clairement lorsqu’on
l’intègre dans d’autres fonctions :Somme, RECHERCHEV, MIN,MAX … ou lorsqu’on veut créer des listes déroulantes dépendantes par exemple.
Je vous invite à suivre ce lien Comment créer des listes déroulantes dépendantes, pour découvrir comment on s’est servi de la fonction INDIRECT
pour remplir une liste déroulante dépendant d’une autre.
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.
bonjour
RépondreSupprimermerci pour tout ces éclaircissement, toutefois je trouve toujours des difficultés a réaliser cet exercice, toujours un message d'erreur " source est reconnu comme erronée " je demande votre assistance
bonjour, montrez moi un exemple de la formule utilisée et qui déclenche ce message.
SupprimerMerci
RépondreSupprimerBonjour, c'est quoi la différence du coup entre faire indirect("une cellule") et '' égal à ''
RépondreSupprimerAutrement dit, pour l'exemple 1 par exemple, on pouvait bien faire tout simplement dans la cellule D4 : =A2.
Merci
Bonsoir,
SupprimerIci et comme c'est expliqué dans le cours, le but est de vous montrer comment bien utiliser les paramètres de la fonction INDIRECT, c'est une introduction pour ce qui va suivre dans le reste cours et qui va vous donner plus d'éclaircissement sur le rôle de cette fonction.
Très Claire cette explication
RépondreSupprimerBonjour,
RépondreSupprimerpour l'exemple 4, ça ne fonctionne que si la formule se situe dans une cellule sur la même ligne que la plage nommée.
Si je tape =INDIRECT("Fruits") en F12:F16 par exemple, il me revoit #VALEUR!
Pourquoi et comment y remédier?
Bonjour,
SupprimerLa formule fonctionne correctement. Vérifiez si vous validiez par Ctrl+SHift+Entrée ou si le nom de la plage des cellules est le même utilisé dans la formule.
Bonjour, J'apprécie le contenu et la présentation. Formidable
RépondreSupprimerJe vous en prie.
Supprimer