Bonjour a tous
c'est peut être une chose tout simple mais qui me pose problème depuis un moment déjà a savoir la porté d'une variable dans une/des instances d'une classe controls
en effet jusqu'à présent j'utilisais le tag et autre astuces pour mémoriser une donnée et le ressortir dans les évènement control de la classe
pour faire simple aujourd'hui on va instancier une classe a partir du userform pour y appeler la fonction1 qui va classer une listbox je pourrais donc gérer son évènement
"mousedown" dans la classe .jusque la rien de bien compliqué
et dans la fonction1 de la classe on va instancier la classe control
arrêtez moi si je me trompe il y a donc 2 classe1 instanciées
mon problème c'est que je voudrais qu'une variable "colwidth" prenne une valeur et que cette valeur au mousedown de la listbox dans la classe je puisse ressortir cette variable pour
l'exemple aujourd'hui et pour une facilité de solution on ressortira cette variable dans un msgbox
code du userform
on constate que dans le initialyse de la classe si j'alimente la variable elle est utilisable dans l'evenement mousedown de la listebox
problème je suis obligé de classer la listbox avant quoi que se soit
code de la classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Dim cl As New Classe1 Private Sub UserForm_Activate() Set plage = Sheets(1).Range("a1:j100") colonnewidths = Array(60, 80, 60, 60, 90, 80, 75, 68, 90, 60) With ListBox1 .List = plage.Value .ColumnCount = plage.Columns.Count .ColumnWidths = Join(colonnewidths, ";") End With cl.fonction1 ListBox1 End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Public WthEvents liste1 As MSForms.listbox Dim CLS As New Classe1 dim colwidth Private Sub Class_Initialize() 'colwidth = "blablablabla" End Sub Function fonction1(listbox) colwidth = listbox.ColumnWidths Set CLS.liste1 = listbox End Function Private Sub liste1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 2 Then MsgBox colwidth End Sub
Attention il n'est surtout pas question ici de mettre cette variable en public dans un module standard
si quelqu'un a une idée a proposer je veux bien
Partager