Nom de feuille modifiable

Bonjour

J'aimerais pouvoir changer le nom d'une feuille et que les changements soient pris en compte dans le code VBA.

Exemple :

J'ai une feuille "bachibouzouc" .

Dans mon code vba, j'ai de temps en temps sheets("bachibouzouc").range(xxx) etc ...

Or j'ai envie de pouvoir changer ce nom sans avoir à reprendre tout le codage. Dans une feuille donnée, j'ai crée une zone où je défini mes noms de feuilles. Par exemple, dans une cellule, j'ai tapé Bachibouzouc. Cette cellule, je l'appelle TB

Pour le nom de l'onglet de la feuille Bachibouzouc, je peux faire

Private Sub Worksheet_Activate()

ActiveSheet.Name = [TB]

End Sub

Si je change Bachibouzouc en tartanpion, dès que je clique sur l'onglet correspondant, il devient Tartanpion. Cool

Mais comme faire dans le code VBA, pour que le changement soit opérant aussi ?

Merci

Bonjour,

Peux-tu reformuler?

J'ai des difficultés à te comprendre.

Cdlt

Untilise les indice de feuille plutôt que leur nom.

C'est à dire au lieu de dire Sheets("abcd").range(xxx) tu mets Feuil1.range(xxxx).

Il me semble que ça ça ne change pas peut importe le nom de la feuille.

J'y ai pensé, mais cela ne le ferra pas, car il me faudra quand même éditer tout le code si je copie colle une feuille.

Oui mais tu le modifie une fois (en plus ça va vite en faisant remplacer tout) et apres tu es libre sur le nom de tes feuilles

EDIT:

La colonne 1 conditionne la 3 (j'ai fait que sur la 2eme ligne) avect la validation INDIRECT

Mais j'aimerai par exemple que la liste Truc apparaisse en B si j'ai choix2 en A mais que dans les autres cas je n'ai pas de liste

Bonjour le fil

Pourquoi ne pas utiliser une constante publique ?

Dans ton module principal (ou tu as tous les codes) en entête

Public Const ShtPrincipale As String = "bachibouzouc"

Ensuite tu fait un rechercher remplacer dans projet en cours

Rechercher : sheets("bachibouzouc")

Remplacer : Sheets(ShtPrincipale)

Edit : oups pas lu à fond le 1er post

Il suffit de remplacer par : Sheets([TB])

Voilà

BrunoM45 a écrit :

Bonjour le fil

Edit : oups pas lu à fond le 1er post

Il suffit de remplacer par : Sheets([TB])

Voilà

Bin j'ai essayé, c'est la première chose qui est venu à l'esprit. Mais j'ai une erreur d'exécution '13' Incompatibilité de type ...

Pour l'instant j'ai trouvé une mini piste

Dim tototo As String

tototo = Chr(34) + [TB] + Chr(34)

et après je peux appeler :

Sheets(tototo).Select

EN FAIT, CELA NE MARCHE PAS.... je ne sais pas pourquoi cela marchait tout à l'heure.

Kant1 a écrit :

Oui mais tu le modifie une fois (en plus ça va vite en faisant remplacer tout) et apres tu es libre sur le nom de tes feuilles

EDIT:

La colonne 1 conditionne la 3 (j'ai fait que sur la 2eme ligne) avect la validation INDIRECT

Mais j'aimerai par exemple que la liste Truc apparaisse en B si j'ai choix2 en A mais que dans les autres cas je n'ai pas de liste

Tu es sur que c'est pour moi ?


Kant1 a écrit :

Untilise les indice de feuille plutôt que leur nom.

C'est à dire au lieu de dire Sheets("abcd").range(xxx) tu mets Feuil1.range(xxxx).

Il me semble que ça ça ne change pas peut importe le nom de la feuille.

euh ... en fait, pourquoi pas ... mais est-il possible de changer automatiquement le codename d'une feuille ... ?

Re,

Voir fichier

Cdlt.

12ripcagou.xlsm (14.55 Ko)
Jean-Eric a écrit :

Re,

Voir fichier

Cdlt.

Merci.

Je pense que cela peut marcher ... Mais peux tu me montrer concrètement sur le fichier exemple suivant :

Dans la feuille Données, j'ai trois noms de feuilles, chaque cellule utilisée ayant un nom N.1 N.2 N.3

Je veux que le fichier démarche sur la feuille "Jean"

Si je change Jean en Arthur (dans données), et que je cliques sur l'onglet "Jean", il se met à jour...

Mais si j'enregistre, il ne démarre pas sur la feuille puisque qu'elle a changé de nom.

Merci

Bonjour,

A tester sans grande conviction.

Cdlt.

Jean-Eric a écrit :

Bonjour,

A tester sans grande conviction.

Cdlt.

Sur le principe, cela marche, mais le problème, c'est que cela doit être "valable" dans tous le classeur

Donc je peux définir

Public x As String

Mais dans ce cas là, comme faire pour que

x = [N.3]

soit valable tout le temps ?

Re,

Il est grand temps que tu expliques les choses précisément.

Questions vagues, réponses non adaptées, questions vagues, etc...

Tu prends un temps de réflexion, et tu reformules le tout de manière compréhensible.

Tu en profite pour voir l'aide Excel (VBA) sur les déclarations des variables, leurs portées, etc...

Et tu envoies un fichier représentatif de ta demande.

Cdlt.

Jean-Eric a écrit :

Re,

Il est grand temps que tu expliques les choses précisément.

Questions vagues, réponses non adaptées, questions vagues, etc...

Tu prends un temps de réflexion, et tu reformules le tout de manière compréhensible.

Tu en profite pour voir l'aide Excel (VBA) sur les déclarations des variables, leurs portées, etc...

Et tu envoies un fichier représentatif de ta demande.

Cdlt.

. Je sais ... Mais c'est dur de savoir quoi faire, quand on ne sait pas ce qui est possible ...

Le fichier est ci joint.

En fait, globalement, il fonctionne, mais je suis obligé de copier 12 (ou moins) de ligne dans chaque procédure et j'aimerais supprimer ces 12 lignes pour les mettre à une seul endroit, une fois pour toute

PL3 = [PL.3] '[...] se réfère au nom d'une cellule dans la feuille "Données"

PL4 = [PL.4] '[...] ...

PL5 = [PL.5] '[...] ...

PL6 = [PL.6] '[...] ...

CH3 = [CH.3] '[...] ...

CH4 = [CH.4] '[...] ...

CH5 = [CH.5] '[...] ...

CH6 = [CH.6] '[...] ...

PR3 = [PR.3] '[...] ...

PR4 = [PR.4] '[...] ...

PR5 = [PR.5] '[...] ...

PR6 = [PR.6] '[...] ...

''''

Merci

Hello

Manifestement mon fichier ne t'inspire pas ...

Rechercher des sujets similaires à "nom feuille modifiable"