Passer d'un object control à un objet listbox

Bonjour!

J'ai un soucis, j'ai beaucoup de listbox généré dynamiquement dans un userform.

J'aimerais appeler une macro, pour chaque liste dans lesquelles j'aurais sélectionné au moins un item.

Le soucis c'est que j'y arrive pas. j'ai soit une incompatibilité de type, soit, quand je teste si j'ai un élément sectionné (listindex) il me retourne 0.

je veux juste parcourir toutes mes listbox générées, détecter si j'ai sélectionné un élement, et si oui appeler un macro

je vous laisse juger par vous même.

Dim ctrl As Control

If CritForm.Controls.Count > 2 Then
            For Each ctrl In CritForm.Controls
                If TypeName(ctrl) = "ListBox" Then
                    If (ctrl.ListIndex >= 0) Then
                        'macro a appeler
                    End If
                End If
            Next ctrl
        End If

Merciiii

Bonjour,

j'ai vu dans ton autre topic que tu utilisais multiselect.

Aide :

Dans un contrôle ListBox permettant plusieurs sélections, la propriété ListIndex renvoie l'index de la ligne ayant le focus, que celle-ci soit ou non actuellement sélectionnée.

Il faudrait que tu boucles sur le tableau ctrl.selected pour voir quelles lignes sont sélectionnées.

eric

Merci bcp pour ta réponse!

En effet à cause de mon multiselect, je peux pas faire ce que je voulais.

Mais du coup, je galère pour utiliser le selected, ou plutôt le itemsSelected car mon ctrl est un control et non une listbox.

Comment faire pour passer d'un control à une listbox ?

Bonjour,

Que veux-tu dire ?

Control n'est pas un contrôle, c'est un terme générique pour désigner tous les contrôles : textbox, listbox etc.

Il faut que tu fasses une boucle sur tous les items que tu quittes dès que tu en as un avec la propriétés à true.

Si en fin de for .... next ton index = dernier_index+1 c'est qu'aucun n'est sélectionné.

eric

Rechercher des sujets similaires à "passer object control objet listbox"