Nom des feuilles en VBA

mécano41

XLDnaute Accro
Bonjour,

Quelqu'un pourrait-il me dire s'il est possible de désigner les feuilles dans le code de façon à ce qu'un utilisateur puisse en modifier les noms dans les onglets sans altérer le fonctionnement.

Worksheets(2) ne fonctionne plus si l'on change l'ordre des onglets.
Si les feuilles sont nommées "Résultats", "Calcul"... il subsite dans la colonne "Projet" un nom Feuil1, Feuil2...je pensais qu'en utilisant ce nom cela fonctionnerait mais ce n'est pas le cas.

Je n'ai rien trouvé là-dessus dans un livre, ni dans l'aide, ni en recherchant ici.

Quelqu'un aurait-il la solution ?

Merci d'avance

Cordialement
 

Luki

XLDnaute Accro
Re : Nom des feuilles en VBA

Bonjour Mécano,

Tu peux utiliser la propriété CODENAME de la feuille pour y faire référence.

Mais attention ce n'est utilisable qu'en lecture de propriété.

Quand tu ajoutes une feuille : name="feuil4" ; codename= "feuil4"
si tu la renommes : name ="résultat" ; codename="feuil4".

Bonne journée

Edit : Quand je dis que le codename est en lecture seule, ça veut dire que tu ne peux pas le changer par le code. Il faut le faire à la main dans la fenêtre propriétés, comme le dit Pascal.
 
Dernière édition:

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Nom des feuilles en VBA

Bonjour

Perso quand je veux que mes users puissent changer le nom des feuilles je renomme toutes mes feuilles au niveau du codename comme le dit luki

exemple
wsBase
wsImmeubles
wsFournisseurs

et ensuite dans le code tu peux faire ainsi

wsImmeubles.range("A1")="toto"
 

wilfried_42

XLDnaute Barbatruc
Re : Nom des feuilles en VBA

Bonjour mecano

En Vba, tu peux appeler un feuile soit par sa position, soit par son nom

Sheets(1)
Cheets("Mafeuille")

Maintenant, si tu laisses la choix de modifier un nom ou la position c'est vrai que ca se complique

Il ne te reste plus qu'à identifier la feuille à l'interieur meme de la feuille :
exemple : range("A1") = "BlaBla" en interdisant l'acces a cette cellule

A chaque activation et desactivation d'une feuille ty y met ton code d'identification

a chaque ouverture de classeur de classeur, tu lance l'activation de chaque feuille

Comme cela, dans tes macros, tu passes les feuilles en revue et tu testes la cellule et son code


Edit : Bonjour luki, pascal ---> merci pour l'info, je connaissais pas
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Nom des feuilles en VBA

Bonjour à tous

Et merci Pascal, cela ma l'air intéressant comme façon de faire pour éviter que si quelqu'un change le nom des feuilles les macros fonctionnent toujours.

Comme quoi, avec Excel, on en apprend tous les jours.

Mais comment faites vous au niveau de la programmation (sur l'aide d'Excel ce n'est pas très explicite)?
 

mécano41

XLDnaute Accro
Re : Nom des feuilles en VBA

Une autre question liées aux noms de feuilles :

Je suis dans le code une application où je demande l'adresse du début d'une plage, située dans un autre classeur ouvert, en cliquant dans la cellule choisie au moyen d'un Inputbox. J'obtiens donc un Range "DébutTableauàImporter"

Je souhaite avoir le nom (nomclasseur + nomfeuille) en vue d'activer cette feuille.

Comment fait-on pour extraire cela du range "DébutTableauàImporter" (en dehors d'une analyse du texte)?

- DébutTableauàImporter.Address(, , , True) me donne l'adresse complète

- DébutTableauàImporter.Address(, , , True)).Worksheet.Name me donne juste le nom de la feuille

Merci d'avance

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
315 090
Messages
2 116 106
Membres
112 661
dernier inscrit
ceucri