Bonjour,

Je développe depuis quelque temps en VBA et je me trouve aujourd'hui face à quelque chose qui me déplait ...

Version courte :
VBA m'interdit de déclarer un tableau publique dans le code de mon userform. Quelle solution s'offre à moi, autre que déclarer une variable publique dans le Sub appelant le userform ? (qui me semble être une solution "moche")

Version longue :
Grossomodo, j'ai un Sub ("DeleteColonne") qui doit appeler un userform ("UF_ColonneDelete").
Le userform a besoin (entre autre) d'une variable tableau de dimension 1 en paramètre pour pouvoir se construire et alimenter une listview.

Ce code date d'il y a quelque temps, il fonctionne parfaitement car j'utilise des variables publiques dans mon Sub (DeleteColonne)
Mais le soucis c'est que :
- C'est moche, j'ai la variable de mon Sub appelant qui se balade partout dans mon projet
- Mon userform n'est pas autonome, je lui dis "ha au fait, faut que tu récupères aussi une variable d'une autre module pour pouvoir fonctionner, vas y , va la chercher toi même"
- Si je veux modifier le nom de ma variable publique, je dois balayer tout mon projet pour ne pas oublier d'occurence

J'aimerai donc l'améliorer et effectuer un code propre en rendant le code de mon userform autonome.

J'ai donc opter pour la méthode suivante

Code de mon main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
public sub DeleteColonne()
dim paramètre1 as string
dim Parametre2() as string
 
' set de mes 2 variables
 
Call UF_ColonnDelete.UF_Show(Paramètre1, Paramètre2)
 
'...
End sub
Code de mon userform :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public Parametre1 as string
Public Parametre2() as string
 
Public Sub UF_Show(Param1 as string, Param2() as string)
parametre2 = param2
 
UF_ColonneDelete.show
 
Param1=parametre1
End sub
 
public sub userform_initialize()
' code qui se lance lorsque UF_ColonneDelete.show est executé
' construction du userform en fonction de parametre2
' l'utilisateur va rentrer parametre1, puis à la fermeture l'idée est de renvoyer parametre1 en sortie
' ...
End sub
Cette solution est jolie, mais VBA refuse un tableau comme variable publique d'un userform ....
Une solution "élégante" existe-t-elle ? Si oui laquelle ?
J’espère avoir été clair ... Merci de vos réponses !