Menu

Excel - Insérer nom de l'onglet dans cellule [Résolu/Fermé]

-
Bonjour,

Auriez-vous l'astuce pour insérer le nom de l'onglet d'une feuille de calcul Excel dans une cellule.

Merci à tous
Configuration: Windows XP
Internet Explorer 6.0
Afficher la suite 

20/34 réponses

Meilleure réponse
approuvée par Jean-François Pillou le 6 Dec 2018
103
Merci
la formule qui va bien est :

=DROITE(CELLULE("nomfichier";A1);
NBCAR(CELLULE("nomfichier";A1))-TROUVE("]";
CELLULE("nomfichier";A1)))


A +

Dire « Merci » 103

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 56028 internautes nous ont dit merci ce mois-ci

Mais du coup, comment on fait pour incrémenter et trouver tous les noms des autres onglets ? Le but étant d'automatiser cela
Messages postés
15081
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
4717
87
Merci
bonjour

Sans faire de macro, c'est tout à fait possible avec cette formule :
pour le nom de l'onglet

=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;20)

ou bien sûr il est possible de remplacer la longueur 20 
en calculant la bonne longueur mais le jeu en vaut-il la peine ?
=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;NBCAR(CELLULE("nomfichier"))-TROUVE("]";CELLULE("nomfichier")))

pour le nom du classeur
=STXT(CELLULE("nomfichier");TROUVE("[";CELLULE("nomfichier"))+1;TROUVE("]";CELLULE("nomfichier"))-TROUVE("[";CELLULE("nomfichier"))-1)

et le chemin complet
=CELLULE("nomfichier")


ps : l'affichage est incorrect car à la place de &.q.u.o.t.; il faut "
eriiic
Messages postés
22292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 janvier 2019
7139 -
Bonjour,

dans ce cas voir ici

eric
bonjour,

SI je peux glisser une correction sur la formule donnée, il manquait un argument sur la fonction trouve :
=STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1);1)+1;30)

Merci
Merci pour vos idées !
juste l essentiel : merci auteur.
Messages postés
31
Date d'inscription
mercredi 28 novembre 2007
Dernière intervention
7 juillet 2011
24
12
Merci
Bonjour seb,
Voici la formule qui fonctionne dans une cellule, il me semble qu'elle corresponde à votre "bonheur" :

=STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;20)

A +
Bibidel
Messages postés
22292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 janvier 2019
7139
9
Merci
Tu as fais exactement ce qu'il fallait faire, ajouter la référence de cellule qui est optionnelle, et comme ça tu pointes sur une cellule de ta feuille (au lieu de la feuille active...).
Tu peux laisser A1 dans chaque formule (pas de lien entre le 2 de A2 et le 2 de feuil2) et donc pas d'incrémentation à avoir, c'est la même formule sur toutes les feuilles.
Et ajoute le également dans le 1er CELLULE(...;A1) que ça fasse plus propre
eric
9
Merci
Bonjour,

Pour que la formule fonctionne dans un classeur avec plusieurs onglets, il faut faire une référence à une cellule de la feuille

=STXT(CELLULE("nomfichier";B1);TROUVE("]";CELLULE("nomfichier";B1))+1;NBCAR(CELLULE("nomfichier";B1))-TROUVE("]";CELLULE("nomfichier";B1)))
Messages postés
22292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 janvier 2019
7139
5
Merci
Bonjour,

D'accord globalement avec dandan, et pour avoir l'onglet actif et non plus la feuille 1 il faudrait :
Cells(1, 1) = ActiveSheet.Name

et pour avoir tous les noms faire une boucle:
Sub nom()
For Each sh In Sheets
i = i + 1
Cells(i, 1) = sh.Name
Next sh
End Sub

Sinon c'est possible avec une formule à condition d'être dans une autre feuille:
ex dans feui2 saisir:
=CELLULE("adresse";Feuil1!A2) => [Classeur1]Feuil1!$A$2
Reste à traiter la chaine pour extraire son nom.

eric
3
Merci
bonjour

bonça marche bien , c'est tout à fait possible avec cette formule qui donne
le nom de l'onglet

=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;20)

ou bien sûr il est possible de remplacer la longueur 20 en calculant la bonne longueur mais le jeu en vaut-il la peine ?
comme suivant;

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

et le chemin complet
=CELLULE("nomfichier
Messages postés
15081
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
4717
2
Merci
bonjour

Elles fonctionnent bien mais il y a une erreur d'affichage sur le site : regardes le PS

Faut remplacer "&.q.u.o.t.;" (les points intercalés pour affichage) par guillemet simplement.
J'essaie à nouveau
=STXT(CELLULE("nomfichier");TROUVE("[";CELLULE("nomfichier"))+1;TROUVE("]";CELLULE( "nomfichier"))-TROUVE("[";CELLULE("nomfichier"))-1)

PS : toujours pas bon... cela passe sur deux lignes et il faut grouper les deux sur la même cellule
Messages postés
31
Date d'inscription
mercredi 28 novembre 2007
Dernière intervention
7 juillet 2011
24
1
Merci
Merci encore à Eric et gbinforme

Voilà comment j'ai résolu mon souci ponctuellement mais je cherche mieux :
Ce n'est pas excellent mais je ne sais pas incrémenter (sans macro) le n° de la feuille dans le classeur donc, pour chaque cellule de chaque feuille je modifie la formule en modifiant ("nomfchier",A1) pour la feuille 1 ("nomfichier",A2) pour la seconde, etc...
Le tout est de ne pas déplacer les feuilles.....

=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier";A1))+1;20) pour la feuille 1

=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier";A2))+1;20) pour la feuille 2

et ainsi de suite...
A bientôt
Bibidel
Messages postés
31
Date d'inscription
mercredi 28 novembre 2007
Dernière intervention
7 juillet 2011
24
1
Merci
La formule est la suivante à taper dans la cellule de destination.

=STXT(CELLULE(''nomfichier'';A1);TROUVE('']'';CELLULE(''nomfichier'';A1))+1;20)

20 correspond aux nb de car maxi du nom de l'onglet, on peut lui donner la valeur que l'on veut.

Bididel
Messages postés
22292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 janvier 2019
7139
1
Merci
Oui, sûrement un paramétrage qcq part (word ?) qui convertit
1
Merci
=STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;20)

Cette formule ne fonctionne pas sous Microsoft Office 2007,

Celle-ci oui...

=STXT(CELLULE("nomfichier",A1),TROUVE("]",CELLULE("nomfichier",A1))+1,20)
gbinforme
Messages postés
15081
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
4717 -
Cela dépend de tes paramètres régionaux : tu dois avoir la même chose sur les autres options.
Messages postés
22292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 janvier 2019
7139
1
Merci
Bonsoir,

Réponse au post 54.
Pour lister tous les noms d'onglets le classeur d'abord être enregistré puis :
"insertion / nom / définir..."
'nom dans le classeur :' nom_feuilles
'Fait référence à :' =ALEA()*0&TRANSPOSE(LIRE.CLASSEUR(1))
Valider

Sur la ligne 1 d'une feuille saisir :
=STXT(INDEX(nom_feuilles;LIGNE());CHERCHE("]";INDEX(nom_feuilles;LIGNE()))+1;30)
à recopier vers le bas.

Les #REF! des feuilles inexistantes peuvent être éliminés par un test supplémentaire si besoin (mais alourdissement de la formule)

eric
0
Merci
Bonjour

Voici une petite fonction VBA personnalisée

Function SheetName() As String
Application.Volatile
SheetName = Application.Caller.Parent.Name
End Function





Utilsfr
http://utilsfr.new.fr
Applications, Utilitaires, Macros, Fonctions, Formulaires, Graphiques Excel
gbinforme
Messages postés
15081
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
4717 -
bonjour néné

à part faire de la pub pour vendre tes classeurs, cela sert à quoi ton message sur un sujet résolu ?


Faudrait peut-être rapidement arrêter ce procédé malhonnête et hors charte.
eriiic
Messages postés
22292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 janvier 2019
7139 -
C'est vrai qu'on peut considérer que tout avait été dit sur le sujet et que ton intervention n'a rien apporté de plus...
eric
merci néné pour ton poste c'est exactement ce que je cherchais, moi j'avais cell.parent.name au lieu de Application.Caller.Parent.Name, ce qui avait pour conséquence un nom qui se répétait sur tous les onglets à l'identique.
Là c'est parfait ! et ne recopie pas un résultat à l'identique sur tous les onglets
Messages postés
31
Date d'inscription
mercredi 28 novembre 2007
Dernière intervention
7 juillet 2011
24
0
Merci
MERCI Ériiiiiiiiic ! Que la vie semble simple, après !
0
Merci
Bonjour,
j'ai parcouru votre discussion en pensant avoir trouvé mon bonheur :
je recherche un fonction qui me permettra d'afficher dans n'importe quelle cellule de ma feuille le nom de l'onglet de cette feuille.
j'ai copié la formule donnée mais elle ne fonctionne. Ai je bien compris l'interet de votre formule ? Si oui pourquoi ne fonctionne t elle pas ? Sinon est il possible possible de faire ce que je souhaite ?
merci beaucoup,
seb
> Pascal -
Je confirme la remarque de bibidel qui dit que cela ne fonctionne pas lorsqu'on colle ce genre de formule dans plusieurs onglets du meme classeur.
Concretement, je souhaite voir par ex dans la cellule A1 de chaque onglet, le nom de l'onglet.
Si je colle la formule =DROITE(...) ou la formule =STXT(...) dans chacun des onglets, je verrai s'afficher la même valeur partout, en l'occurrence le nom de l'onglet depuis lequel j'aurai activé la touche F9 de recalcul.

Cette formule ne repond donc pas au besoin dans la configuration que j'ai décrite.
> c035145 -
Il ne faut pas copier-coller la formule, il faut la saisir dans chaque cellule de destination de chaque onglet.

=STXT(CELLULE(''nomfichier'';A1);TROUVE('']'';CELLULE(''nomfichier'';A1))+1;20)

Et, normalement, ça fonctionne.
à+
eriiic
Messages postés
22292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 janvier 2019
7139 > bibidel -
Salut bibidel,
y'avait longtemps... :-)
Et je ne sais pas ce qu'il se passe avec toi mais tu as toujours dans la formule 2 simples quotes ' au lieu d'une double quote "
=STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;20)
Incrite ainsi on doit pouvoir la copier-coller
Bonne année
eric
ok allons un peu plus loin:
j'ai les onglets només: s01, s02, s03 ... (pigé?)
pour afficher le nom de ces onglet dans une cellule du même onglet c'Est parfait votre cellule.
mais j'ai aussi un ongle sommaire ! dans lequel je fait référence à tous les autre onglets !! j'aimerais bien afficher le nom de tous ces autres onglet dans cet onglet principale !!

quelqu'un connait la solution !??

MERCI
La solution a été donné par néné
Messages postés
31
Date d'inscription
mercredi 28 novembre 2007
Dernière intervention
7 juillet 2011
24
0
Merci
La formule est la suivante à taper dans la cellule de destination

=STXT(CELLULE(''nomfichier'';A1);TROUVE('']'';CELLULE(''nomfichier'';A1))+1;20)

20 correspond aux nb de car maxi du nom de l'onglet, on peut lui donner la valeur que l'on veut.

Bibidel
Messages postés
22292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 janvier 2019
7139
0
Merci
Bonsoir,

Je peux jouer aussi ?

=STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;20)


Alors bizarrement cette formule est exactement la même que la tienne bibidel, mais si je copie/colle la tienne j'ai également une erreur (??)
J'ai beau regarder et je ne vois pas la différence. Si, une toute petite sur la longueur comme si un caractere était légèrement plus large...
Donc j'ai collé sous forme de code. Si tjs des pb je conseille à SebastienC44 de ressaisir dans excel ce qui ce trouve entre les "..." avec les " y compris, même pour "[". A-priori c'est là que ça bugue.
Bizarre, bizarre...

eric
bibidel
Messages postés
31
Date d'inscription
mercredi 28 novembre 2007
Dernière intervention
7 juillet 2011
24 -
Bonsoir Eric,
Je suis ravie de te retrouver !

Il faut absolument retaper la formule avec les bonnes " "
J'ai eu le même problème.
Gag non ?
A +
Bibidel
eriiic
Messages postés
22292
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 janvier 2019
7139 > bibidel
Messages postés
31
Date d'inscription
mercredi 28 novembre 2007
Dernière intervention
7 juillet 2011
-
raviE ? Ahhh, c'est une bibidel..
C'est vrai que c'est vraiment une question pleine de rebondissements.
Ca marche, ça marche plus, ça marche, ça marche plus
Au fait tu la remets en résolue ou on attend le prochain rebondissement ? ;-)
bonjour
en consultant les resolus du forum (pour essayer de m'ameliorer) j'ai essayé de mon coté de repondre a la
question de bibbel chez moi ça marche avec cela :
Private Sub Worksheet_Activate()
[a1] = ActiveSheet.Name
End Sub
pouvez-vous me dire si cette solution repond au post n° 1 de bibbel et ,si elle est incongrue par rapport aux solutions apportées
merci et à+
Messages postés
31
Date d'inscription
mercredi 28 novembre 2007
Dernière intervention
7 juillet 2011
24
0
Merci
D'accord Eriiic ! pssssssss je suis démasquéE
A +
SebastienC44
Messages postés
3
Date d'inscription
jeudi 7 juin 2007
Dernière intervention
13 décembre 2007
-
Salut bibidel,
je n'y arrive pas, meme en recopiant ce qui est ecrit entre"" y compris "" ?
cette formule fonctionne t elle qq soit la version d'excel ?

Seb
Messages postés
3
Date d'inscription
jeudi 7 juin 2007
Dernière intervention
13 décembre 2007
0
Merci
Bonjour et merci pour vos nombreuses reponses. J'ai copié la formule dans une cellule de la feuille1, mais elle ne fonctionne pas (#VALEUR!). J'ai ensuite lu qu'il fallait tout recopié ce qui était entre "", mais toujours rien ?
Y a t il une astuce qui m'echappe ?