
Formule générique
=INDIRECT(sheet&"!"&CELL("address",A1))
Sommaire
Pour incrémenter une référence créée sous forme de texte dans la fonction INDIRECT, vous pouvez utiliser la fonction CELL. Dans l'exemple illustré, la formule en D5 est:
=INDIRECT($B$5&"!"&CELL("address",A1))
Quels incréments à mesure que la formule est copiée.
Explication
Considérez une simple référence dynamique à Sheet2 en utilisant INDIRECT dans une formule comme celle-ci:
=INDIRECT($B$5&"!"&"A1"))
Si nous changeons le nom de la feuille dans B5 en un autre nom (valide), INDIRECT renverra une référence à A1 dans la nouvelle feuille.
Cependant, si nous copions cette formule dans la colonne, la référence à A1 ne changera pas, car "A1" est codé en dur sous forme de texte.
Pour résoudre ce problème, nous utilisons la fonction CELL pour générer une référence de texte à partir d'une référence de cellule régulière:
CELL("address",A1)
Avec "adresse" comme premier argument et A1 comme deuxième argument, la fonction CELL renvoie une chaîne comme "$ A $ 1". Étant donné que A1 est une référence de cellule régulière, il s'incrémentera normalement lorsque la formule est copiée dans la colonne. Le résultat dans D5: D9 est une série de formules comme celle-ci:
=INDIRECT("Sheet2!$A$1") =INDIRECT("Sheet2!$A$2") =INDIRECT("Sheet2!$A$3") =INDIRECT("Sheet2!$A$4") =INDIRECT("Sheet2!$A$5")
Dans chaque cas, INDIRECT résout chaque chaîne de texte en une référence et Excel renvoie la valeur à la cellule donnée dans Sheet2.
Remarque: INDIRECT et CELL sont des fonctions volatiles et recalculées à chaque changement de feuille de calcul. Cela peut entraîner des problèmes de performances dans les feuilles de calcul plus complexes.