1 pièce(s) jointe(s)
Comment stocker des objets dans une ListBox vba et les récupérer lorsque nous cliquons dessus?
J'ai fait une méthode qui prend un tableau d'objet global `arrayOReservists`, qui représente des gens, et qui affiche ses objets, c'est à dire chaque personne, dans une ListBox.
Code:
1 2 3 4
| ' On remplit la ListBox des résultats avec les noms et prénoms des personnels
ListBoxResults.AddItem (arrayOReservists(i).Surname & " " & arrayOReservists(i).Name)
' On redimensionne le tableau
i = i + 1 |
Une autre méthode, `ListBoxResults_DblClick`, réagit lorsque je double-clique sur l'une des lignes de la ListBox. Elle affiche une UserForm à laquelle j'aimerais transmettre l'objet sur lequel j'ai cliqué. Cependant je ne sais pas comment y avoir accès à cet objet. J'ai l'impression que les données transmises à la ListBox par AddItem sont transformées en texte.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Private Sub ListBoxResults_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim Msg As String
Dim i As Integer
Dim newInstanceOfMe As Object
' On cherche le nom et le prénom du réserviste sur lequel on a cliqué
For i = 0 To ListBoxResults.ListCount - 1
If ListBoxResults.Selected(i) Then
ReservistName = ListBoxResults.List(i)
End If
Next i
' Prise en compte du cas où l'on clique sur la TextBox Results alors que celle-ci est vide
If False Then
If ReservistName <> "" Then
Set newInstanceOfMe = UserForms.Add(Me.Name)
newInstanceOfMe.Caption = ReservistName
newInstanceOfMe.Show
Unload newInstanceOfMe
Set newInstanceOfMe = Nothing
End If
End If
' passer le nom, le prénom à ReservistUserForm et dans le Load qui filtrer la liste à partir de ces champs en obtenant l'objet oReservist.
' Una vez tengas la informacion de ese usuario lo siguiente sera mapear la informacion a los textBox correspondientes.
ReservistFormUserForm.Caption = ReservistName
ReservistFormUserForm.Show
End Sub |
En effet quand j'affiche `MsgBox (ListBoxResults.List(i))` j'ai uniquement le nom et le prénom et non pas l'objet.
Par conséquent comment stocker des objets dans une ListBox vba et les récupérer lorsque nous cliquons dessus ? Cela me permettrait, par exemple, de les mettre dans une variable globale à laquelle j'aurais accès dans l'objet UserForm.
Annexe
Voici l'interface avec la ListBox si cela est plus parlant:
Pièce jointe 484871