Déclaration de feuilles en Public

Bonjour à tous !

Je souhaiterais pouvoir définir des Worksheets en public (ça va jusque là) mais j'aimerais aussi attribuer ws1 et ws2 au nom de mes feuilles.

Dim ws1, ws2 as Worksheets

Set ws1  = Sheets("Protox")
Set ws2 = Sheets("Extrapolation")

Sub katchaow '...soit le reste des procédures qui utilisent toutes ou presques ws1 et ws2.

Est-ce qu'il existe un moyen de faire quelque chose de la sorte ? Car quand je fais ça, j'ai une erreur me disant que je suis hors procédure (ce que je sais bien, mais je veux pouvoir attribuer mes ws1 & ws2 aux feuilles avant d'entamer les autres procédures).

Merci d'avance à tous ceux qui me liront :)

Bonjour, mets tes variables dans une autre sub. ( exemple Subinit )

Ensuite en début de ta macro Sub katchaow tu appels ta Subinit.

Call Subinit.

Bojur,

Ce n'est pas une bonne idée.

L'emplacement normal pour les déclarations c'est à l'intérieur des sub ou des fonctions.Se déclarent en tête en dehors de toute macros quelques déclarations qui ne peuvent aller ailleurs. Tout le reste c'est des astuces ou du blabla de fainéant qui devra être corrigé tôt ou tard. Prenez de bonnes habitudes immédiatement :

Quand à instancier des Ws, Utilisez les CodesNames : C'est tout aussi efficaces et pour les débutants ça suffit dans 99 % des cas !

A+

Bonjour à tout les deux, et merci de vos réponses.

Galopin, est-ce que tu pourrais développer sur les CodesNames s'il te plait ? Comment les utiliser par exemple, ça m'aiderais bien. Je cherche de mon propre coté en même temps.

Salut,

Pour le dimensionnement tu le fait dans un module, l'affectation se fait dans une sub ou Méthode exemple WorkBook_Open, mais je suis d'accord avec Galopin il y a plus efficace, on ne dois utiliser les variables publiques que si vraiment nécessaire.

Pour les CodeName c'est la propriété Name de la feuille ci-dessous Feuil1

image

Pour l'appel tu peux faire tout simplement :

image

Ca marche, merci bien du retour. Je vais creuser mais je pense que comme tu dit, je ne vais rien mettre en Public. Si j'ai bien compris, cela ralentit beaucoup le programme non ? En tout cas encore merci.

Re,

Ralentir, je ne dirais pas cela c'est surtout des règles de programmation que l'on essais d'appliquer le plus possible.

Bonjour,

Le Code Name c'est celui qui figure dans VBAProject et sur la première lignes des propriétés de la feuille. Ce nom n'est visible que dans VBA et indépendant du nom visible par l'utilisateur. Donc si tu baptises ta feuille Ws1. ou WsA ou WsP.

Tu peux très bien ensuite utiliser ce nom (dans VBA) au lieu Worksheet("Blabla") avec une double sécurité, inconnu de l'utilisateur ce nom ne peut être modifié par inadvertance.

On vois bien sur l'illustration que Ws3 la Worksheet("CM3") est utilisé dans VBA sans aucun dim ni Set : With wS3...

codename

Dans la plupart des cas cela dispense d'instancier la feuille et identifie parfaitement la cible...
A+

Super, merci Galopin pour l'explication. Je fonce donc modifier mon code.

Et jean-paul, merci pour l'éclaircissent. Je vais faire en sorte d'y faire attention.

Rechercher des sujets similaires à "declaration feuilles public"