Utilisation d’une valeur de cellule comme nom de feuille de calcul dans une formule (Microsoft Excel)
Roy a une formule qui fait référence à une cellule dans un autre classeur, comme = ‘[http://www.formville.com/C4_free-timesheets.html [Feuille de temps] s.xlsm] Semaine01′! L6.
Il aimerait que la formule récupère le nom de la feuille de calcul (Semaine01) dans une autre cellule, afin que la formule devienne plus générale. Roy se demande comment il devrait changer la formule pour qu’elle puisse utiliser le nom de la feuille de calcul dans la cellule B9.
Le moyen le plus simple de gérer cela consiste à utiliser la fonction de feuille de calcul INDIRECT. Essentiellement, il prend une adresse de cellule et l’utilise comme « pointeur », puis récupère la valeur de cette cellule. Par exemple, vous pouvez utiliser ce qui suit:
=INDIRECT(L6)
Il en résulte que la valeur de la cellule L6 est extraite et utilisée comme pointeur vers ce que vous voulez vraiment. Ainsi, si la cellule L6 contient « A7 », alors la fonction renvoie la valeur de ce qui se trouve dans la cellule A7. Fait intéressant, si vous invoquez la fonction de cette manière, vous obtenez un résultat différent:
=INDIRECT("L6")
Le résultat est le contenu de la cellule L6 au lieu d’utiliser le contenu de la cellule L6 comme pointeur.
Avec ces informations, vous pouvez facilement créer une adresse qui fonctionnera correctement avec la fonction INDIRECT:
=INDIRECT("'[Timesheets.xlsm]" & K2 & "'!L6")
Cette formule suppose que le nom de la feuille de calcul souhaitée est stocké dans la cellule K2. Si un nom de feuille de calcul valide n’est pas dans cette cellule, la formule renvoie une erreur #REF.
Un « piège » important avec cette approche est que vous devez vous assurer que le classeur (Timesheets.xlsm) est ouvert. INDIRECT n’atteindra pas un classeur non ouvert. S’il n’est pas ouvert, vous obtiendrez une erreur #REF au lieu de la valeur souhaitée.
Si vous souhaitez rendre la formule encore plus générale, vous pouvez extraire le nom du classeur, le nom de la feuille de calcul et le référentiel de cellule tous des cellules de votre feuille de calcul, comme de cette manière:
=INDIRECT("'[" & K1 & "]" & K2 & "'!" & K3)
Dans ce cas, K1 contiendrait le nom du classeur (Timesheets.xlsm), K2 contiendrait le nom de la feuille de calcul (« Week01 ») et K3 contiendrait la cellule souhaitée (« L6 »).
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (6069) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.