contenu de variable = nom object

Pyrof

XLDnaute Occasionnel
Bonjour,

En vba, pour activer une feuille (un onglet), on a la commande sheets("Nom de ma feuille").select

Le problème est que si quelqu'un change le nom, la macro bug : normal.

Dans l'environnement vba on clique sur une feuille on a :

Feuil1(Feuil1)
Feuil2(Feuil2)
Feuil3(Feuil3)
ThisWorkBook

Si dans excel on fait renommer l'onglet en TOTO on obtient :

Feuil1(TOTO)
Feuil2(Feuil2)
Feuil3(Feuil3)
ThisWorkBook

Maintenant par vba pour activer la feuille on a les solutions :

sheets("TOTO").select
Feuil1.select

On peut changer le nom Feuil1 en sélectionnant dans l'explorer de projets puis sur F4, et on peut retrouver les noms Feuil1 et TOTO.
Si on change Feuil1 en ma_feuille

En vb on peut faire ma_feuille.select ou sheets("TOTO").select, la première solution ne pose plus de problème si on change le nom de l'onglet.

Voici enfin mon problème

ma_var="TOTO"
sheets(ma_var).select --------------> ça fonctionne

ma_var="ma_feuille"
sheets(ma_var).select --------------> ça bug

je ne peux pas écriée ma_var.select.

En fait je voudrais transformer le contenu d'un variable en nom d'Object
Voilà, ce fut long, toutes mes excuses

Ceci a pour but que dans des développements complexes, le nom apparent des onglets n'est pas utilisé dans les macros : sécurité.

Bonne journée
 

Pierrot93

XLDnaute Barbatruc
Re : contenu de variable = nom object

Re

pas sur d'avoir tout suivi, après la bataille sans doute, mais une solution pour activer une feuille à partir de son "codename" mis dans une variable :

Code:
Dim cn As String, n As Byte
n = 2
cn = "Ma_Feuille" & n
Application.VBE.ActiveVBProject.VBComponents(cn).Activate

a voir... active la feuille "toto" dont le codename = Ma_Feuille2

@+

Edition : faute de frappe dans la déclaration stringn au lieu string...
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 916
Messages
2 093 580
Membres
105 758
dernier inscrit
RIFAHI MOHAMED