Obtenir un nom de feuille par formule

  • Initiateur de la discussion Initiateur de la discussion Sébastien
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sébastien

Guest
Bonjour à tous,

Dans un classeur je souhaite mettre en b1 le nom de la feuille sans passer ni par les entêtes, ni par une macro VB... Une formule existe t elle ??

Merci d'avance et bonne journée.
Séb.
 
Bonjour,

La fonction =Cellule(…) donne plein d'infos, à voir dans l'aide d'excel.
Notamment, =CELLULE("nomfichier") te donne quelque chose du genre:
C:\Me documents\XLD\[Tonfichier.xls]Feuil1
Mettons que tu ai en B1: =cellule("nomfichier")
En B2, tu mets: =CHERCHE("]";B1;1) cela donne le numéro de caractère où se trouve le ]
En B3, tu mets: = NBCAR(B1) cela donne le nombre de caractères total
et en B4, tu mets: =STXT(B1;B2+1;B3-B2) cela te donne les B3-B2 caractères contenus dans B1, à partir du B2+1ième caractère.
Cela donne donc les caractères qui suivent le ], soit le nom de la feuille.

Maintenant, en compilant tout cela, en une seule formule:
=STXT(CELLULE("nomfichier");CHERCHE("]";CELLULE("nomfichier");1)+1;NBCAR(CELLULE("nomfichier"))-CHERCHE("]";CELLULE("nomfichier");1))

Bonne journée.
 
Sébastien, il y a un petit hic:

En fait, à chaque fois qu'excel recalcule, cette formule est recalculée, mais du coup, si tu fais un calcul à partir d'une autre feuille, alors tu obtiens le nom de cette autre feuille. J'ai même réussi ainsi a mettre le nom d'une autre feuille d'un autre classeur! Et ce nom reste tant que tu n'as pas eu de recalcul sur ta feuille initiale!
Il faut donc, lorsque tu reviens sur la feuille où est cette formule, relancer un recalcul (par F9).
Sinon, on peut forcer ce recalcul à chaque fois qus ta feuille est activée, mais en VBA.

Peut-être existe-t-il une autre formule qui ne travaille pas en fonction de la feuille active?

Bonne chance.
 
Bonjour

Pour le petit problème que soulève Laurent, il suffit de rajouter à la fonction CELLULE une référence pour qu'elle ne prenne pas en compte la dernière cellule modifiée, soit =CELLULE("nomfichier";référence)

La formule devient :

=STXT(CELLULE("nomfichier";A1);CHERCHE("]";CELLULE("nomfichier";A1);1)+1;NBCAR(CELLULE("nomfichier";A1))-CHERCHE("]";CELLULE("nomfichier";A1);1))

Bon courage

Pascal
 
en fait, pour que le nom de la feuille ne change pas en fonction de la dernière cellule modifiée, il faut ajouter le paramètre référence, en lui donnant la valeur d'une cellule de la feuille (ex : A1), la fonction ci-dessus aura donc la forme suivante :

=STXT(CELLULE("nomfichier";A1);CHERCHE("]";CELLULE("nomfichier";A1);1)+1;NBCAR(CELLULE("nomfichier";A1))-CHERCHE("]";CELLULE("nomfichier";A1);1))

Mais, outre qu'elle est très lourde (mais on en a vu d'autres, n'est-ce pas Monique 🙂), cette fonction a un gros défaut, elle dépend de la version d'Excel utilisée et ne sera pas traduite automatiquement dans un Excel anglais ou néerlandais (plutôt c'est le paramètre "nomfichier" qui ne sera pas traduit), c'est pourquoi je lui préfère tout de même cette petite macro qui, insérée dans un module, permet de récupérer le nom de la feuille sans ces désagréments et agit comme une fonction Excel ordinaire :

Function NomFeuille()
Application.Volatile
NomFeuille = Application.Caller.Worksheet.Name
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
  • Question Question
Réponses
5
Affichages
93
Didierpasdoué
D
Réponses
15
Affichages
178
Réponses
4
Affichages
384
Réponses
10
Affichages
171
Réponses
3
Affichages
154
Retour