Listbox choix multiples

Bonjour à tous,

J'ai besoin de pouvoir utiliser une listbox à choix multiples. J'ai trouvé un code qui convient mais ne fonctionne pas parfaitement.

En effet, il semble ne prendre en compte les données Target qu'à partir du 4ème choix.

Je vous joins le fichier simplifier.

Qui peut m'aider.

Merci Beaucoup.

209essai-listbox.xlsm (26.19 Ko)

Bertrand.

Bonjour,

Rectifié et épuré...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Me.ListBox1
        If Not Intersect([G2:G300], Target) Is Nothing Then
            .List = Sheets("Listes").Range("F3:F9").Value
            For i = 0 To .ListCount - 1
                If InStr(1, Target, .List(i)) > 0 Then .Selected(i) = True
            Next i
            .Height = 105
            .Width = 235
            .Top = Target.Top
            .Left = Target.Left + Target.Width
            .Visible = True
        Else
            .Visible = False
        End If
    End With
End Sub

Private Sub ListBox1_Change()
    Dim temp$
    With Me.ListBox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then temp = temp & .List(i) & " "
        Next i
        ActiveCell = Trim(temp)
    End With
End Sub

Cordialement.

Bonjour,

Un grand merci pour votre réponse rapide. En effet, le choix multiple fonctionne désormais. En fait il fallait enlever du code la fonction multiselect qui était déjà cochée en propriété de la listbox ? C'est ça ?

Par contre, lorsque je reviens sur une cellule contenant déjà une sélection, des choix s'effacent seuls ? Comment résoudre ce détail ?

Bien cordialement.

Bertrand

Re,

Non, je n'ai sans doute pas assez bien regardé, mais je n'ai pas vu d'où pouvait provenir le problème posé initialement... Il y avait par contre problème dans la récupération des données de la cellules pour recocher la ListBox, ce que j'ai rectifié, incomplètement d'ailleurs, car :

lorsque je reviens sur une cellule contenant déjà une sélection, des choix s'effacent seuls ? Comment résoudre ce détail ?

L'évènement Change de la ListBox intervient en effet dès qu'on change ! Donc, au premier changement dû à la récup. du premier item, elle élimine les autres que l'on ne retrouve plus... (désolé de ne pas l'avoir vu tout de suite ! )

Aménagement :

Dim Maj As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Me.ListBox1
        If Not Intersect([G2:G300], Target) Is Nothing Then
            Maj = False
            .List = Sheets("Listes").Range("F3:F9").Value
            For i = 0 To .ListCount - 1
                If InStr(1, Target, .List(i)) > 0 Then .Selected(i) = True
            Next i
            .Height = 105
            .Width = 235
            .Top = Target.Top
            .Left = Target.Left + Target.Width
            .Visible = True
            Maj = True
        Else
            .Visible = False
        End If
    End With
End Sub

Private Sub ListBox1_Change()
    Dim temp$
    If Not Maj Then Exit Sub
    With Me.ListBox1
        For i = 0 To .ListCount - 1
            If .Selected(i) Then temp = temp & .List(i) & " "
        Next i
        ActiveCell = Trim(temp)
    End With
End Sub

Ajouts (surlignés) pour contrôler le phénomène...

Cordialement.

bonjour,

étrange que l'on ne semble pas pouvoir gérer ceci avec Application.EnableEvents

Bravo pour votre retour.

C'est bon, ça semble fonctionner.

Merci beaucoup

h2so4 a écrit :

bonjour,

étrange que l'on ne semble pas pouvoir gérer ceci avec Application.EnableEvents

C'est ce que j'ai constaté aussi !

Bonne soirée.

edit : Peut-être parce que MicrosoftForms est distinct d'Excel et échappe à Application...

Bonjour à tous,

Cette discussion date un peu mais je tente...

Merci beaucoup pour vos explications (bcp plus claires que sur d'autres forums !).

Cependant je suis confronté à un hic qui m’empêche d'avancer.

Je cherche a fournir une liste dont les choix se concateneraient dans une cellule tout comme comme dans l'exemple de Bert69 dans le fichier "Essai Listbox.xlsm". J'ai un message d'erreur qui m'informe que l'argument With Me: Listbox1 n'est pas reconnu.

Je me suis donc tourné vers la méthode utilisant un Userform (j'en ai donc créé un par ligne ou je fais apparaitre la liste).

Cette méthode marche sauf qu'à partir de la 2eme ligne les item de la liste ne sont pas concatenés dans la cellule de destination.

Je ne sais pas sir je me suis bien exprimé... du coup voila le fichier (le soucis est dans la 2eme feuille, colonne F -> les "?"), si quelqu'un peut m'aider (précision: je suis autodidacte et je commence dans la prog vba mais le fichier est assez urgent et je crains de me perdre un peu dans ce langage...).

Merci d'avance !!

Bonsoir,

tu as mis le code pour des boutons qui n'existent pas. voici une correction (du moins si j'ai bien compris ton problème)

Super H2So4 !!

Merci beaucoup beaucoup beaucoup !!!

Ton envoi de fichier corrigé m'a été d'un grand secours ! Du coup j'ai pu m'exercer à en créer d'autres formulaires de ce type et cela m'a permit de comprendre la logique d’utilisation !

Encore MERCI !

Rechercher des sujets similaires à "listbox choix multiples"