Liste déroulante à selection multiple !

Résolu
Bonjour,

Je voudrais créer une liste déroulante à partir de laquelle on pourrait cocher plusieurs valeurs à la fois. Et bien sûr la cellule doit afficher toutes les valeurs que l'on a coché séparé par un "/" ou un "&".

Ma liste déroulante contiendrait 63 valeurs; vous comprenez que je ne peux pas faire manuellement toutes les combinaisons possibles, d'où cette liste déroulante à choix multiple.

Et voici le code que j'ai rentré :

Option Explicit

Private Sub CommandButton1_Click()
Dim i As Byte
Dim ValeurARetourner As String

For i = 0 To ComboBox1.ListCount - 1
If ComboBox1.Selected(i) = True Then
ValeurARetourner = ValeurARetourner & ComboBox1.List(i) & " & "
End If
Next i
If ValeurARetourner = "" Then
MsgBox "Sélection obligatoire ou fermez avec la croix"
Exit Sub
End If
ActiveCell = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
ActiveCell.Offset(1, 0).Activate
End With
UserForm1.Hide
Unload UserForm1
End Sub

Private Sub UserForm1_Initialize()
Dim i As Integer, Derlig As Integer
ComboBox1.Clear

Derlig = Sheets("EVENT").Cells(65536, 2).End(xlUp).Row
For i = 1 To Derlig
ComboBox1.AddItem Cells(i, 2).Value
Next i
For i = 0 To ComboBox1.ListCount - 1
If ComboBox1.Selected(i) = True Then
ComboBox1.Selected(i) = False
End If
Next i
End Sub

Sauf que je reconcontre une erreur pour la ligne suivante :
If ComboBox1.Selected(i) = True Then

En effet il m'affiche "Method or data member not found"

Voilà et Merci pour votre réponse.

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Merci ça fonctionne ....

    Les 2 codes fonctionnent très bien!
    maintenant à moi de le réadapter dans le vrai fichier où en fait la liste des départements se trouve dans une autre feuille que celle où l'on effectue la saisie.
    A priori il doit pas y avoir de problèmes mais qui sait...
    il se peut que je revienne encore vers toi ;)

    Merci encore
    1. Modérateur
      Pour les deux options listbox ou combobox, voici :
      Le Fichier Exemple avec les 2 cas

      Les deux codes :
      AVEC LISTBOX ET UN BOUTON :
      Option Explicit
      
      Private Sub CommandButton1_Click()
      Dim i As Byte
      Dim ValeurARetourner As String
      
      For i = 0 To ListBox1.ListCount - 1
          If ListBox1.Selected(i) = True Then
              ValeurARetourner = ValeurARetourner & ListBox1.List(i) & " & "
          End If
      Next i
      If ValeurARetourner = "" Then
          MsgBox "Sélection obligatoire ou fermez avec la croix"
          Exit Sub
      End If
      ActiveCell = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
      ActiveCell.Offset(1, 0).Activate
      
      UserForm1.Hide
      Unload UserForm1
      End Sub
      
      Private Sub UserForm_Initialize()
      Dim i As Integer, Derlig As Integer
      
      ListBox1.Clear
      ListBox1.MultiSelect = fmMultiSelectMulti
      With Sheets("EVENT")
          Derlig = .Range("B" & Rows.Count).End(xlUp).Row
          For i = 1 To Derlig
              ListBox1.AddItem .Cells(i, 2).Value
          Next i
      End With
      End Sub
      


      AVEC COMBOBOX ET DEUX BOUTONS :
      Option Explicit
      Dim ValeurARetourner As String
      
      Private Sub CommandButton1_Click()
      If ComboBox1 <> "" Then
          ValeurARetourner = ValeurARetourner & ComboBox1 & " & "
      Else
          MsgBox "Sélection obligatoire ou fermez avec la croix"
          Exit Sub
      End If
      End Sub
      
      Private Sub CommandButton2_Click()
      ActiveCell = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
      ActiveCell.Offset(1, 0).Activate
      
      UserForm2.Hide
      Unload UserForm2
      End Sub
      
      Private Sub UserForm_Initialize()
      Dim i As Integer, Derlig As Integer
      
      ComboBox1.Clear
      With Sheets("EVENT")
          Derlig = .Range("B" & Rows.Count).End(xlUp).Row
          For i = 1 To Derlig
              ComboBox1.AddItem .Cells(i, 2).Value
          Next i
      End With
      End Sub
      1. Modérateur
        Salut,
        Je t'ai retrouvé...
        1- es tu sur(e) qu'il s'agisse d'une Combobox? Ce serait pas plutôt une ListBox?

        2- Si tel est le cas, la syntaxe est :
        For i = 0 To ListBox1.ListCount - 1
                If ListBox1.Selected(i) = True Then 
                     ValeurARetourner = ValeurARetourner & ListBox1.List(i) & " & "       End If
        Next i
        1. Oui c'est une Combobox et au début je mettais listbox mais il m'affichait " variable not set or not declared"...
        2. J'ai une procédure associée à CommandButton1_Click() mais c'est vrai que je n'ai pas de procédure assoicée à ComboBox1_Change() ...
          Peut-être que c'est ça l'erreur non ?!

          Merci
        3. Modérateur
          Une ComboBox à sélection multiple? Jamais vu...
          Peux tu nous passer une copie de ton fichier que je regarde ton UserForm?
        4. La question va te paraître bête mais je sais pas comment attacher le fichier ;(...

          Merci
        5. Modérateur
          Non la question n'est pas bête.

          pour joindre un fichier :
          mettre le classeur sans données confidentielles en pièce jointe sur

          https://www.cjoint.com/
          puis copier l'adresse du lien et la coller dans le message de réponse *

          *copyright Michel_m