Déclarer variable pour toutes les macros et modules

Bonjour,

Je voudrais pour simplifier mon texte et pour m'éviter de changer plusieurs fois les mêmes noms en cas de changement créer une petite macro qui serait appelée à chaque début de macro, cette macro servirait d'initialisation de mes feuilles. J'ai donc créé ma petite macro :

Sub init()
Dim p1, p2, p3 as worksheet
p1=Sheets("Feuille1")
p2=Sheets("Feuille2")
p3=Sheets("Feuille3")
End Sub

Et à chaque début de sub j'appelle : call init

Sauf que quand je met par exemple p1.activate, cela me met un message d'erreur variable objet non défini ou d'autre en référence à l'objet.

Si quelqu'un avait une solution pour réduire mes lignes de codes je serais bien preneur !

Je vous remercie par avance.

Bonjour

Un extrait de ton fichier serait le bienvenu (avec explications)

Cordialement

Mon fichier est énorme donc impossible à déposer ici mais j'ai simulé ce que je veux faire sur ce fichier. Je te remercie

Bonjour…

avec une bonne déclaration (en Public dans un Module standard avant toute macro)

Public pa As Worksheet, pb As Worksheet, pc As Worksheet
Sub init()
    Set pa = Sheets("a")
    Set pb = Sheets("b")
    Set pc = Sheets("c")
End Sub

Ah oui exact merci...

Hier j'avais mis ce set et ce matin je savais plus pourquoi donc je l'ai enlevé voilà pourquoi je l'avais mis...

Désolé pour ma question bête mais j'ai appris le vba seul et au compte goutte donc j'en apprend tout les jours !

Merci beaucoup et bonne fin d'après-midi.

Et petite question..

Si je veux faire de même avec un Workbook

Public pa As Worksheet, pb As Worksheet, pc As Worksheet, wbk1 as workbook
Sub init()
    Set pa = Sheets("a")
    Set pb = Sheets("b")
    Set pc = Sheets("c")
    Set wbk1 = Workbooks("AA.xlsm")
End Sub

Si je veux appeler la feuille a du workbook AA dans une autre macro si j'écris wb1.pa.(...), j'ai l'erreur propriété ou méthode non gérée par cet objet.

Sub Valider() 

Call init 

wbk1.pa.shapes(1-OK).visible = true 

End sub

Comment est ce que je dois l'écrire pour que ce soit compris ?

Merci d'avance pour vos réponses

Bonjour,

C'est vraiment le truc qui ne sert qu'à se compliquer la vie !

Tu as des CodeName sers toi en !

Le CodeName est le nomVBA de chaque feuille. Il se modifie sur la première ligne de la fenêtre des propriétés...

Dans le classeur ci joint les feuilles sont nommées Ws1, Ws2, et Ws3, le Classeur est TWB

Je te déconseille des noms trop courts : 3 lettres me semblent un minimum pour éviter des recherches compliquées ensuite...

95democodename.xlsm (9.24 Ko)

Au lieu d'utiliser des N° utilise 3 lettres WsA, WsB, WsC, WsP qui peuvent facilement avoir un caractère mnémonique

Ex :

WsA pour Feuilles Accueil

WsB pour Feuille BD

WsC pour feuille Calcul

WsP pour feuille Param

A+

J'étais absolument pas au courant que cela existait...

Tu m'enlèves une sacrée épine du pied et va pouvoir vachement faciliter mes codes ! Moi qui m'embêtait à créer des variables pour éviter le changement de nom des feuilles.

Merci pour ton aide et ta réponse rapide !

Rechercher des sujets similaires à "declarer variable toutes macros modules"