Déclaration variable public/private

Bonjour à tous,

Je suis à la recherche de quelqu'un qui pourrait m'expliquer très précisément le fonctionnement des déclaration de variables public/private (et éventuellement global) car je n'ai pas très clairement compris où est-ce que ces variables gardent leur valeur. Par exemple les déclarations dans une procédures sub private ne peuvent pas sortir de cette procédure. Je cherche en fait à mettre une variable qui a une valeur dans TOUT le projet (Modules, Feuilles et Microsoft Excel Objets) avec une valeur par défaut à l'ouverture du classeur. J'ai essayé de déclarer en public dans une procédure workbook_open mais la variable est vide quand on l'appelle dans un module ou dans userform. Comment faire pour déclarer une variable dont je puisse récupérer la valeur et la modifier dans n'importe quelle partie du projet ?

Merci d'avance

Destrutios

Bonjour,

je ne suis pas trop au fait des variables...

Ceci dit je crois que cela fonctionne :

Vous créez un module, que vous pouvez renommer ou pas en "initialisation" et dedans vous inscrivez ceci :

Public Ma_Variable_Accessible_De_Partout As String

En effet, les déclarations de variable hors Sub dans les modules sont lancées à l'ouverture du classeur, nul besoin qu'elles se trouvent dans le module Open de ThisWoorbook.

@ bientôt

LouReeD

Et pour lui donner une valeur initiale, comment faire ? Car le compilateur me crie dessus quand j'essaie de donner une valeur à la variable en dehors d'une procédure

Dans Thiswookbook Open

une fois définie en "global" ou "Public" elle est accessible de partout, donc dans Open vous pouvez mettre :

Ma_Variable_Accessible_De_Partout = "Loureed"

@ bientôt

LouReeD

Merci ça marche ! Mais maintenant j'ai un autre petit problème : lorsque j'essaie d'appeler cette variable dans un module il me dit Erreur compilation, constante requise, comme si je ne pouvais utiliser des valeurs d'autres modules que si elles étaient constantes


Je viens de me rendre qu'un détail était important : j'utilise les variables public dans la déclaration d'un tableau, dans ses dimensions :

Dim tabl2(lMax + 1, cMax + 1) As Integer

où lMax et cMax sont les deux variables public et je ne sais pas comment faire pour contourner le problème

Bonsoir,

essayez de déclarer votre tableau en "standard"

Dim tabl2(0,0) As Integer

puis dans le module concerné

ReDim tabl2( lMax + 1 , cMax + 1)

Attention ReDim efface toutes les données du tableau, mais vous pouvez regardez l'aide de VBA

Autre chose, si le tableau correspond aux lignes et colonnes des feuilles Excel, soyez sur qu'elles n'iront pas au-delà de 32000 environ car vous mettez Integer... Depuis Excel 2007 les lignes peuvent aller jusqu'à 1 046 000 et des brouettes donc le "As Long" permet d'être sur de ne pas avoir de problème de ce coté...

@ bientôt

LouReeD

Génial merci !

Et n'oubliez pas :

@ bientôt et passez de bonnes fêtes de fin d'année !

LouReeD

Rechercher des sujets similaires à "declaration variable public private"