Set worksheet dans l'ensemble de mon projet VBA

Bonjour, petite question à vous tous. Je vous explique ce que je tente de faire :

Dans mon document, je référence plusieurs fois le nom de certaines feuilles dans mon code qui ressemble à ceci :

Dim FeuilMaster as worksheet
Dim FeuilPrincipal as Worksheet
Dim FeuilInfo as Worksheet

Set FeuilMaster = Feuil1
Set FeuilPrincipal = Feuil2
Set FeuilInfo = Feuil3

'Plusieurs lignes de codes
With FeuilMaster ....
'Faire une action
etc.

Au début, je donne un nom à mes feuilles car si je dois changer le nom de la feuil1 pour feuil4 dans mon code, j'ai juste besoin de le changer une fois dans l'entête au début et non dans tout mon code.

J'aimerais savoir s'il est possible d'effectuer les déclarations qu'une seule fois et qu'elles soient disponibles pour l'ensemble de mes feuilles, de mes modules etc. Peut-on créer une classe dans laquelle j'aurais les informations suivantes :

Dim FeuilMaster as worksheet
Dim FeuilPrincipal as Worksheet
Dim FeuilInfo as Worksheet

Set FeuilMaster = Feuil1
Set FeuilPrincipal = Feuil2
Set FeuilInfo = Feuil3

et qui me permettrait de réutiliser ces informations dans tout mon projet VBA? Si oui, comment ?

Merci beaucoup

Martin Truchon

Bonjour,

Tu déclares tes variables feuilles en variables publiques dans un module standard :

Public FeuilMaster as Worksheet

etc.

NB- Tes affectations n'utilisent pas le nom de la feuille (mais son nom de code [CodeName]) : changer les noms de feuilles n'a donc aucune incidence sur ton code.

Cordialement.

Merci de la réponse rapide !

Le problème, c'est qu'il m'arrive parfois de changer le nom de la feuille (en passant par la fenêtre des propriétés) afin de faciliter l'identification de certaines feuilles particulières ! Quand j'écris mon code, je n'utilise pas le numéro de référence de la feuille (ou son numéro d'index), mais bel et bien le nom de de la feuille qui apparaît dans les propriétés.

Y'a t-il moyen de Set une valeur constante qui sera la même pour tout les éléments du projet VBA ?

Merci

Sois précis : le nom apparaît dans la feuille de propriété sous Name, le nom de code lui, apparaît sous (Name) [Name entre parenthèses]. Lequel changes-tu ?

Il n'y a guère intérêt à changer le CodeName qui n'apparaît pas à l'utilisateur, et permet de ne pas se préoccuper des changements du nom qui apparaît dans l'onglet.

C'est le (name) , donc le nom de code!

L'intérêt que j'ai à le changer est que j'ai beaucoup de feuille dans mon programme et certaines qui sont prioritaires se retrouvent à la fin de la liste et il est donc plus long de la retrouver (Par exemple, la feuil52 se retrouve en bas de ma liste), j'aimerais la renommer afin de la monter dans cette même liste.

Je ne vois toujours pas en quoi modifier le nom de code pourrait intéresser l'utilisateur !

Je maintiens que,ce faisant, tu te crées des difficultés plutôt que d'en résoudre.

Bonsoir,

J'ai le doute d'avoir bien compris la demande mais dans le doute...plutôt que de se baser sur le nom de la feuille pourquoi ne pas passer par la couleur de l'onglet ?

Tab.ColorIndex = ( si je dit pas de connerie sur le code à utiliser, je vérifierai demain matin comment je l'utilise )

En gros selon la couleur de l'onglet de la feuille, tu appliques telle ou telle action.

Je m'en sert pour faire des listing de débit de pièces, ça me permet de limiter ma macro aux feuilles voulus, sans avoir à me soucier des noms. Attention il faut rester rigoureux sur les couleurs car cela peut vite poser des soucis

Cdt

Harissa23

bonsoir

Alors utiliser autre syntaxe

Dim FeuilMaster As Worksheet
Dim FeuilPrincipal As Worksheet
Dim FeuilInfo As Worksheet
'nom de la feuille ( interface d utilisateur)
Set FeuilMaster = Worksheets("nom de la feuille1") 'nom de la feuille ( interface d utilisateur)
Set FeuilPrincipal = Worksheets("nom de la feuille2")
Set FeuilInfo = Worksheets("nom de la feuille3")

Bonjour,

Voila comment je traite les actions que j'ai à faire sur une ou plusieurs feuilles sans avoir à me soucier des noms

For Each sh In ActiveWorkbook.Sheets
sh.Activate

If sh.Tab.ColorIndex = 8 Then
End if

Next sh

Cdt

Harissa23

Rechercher des sujets similaires à "set worksheet ensemble mon projet vba"