ListBox MultiSelect

Bonjour à tous,

J'ai une listBox dans laquelle s'affiche des lignes suivant un critère, en l'occurence: "CB Différée".

Je souhaite sélectionner toutes ces lignes, et en appuyant sur le bouton "Valider", que "CB Différée" passe en "CB"

Je sais le faire sur une ligne sélectionnée, mais pas moyen de trouver la méthode pour que cela boucle sur toutes les lignes.

Je vous joins mon fichier de base et de réflexion !!!

Merci d'avance pour votre aide

Bonjour Eureka07,

Une option consiste à parcourir l'ensemble des lignes de la listbox, et d'exécuter les instructions souhaitées lorsque la propriété .Selected est Vraie.

    With Me.ListBox1
        If .ListIndex <> -1 Then
            For i = 0 To .ListCount - 1
                If .Selected(i) Then
                    ' Instructions pour les lignes sélectionnées
                    MsgBox ("La ligne " & i & " est sélectionnée")
                End If
            Next
        End If
    End With

Je vous ai mis un exemple dans le fichier joint.

Est-ce que cela répond à la demande ?

Bonsoir Fatos et merci de vous intéresser à ma demande.

J'avais bien vu cette méthode, mais cela ne modifie qu'une seule ligne de la sélection !

Voici le code que j'ai donc adapté dans mon cas:

Private Sub CommandButton1_Click()
Dim mois As String
Dim ligne As Integer
Dim cel As Range
ligne = ListBox1.List(ListBox1.ListIndex, 0) - 1
mois = Mois1.Value
    With Me.ListBox1
        If .ListIndex <> -1 Then
            For i = 0 To .ListCount - 1
                If .Selected(i) Then
                    ' Instructions pour les lignes sélectionnées
                    'MsgBox ("La ligne " & i & " est sélectionnée")
                    With Sheets(mois)
                    Set cel = .Range("a3")
                    cel.Offset(ligne, 6) = "CB"
                    End With
                End If
            Next i
        End If
    End With
    Call Mois1_change
End Sub

....pas de boucle !!

Il y a bien une boucle :

For i = 0 To .ListCount - 1

Mais vos instructions utilisent une variable, ligne, qui est indépendante de cette boucle, cela répète donc la même opération d'où le problème.

Ici, il suffit de remplacer ligne par l'itérateur de la boucle, à savoir i.

 With Sheets(mois)
     Set cel = .Range("a3")
     cel.Offset(i, 6) = "CB"
 End With

Merci de me confirmer que cela fonctionne.

J'y avais bien pensé, mais je n'y croyais pas à cette modification, et pourtant, le résultat est concluant.

Merci beaucoup pour ce coup de main

Bonjour à tous,

Intéressant, j'ai pris, çà fonctionne, en changeant bien le critére multiselect de la listbox à multiple au lieu de single.

Merci

Rechercher des sujets similaires à "listbox multiselect"