Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:

mécano41

XLDnaute Accro
Re : Nom des feuilles en VBA

Bonjour à tous,

Quel élan ! Merci pour toutes ces réponses rapides.

J'ai utilisé la méthode décrite par PascalXLD. C'est simple et tout fonctionne bien.

Bonne journée à tous

Cordialement
 

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)?
 

wilfried_42

XLDnaute Barbatruc
Re : Nom des feuilles en VBA

Bonjou Mj

Pascal n'etant plus la : Regarde son premier post, CODEName doit definir un nom d'objet donc :

codename ---> monnom

monnom.range("A1") = "Ok"

With monnom
.range("A1") = "Ok"
end with
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…