Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Creation d'une variable super globale au projet

6 réponses
Avatar
Florent149
Tout est dans le titre.



Meuuuuh non j'deconne!

Bonjour!

Reprenons un peu de serieux. J'ai besoin dans mon projet Vba d'une variable
(un entier) accessible a toutes les procedures et modifiable a tout moment.
Je l'ai declaré de cette facon dans la partie "General" de "ThisWorkbook":

Public i As Integer

Et je l'initialise a l'ouverture du workbook:

Private Sub Workbook_open()
i=16
End sub


Ensuite dans des boutons d'userforms, j'ai des incrementations du type i = i
+ 1
Le probeme c'est qu'en regardant la valeur de i a tout moment, je vois
qu'elle retombe a 0 apres une premiere action, alors qu'il n'y a nulle part
ou je lui dis de prendre 0 pour valeur.
Je pense que le probleme vient de la facon dont je l'ai declaree et
initialisee mais meme en bidouillant ca ne marche pas. Etant loin d'etre une
superstar du Vba, je fais appel a votre experience et vos competences pour
m'aider.
Merci d'avance et bonne journee!

--
Flo

6 réponses

Avatar
CAP2
Salut,

essaie de faire ta déclaration Public i as Interger dans un module Standard,
et non dans ThisWorkbook...

Ca marche ?

CAP2
Avatar
Florent149
Salut CAP2

Merci de ta suggestion, j'ai essaye et la valeur de mon i retombe encore a 0
apres la premiere procedure qui est censee mettre i= i+1.
Mais je vais laisser la declaration dans un module standard car en la
mettant dans This workbook ca me faisait une erreur des le depart dont je ne
m'etais pas rendu compte. D'autres idees?
Merci


--
Flo


"CAP2" wrote:

Salut,

essaie de faire ta déclaration Public i as Interger dans un module Standard,
et non dans ThisWorkbook...

Ca marche ?

CAP2





Avatar
CAP2
On retente,

essaie une déclaration du type

Global i as integer

(dans un module Standard)

Ca marche ?

CAP2
Avatar
Florent149
C'est gentil de t'accrocher mais non desole j'ai toujours le meme probleme.
Une petite precision que je viens de decouvrir: je sais quand la valeur de i
retombe a 0. Je m'explique. Normalement i=i+1 est effectue sur l'action
_click() d'un commandbutton d'un userform. Et en regardant la valeur de i a
chaque etape, j'ai vu que ca marchait la premiere fois que je lance
l'userform et que je clique, mais quand je relance l'userform, c'est sur la
ligne " Private sub Userform_initialize() " que ca s'initialise a 0! Tres
bizarre puisqu'il n'y a eu aucune action de faite... Decidement je ne vois
pas d'ou ca peut provenir. Donc messieurs et mesdames les geni(e)s du Vba, a
vos claviers!

--
Flo


"CAP2" wrote:

On retente,

essaie une déclaration du type

Global i as integer

(dans un module Standard)

Ca marche ?

CAP2





Avatar
AV
Pourquoi ne pas créer un nom au niveau du classeur et faire évoluer sa valeur ?
Ca vaut bien une variable publique...

AV
Avatar
Fredo P.
Une petite precision que je viens de decouvrir: je sais quand la valeur de
i

retombe a 0
AmHa la variable est déclarée par ailleurs, à vérifier! ce qui exlpliquerai

la retombée à 0