J'ai recherché la documentation de la fonction Excel et la recherche générale MSDN, mais je n'ai pas trouvé de moyen de renvoyer le nom de la feuille sans VBA.
Existe-t-il un moyen d'obtenir le nom de la feuille dans une formule Excel sans avoir besoin de recourir à VBA?
Pas très bien avec Excel, mais j'ai trouvé ces ici
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
et A1
peut être n'importe quelle cellule sans erreur de la feuille.
Pour le chemin d'accès complet et le nom de la feuille, utilisez
=CELL("filename",A1)
Pour les versions récentes d'Excel, la syntaxe de la formule est:
=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)
Voici un raisonnablement court qui a quelques avantages supplémentaires:
REPT
souvent ignorée.A1
Semble être un mauvais choix car il y a beaucoup plus de chance qu'il errors
par rapport à ... $FZZ$999999
.?
Est intentionnel car cela ne devrait pas être dans le chemin du fichier.=SUBSTITUTE(RIGHT(SUBSTITUTE(CELL("Filename",$FZZ$999999), "]",REPT("?", 999)), 999),"?","")
Ce qui suit isolera le nom de la feuille:
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
Aucune des formules données dans d'autres réponses ne prend en charge la casse s'il y a du caractère] dans le chemin de fichier.
La formule ci-dessous est plus complexe, mais elle peut gérer de tels cas correctement:
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1),FIND("?",SUBSTITUTE(CELL("filename",A1),"\","?",LEN(CELL("filename",A1))-LEN(SUBSTITUTE(CELL("filename",A1),"\","")))))+1,LEN(CELL("filename",A1)))
J'avais un module déjà ouvert alors j'ai fait une fonction personnalisée:
Public Function Sheetname (ByRef acell as Range) as string
Sheetname = acell.Parent.Name
End Function
Avait un crochet carré "]" dans le nom du fichier, il fallait donc modifier la formule ci-dessus comme suit pour trouver la dernière occurrence du crochet carré. Vérifié que cela fonctionne pour 0,1 ou plusieurs crochets dans le nom/chemin du fichier.
=RIGHT(CELL("filename"),LEN(CELL("filename")) - FIND("]]]",SUBSTITUTE(CELL("filename"),"]","]]]",LEN(CELL("filename"))-LEN(SUBSTITUTE(CELL("filename"),"]","")))))
Le commentaire précédent ci-dessus sur l'enregistrement du classeur en premier est également une clé, car sinon vous recevrez la #Valeur! résultat.