Déclaration publique de tableau interdite en Userform
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:
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:
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 !