Excel - Insérer nom de l'onglet dans cellule
Résolu/Fermé
bibidel
-
hugo -
hugo -
Bonjour,
Auriez-vous l'astuce pour insérer le nom de l'onglet d'une feuille de calcul Excel dans une cellule.
Merci à tous
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
Internet Explorer 6.0
34 réponses
- 1
- 2
Suivant
-
la formule qui va bien est :
=DROITE(CELLULE("nomfichier";A1); NBCAR(CELLULE("nomfichier";A1))-TROUVE("]"; CELLULE("nomfichier";A1)))
A + -
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 "-
Je suis intéressé par la formule:
pour le nom du classeur
=STXT(CELLULE("nomfichier");TROUVE("[";CELLULE("nomfichier"))+1;TROUVE("]";CELLULE("nomfichier"))-TROUVE("[";CELLULE("nomfichier"))-1)
Mais as-tu une astuce pour retirer l'extension (.xls par exemple) qui s'affiche en plus du nom du fichier ?
Merci par avance. -
-
-
Intuitivement je te dirai de faire cette formule dans chaque onglet sur une ligne masquée, puis dans l'onglet où tu veux tout voir, tu fais un tableau contenant des renvois aux contenus de tes cellules cachées dans chaque onglet...
Mais je suis tout sauf un spécialiste d'Excel, plutôt un bidouilleur, donc il y a surement mieux ! :)
Bon courage,
Galileo -
Bonjour,
N'y a-t-il pas un soucis avec la formule pour le nom de l'onglet ?
Je l'ai utilisé pour un fichier avec plusieurs onglets et ça semblait bien fonctionner sauf que je me suis aperçu qu'en fait il prend le dernier onglet ouvert. Donc si vous revenez sur l'onglet où est la formule, elle prend en compte l'onglet précédent.
Une solution ? Paramètrage ?
-
-
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 -
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))) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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 -
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 -
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 -
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 -
Bonjour
Voici une petite fonction VBA personnalisée
Function SheetName() As String
Application.Volatile
SheetName = Application.Caller.Parent.Name
End Function-
-
-
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
-
-
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 -
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 -
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-
-
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 à+
-
-
Oui, sûrement un paramétrage qcq part (word ?) qui convertit
-
=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) -
-
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-
Bonsoir seb,
La formule est la suivante à taper dans la cellule de destination et elle doit correspondre à ton "bonheur"
=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.
A +
Bibidel -
-
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. -
-
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
-
-
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 -
-
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 ?
- 1
- 2
Suivant