Obtenir un nom de feuille par formule

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.
 
L

LaurentTBT

Guest
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.
 
L

LaurentTBT

Guest
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.
 
P

Pascal76

Guest
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
 
T

Ti

Guest
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
 

Discussions similaires

Statistiques des forums

Discussions
312 174
Messages
2 085 951
Membres
103 058
dernier inscrit
florentLP