Variable globale à un classeur

Bonjour,
Je souhaite que mes variables puissent être utilisées dans tout le classeur y compris dans les modules.
Exemple :
(l'exemple ci-dessous ne fonctionne pas )

Dans une Feuil1 j'ai un CommandButton1 avec :
Dim lg1 As Integer
-------------
Private Sub CommandButton1_Click()
lg1 = 2
Call test
End Sub
---------------
Dans le module 1 j'ai :

Sub test()
Sheets(1).Cells(1, 1) = lg1
End Sub

​Merci de votre aide.

bonjour VincMalin,

il faut déclarer cette variable au début d'un module normal (donc votre "Module 1" ou un autre), ne pas dans le module d'une feuille

Public lg1 As Integer

Bonjour,

Je l'ai mis dans le module cela fonctionne.
Mais il faut maintenant que j'adapte à mon programme car j'ai plusieurs Sub et module qui utilisent cette même variable.
Je ne sais pas comment cela va se comporter

Merci.

re,

C'est difficile pour juger sans fichier, mais n'est-ce pas possible d'utiliser plusieurs variables lg1, lg2, lg3, ...

Public lg1 As Integer, lg2 As Integer,  lg3 As Integer

Bonjour à tous,

@VincMalin Il n'est pas recommandé d'utiliser des variables globales, préférez leurs soit des propriétés au niveau formulaire, soit des CallBacks et interface (contrats). En effets les variables globales sont rigides, moins sûre, et difficile à maintenir si le nombre d'actions augmente.

Il n'est souvent pas nécessaire de les utiliser, et comme dis Bart un fichier serait utile pour vous aiguiller vers la bonne voie.

bonjour,

personnellement je bani de mes programmes, autant que faire ce peut,les variables public ou global car on ne sait jamais quand elles sont initialiser.

je préconise des méthodes avec passage de paramètres. dans ce cas on sait qu'elle sont initialiser dans la méthode appelante.

Sub Main()
dim myVar as string 
myVar="TOTI"
sousPorogramme myVar
end sub
sub sousPorogramme(v as string)
msgbox v
end sub

​Bonjour,
Merci pour vos retours et bonne année.
Je ne peux pas partager de fichier car je suis dans un cadre professionnel.
J'avais un gros programme dans mon CommandClick.
Je l'ai scindé en modules pour que cela soit plus facile à modifier ou à faire évoluer.
J'ai mis toutes mes variables dans un même module.
Ce n'est certainement pas la solution idéale mais cela semble fonctionner.

Bonjour à tous,

Je l'ai scindé en modules pour que cela soit plus facile à modifier ou à faire évoluer.

@Vinc Malin, Ça c'est une bonne initiative. Diviser en tenant compte si possible que chaque procédure ou fonction ne s'occupe que d'une seule chose à la fois.

J'ai mis toutes mes variables dans un même module.

Ne pas oublier que vous pouvez charger les procédures avec des arguments, cela fera toujours cela de moins en variables globales.

Ce n'est certainement pas la solution idéale mais cela semble fonctionner.

Il faut bannir cette expression... Vous devez vous poser à chaque instants, mais que se passera-t’il si la feuille n'existe pas,, si le tableau est effacé, si le tableau ne contient pas de lignes, et si et si.

Maintenant deux cas de figures se présentent. Programmation occasionnelle, ou pas. Si vous faites une programmation occasionnelle nul besoin de trop se casser la tête.

Bonjour,
Merci pour votre retour et bonne année

Rechercher des sujets similaires à "variable globale classeur"