Astuce de multiselection ?

Bonjour à tous,

Actuellement, mon UserForm dispose d'une zone de liste, cet zone de liste puise sa source de données dans une plage de cellule que j'ai nommer : "Liste". Il est possible de selectionner plusieurs champs dans ma zone de liste.

J'ai fait un bouton, dans lequel on peut trouver le code suivant :

Private Sub Bouton_Modification_Click()
a = ListBox_Fraise2Taille.ListCount 'Nombre de valeur contenue dans la zone de liste
    For i = 0 To a - 1
        If ListBox_Fraise2Taille.Selected(i) Then
            'MsgBox "la valeur suivante est sélectionnée : " & ListBox_Fraise2Taille.List(i)
            Range("Tableau_Fraise").Find(ListBox_Fraise2Taille.List(i)).Select 
            Selection.EntireRow.Select
        End If
        Next i
End Sub

Ce qui permet de faire une boucle et de pouvoir lire le contenue du "tableau". Actuellement quand je sélectionne plusieurs champs de ma zone de liste sa sélectionne la ligne entière de ma feuille correspondant a la dernière valeur de ma zone de liste, hors je souhaiterais que toutes les ligne dans ma feuille qui on était sélectionner dans ma zone de liste soit sélectionner dans ma feuille.

Seriez-vous comment je peut faire ?

J'espère avoir était assez clair pour que vous puissiez comprendre pour le mieux.

Cordialement,

Mica

N'hésiter pas à me demander des renseignements si je n'est pas était assez claire je suis à votre entière disposition.

Actuellement je réussi a bien afficher toutes les valeurs que je sélectionne dans des Msgbox et j'arrive si je le souhaite à les coloré de la couleurs que je veut, hors quand il s'agit de les supprimer ou de les sélectionner cela ne me prend que la dernière valeur en fin de tableau.

Seriez-vous comment je peut résoudre mon problème ?

Merci d'avance.

Bonjour,

Une solution avec la méthode Union

Option Explicit
Private Sub Bouton_Modification_Click()
Dim a As Integer, i As Integer
Dim C As Range, Plage As Range
    a = ListBox_Fraise2Taille.ListCount 'Nombre de valeur contenue dans la zone de liste
    For i = 0 To a - 1
        If ListBox_Fraise2Taille.Selected(i) Then
            Set C = Range("Tableau_Fraise").Find(ListBox_Fraise2Taille.List(i))
            If Not C Is Nothing Then
                If Not Plage Is Nothing Then
                    Set Plage = Application.Union(Plage, C.EntireRow)
                Else
                    Set Plage = C.EntireRow
                End If
            End If
        End If
    Next i
    Plage.Select
    Set C = Nothing: Set Plage = Nothing
End Sub

A+

mmhhh encore une nouvelle méthode que je vais découvrir. Je te remercie beaucoup pour ton aide et je cours tout de suite essayer sa.

Je viendrais vous tenir au courant du résultat. ^^

Encore merci beaucoup


Voilà c'est fait

Sa fonctionne très bien merci pour ton aide ^^

Rechercher des sujets similaires à "astuce multiselection"