Liste deroulante multiple

Bonjour dans un tableau et surtout dans une seule cellule, je souhaiterais mettre depuis une liste déroulante plusieurs choix direct a la ligne

exemple

liste déroulante :

patate

lys

tomate

fleur

je souhaiterais donc insérer dans la meme cellule à la ligne

lys

fleur

est ce possible ?

merci

Bonjour Manupch, bonjour le forum,

Je ne pense pas que ce soit possible car une liste déroulante ne te permettra de sélectionner qu'une seule donnée. Il te faudrait passer par une UserForm avec une ListBox multiselect et du code VBA (macros)...

Bonjour, Salut ThauThème,

Suggestion : une ListBox sur la feuille. Une liste des items que l'on souhaite pouvoir insérer dans une cellule est affectée à sa propriété ListFillRange. Non visible par défaut. Rendue visible par clic droit sur la cellule que l'on veut remplir et positionnée sur cette cellule.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim i%
    Set c = Target
    With lbxLst
        .Left = c.Left
        .Top = c.Top
        .TopIndex = 0
        .Visible = True
        .Activate
    End With
    Cancel = True
End Sub

Ici ListBox nommée lbxLst. TopIndex = 0 est destiné à afficher la liste à partir du début dans la ListBox, et Activate à lui donner le focus. La cellule cliquée est mémorisée dans une variable module :

Dim c As Range

L'utilisateur peut choisir un ou plusieurs items de la liste (ou aucun !). En déplaçant le curseur hors de la ListBox cela déclenche l'évènement LostFocus :

Private Sub lbxLst_LostFocus()
    Dim T, i%, m%
    With lbxLst
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                T = T & Chr(10) & .List(i)
                m = m + 1
                .Selected(i) = False
            End If
        Next i
        .Visible = False
    End With
    If m > 0 Then
        T = Replace(T, Chr(10), "", 1, 1)
        With c
            .Value = T
            If m > 1 Then .WrapText = True
        End With
    End If
    Set c = Nothing
End Sub

Les items sélectionnés sont récupérés et affectés à la cellule...

Cordialement.

nickel

merci

Bonjour le fil, bonjour le forum,

Bonjour Maître. Tu as fait ça juste pour me contredire, hein ?... M'en fous je porterai plainte à Sébastien pour "Intervention inopinée dans le but de ridiculiser ses petits camarades". Et paf !

Sinon, Manupch, c'est aussi bien que dans l'autre forum ou mieux ?...

Bonsoir,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect([A2:A10], Target) Is Nothing And Target.Count = 1 Then
    Me.ListBox1.MultiSelect = fmMultiSelectMulti
    Me.ListBox1.List = Sheets("BD").Range("A2:A28").Value
    a = Split(Target, Chr(10))
    If UBound(a) >= 0 Then
      For i = 0 To Me.ListBox1.ListCount - 1
        If Not IsError(Application.Match(Me.ListBox1.List(i), a, 0)) Then Me.ListBox1.Selected(i) = True
      Next i
    End If
    Me.ListBox1.Height = 150
    Me.ListBox1.Width = 100
    Me.ListBox1.Top = Target.Top
    Me.ListBox1.Left = Target.Left + Target.Width
    Me.ListBox1.Visible = True
  Else
      Me.ListBox1.Visible = False
  End If
End Sub

Private Sub ListBox1_Change()
 For i = 0 To Me.ListBox1.ListCount - 1
   If Me.ListBox1.Selected(i) = True Then temp = temp & Me.ListBox1.List(i) & Chr(10)
 Next i
 ActiveCell = Left(temp, Len(temp) - 1)
End Sub

Ceuzin

ThauThème !

J'avais eu l'impression d'arriver en retard... Tu venais juste de dire qu'il fallait une ListBox à choix multiple. Je n'ai fait qu'affirmer mon accord... !

Rechercher des sujets similaires à "liste deroulante multiple"