Crée une variable générale pour l'utiliser sur plusieurs module et Sub

Bonjour,

Vu que je suis nouveau dans la programmation VBA, j'ai un peu de mal à gérer les variables. J'aimerai un peu d'aide pour m'éclaircir un point.

Voila actuellement j'ai crée un fichier xlsm pour analyser des données. Sur ce fichier j'ai crée plusieurs Macro sur différents modules pour faire mes analyses automatiquement. J'ai donc un Module 1 avec ses sub, Module 2 avec ses sub ...

Dans chaque sub j'ai j'utilise des formules que j'étend jusqu'à la dernière ligne grâce à la fonction AUTOFILL. Voila mon petit souci pour fixer jusqu'à ou la formule doit s'étendre j'ai crée une variable qui fixe la dernière ligne de la cellule dès le début de mes sub :

Sub Form1()

NbLigne = Sheets("Sheet_1").Range("A" & Rows.Count).End(xlUp).Row 'j'ajoute cette ligne à chacun de mes subs

'Exemple d'extension formule en utilisant la variable 

Sheets("Sheet_1").Range("U3").FormulaR1C1 = "=IF(COUNTIF(R3C20:RC[-1],RC[-1])>1,0,1)"
Sheets("Sheet_1").Range("U3").AutoFill Destination:=Sheets("Sheet_1").Range("U3:U" & NbLigne)

End Sub

Pour le moment j'utilise cette ligne au début de chacun de mes sub dans chacun des modules, pour l'utiliser ensuite .

Ma question : est-ce que c'est possible je crée cette variable de façon générale et appeler la variable quand on veut sans la crée au début de chacun de mes sub ?

J'aimerai qu'il puisse aussi être utiliser dans un autre sub (Form2, Form3 ....) d'un autre module.

Je vous remercie d'avance.

bonjour,

ce variable est déclaré "Global" dans module1, donc il y est pour tous les modules.

Il faut le donner un valeur pendant par exemple la macro "Init" et puis à chaque fois que ce nombre change.

Attention ; vous ne pouvez pas déclarer un nouveau "NbLigne" dans un autre module ou une macro, parce que celui aura son propre valeurn donc prudence.

4gwhaou.xlsb (20.46 Ko)

Bonjour le fil, bonjour le forum,

@BsAlv
Je ne connaissais pas le mot clé Global, j'ai toujours utilisé Public. J'ai cliqué sur la touche [F1] sur ton code en sélectionnant Global et je me suis retrouvé dans l'aide MicroSoft Public, instruction. Donc visiblement c'est la même chose. Peux-tu m'en dire plus sur ce Global ?

@Thauthème, back to the basics.

Je l'ai aussi demandé à mon ami Google, apparament, vous avez raison, la force de l'habitude m'a trahi.

Il y a des petits differences mais Public vaut mieux que global, public est pour tout (modules , UF, classmodules, ...) tandis que global n'est que pour les modules et .... .

Donc c'est mieux de remplacer "global" par "public"

https://www.mrexcel.com/board/threads/global-vs-public-variable.425695/

nouveau fichier avec une macro dangeureuse et une autre

3gwhaou.xlsb (22.29 Ko)

il faut aussi regarder la durée de vie d'un variable, ce n'est pas simple ...

Bonjour,

De manière générale, quand on est débutant, on peut considérer que déclarer une variable publique (ou globale) simplement pour ne pas avoir à se répéter est une mauvaise idée.

Réserver les variables publiques aux situations qui l'exigent vous épargnera (et nous aussi...) bien du temps perdu en recherche inutiles !

A+

Re,

De manière générale, quand on est débutant, on peut considérer que déclarer une variable publique (ou globale) simplement pour ne pas avoir à se répéter est une mauvaise idée.

N'aurais-tu pas voulu dire bonne ?

re,

non, mais je vote aussi pour "mauvais".

Je ne déclare presque jamais des variables, ni dans un module ni public, sauf des "public" pour de "handshake" entre macros et le reste est plutôt "correcteur orthographique". Après termination de la macro, je préfère à réinitialiser ces variables (erase matrices, ...) pour minimaliser les risques dans le prochain RUN.

Rechercher des sujets similaires à "cree variable generale utiliser module sub"