Appel d'une fonction qui renvoi les éléments sélectionnés d'une ListBox

Bonjour à tous,

J'ai un petit problème auquel je ne trouve aucune solution malgré mes recherches.

Sur mon fichier, j'ai créé un UserForm qui s'appelle UI_KPI qui possède de nombreuses ListBox. Mon but, est de créé une fonction RECUP_SELECTED qui prendrait en entrée le nom d'une ListBox de mon UserForm UI_KPI et qui renverrait une Collection contenant l'ensemble des valeurs sélectionnées dans la ListBox.

La fonction RECUP_SELECTED doit pouvoir être appelée depuis un autre module de mon code.

Pour le moment j'ai codé ça :

  • Dans le code de mon UserForm UI_KPI j'ai inséré la fonction suivante :
'Renvoie une Collection contenant les éléments selectionnées dans la ListBoxSelected
Function RECUP_SELECTED(ByVal ListBoxSelected As ListBox) As Collection
    Set RECUP_SELECTED = New Collection

    For i = 1 To ListBoxSelected.ListCount - 1
            If ListBoxSelected.Selected(i) Then
                RECUP_SELECTED.Add ListBoxSelected.List(i), ListBoxSelected.List(i)
            End If
    Next i

End Functio
  • Dans un autre de mes modules, j'utilise la procédure suivante qui me permettrait de récupérer les valeurs sélectionnées des ListBox voulues :
'Appel de toutes les fonctions de récupération
Sub RECUP_ALL_SELECTED()
    Dim SelectedMois As Collection
    Dim ListBoxUsed As ListBox

    Set ListBoxUsed = UI_KPI.Controls.ListBoxFiltreMois
    Set SelectedMois = UI_KPI.RECUP_SELECTED(ListBoxUsed)
End Sub

NB : A titre d'exemple, ListBoxFiltreMois est le nom d'une ListBox qui se trouve dans UI_KPI et j'aimerais récupérer les valeurs sélectionnées dans cette ListBox dans la collection SelectedMois.

Bien évidemment, comme vous l'aurez compris l'appel de cette procédure ne marche pas et ne comprends pas d'où vient l'erreur.

En espérant pouvoir trouver de l'aide, merci par avance,

Cordialement,

Bonjour,

Quelle est la valeur de la propriété Multiselect de votre ListBox ?

Bonjour Eric,

Sur toutes mes ListBox les propriétés de MultiSelect sont sur "1 - fmMultiSelectMulti".

Pour info, j'ai oublié de préciser dans mon poste mais il me semble que l'erreur devrait venir dans ma procédure RECUP_ALL_SELECTED à la ligne:

Set ListBoxUsed = UI_KPI.Controls.ListBoxFiltreMois

En effet je ne parviens pas à récupérer la ListBoxFiltreMois dans la variable ListBoxUsed.

Dans un de mes userform, j'ai regardé ce qu'on obtenait en tapant :

Me.Controls.
capture

J'ai regardé également si l'objet ListBox comportait également la collection ListBoxs (en supposant qu'elle existe), mais non.

Il peut y avoir d'autres solutions, mais je pense qu'il vous faut faire une boucle sur les ListBox de votre userform, sans doute à partir d'une variable tableau préalablement chargée des noms de vos contrôles.

Merci pour votre réponse Eric,

Du coup si je comprends bien, d'après vous il n'y a aucun moyen de créer une fonction générique qui me permettrait de récupérer les valeurs sélectionnées d'une ListBox voulue ?

Si, mais il faut balayer les différentes ListBox de votre userform.

D'accord, pourriez-vous m'en dire plus sur votre idée ?

Une fois que j'aurai balayé les ListBox de mon tableau et que j'aurai chargé les noms. Comment coder la fonction générique que j'aimerais avoir pour récupérer les valeurs sélectionnées d'une ListBox en particulier ?

Je pense que votre fonction ne marchera que pour le dernier ListBox car vous créez une nouvelle collection à chaque fois.

Il faut que votre variable collection soit instanciée avant la boucle sur les ListBox et il vous faudra ajouter une deuxième boucle à l'intérieur de la première pour récupérer les items sélectionnés.

En clair, la fonction n'est pas utile.

D'après ce que j'ai compris, il faudrait que je créé une procédure qui parcourrait mes différentes ListBox, et pour chaque ListBox parcourue, créer directement la collection qui lui est associée (qui sera incrémentée par les valeurs sélectionnées de la ListBox) ?

Est-ce cela ?

Auriez-vous un modèle de fichier non confidentiel à mettre en ligne avec votre userform ?

Rechercher des sujets similaires à "appel fonction qui renvoi elements selectionnes listbox"