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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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:

Nom : B5uzH.png
Affichages : 820
Taille : 44,8 Ko