Liste déroulante à selection multiple ! [Résolu/Fermé]

Signaler
-
Messages postés
16
Date d'inscription
lundi 23 juillet 2012
Statut
Membre
Dernière intervention
14 juillet 2013
-
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

Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
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
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
toujours pas...

Essaye :
Enregistrer sous,
type de fichier : Classeur Excel
pas version 2007 quoi......
pour obtenir un fichier .xls
Messages postés
16
Date d'inscription
lundi 23 juillet 2012
Statut
Membre
Dernière intervention
14 juillet 2013

je l'ai enregistré sous excel 2003...
https://www.cjoint.com/?BGymQG8CX0b
Messages postés
16
Date d'inscription
lundi 23 juillet 2012
Statut
Membre
Dernière intervention
14 juillet 2013

chez moi ça marche en tout cas....
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
c'est bon j'regarde
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
tu veux une sélection multiple?
Alors il faut utiliser une ListBox. Marche pas avec Combobox...

Exemple :
https://www.cjoint.com/?BGynvHSX5rO

Si tu tiens absolument à ta combobox, il te faut deux boutons :
1- "Encore sélection"
1- Valider

Le bouton "encore sélection" stocke dans une variable (niveau du module Userform, déclaré au dessus de la première Sub) les sélection successive, le bouton Valider retourne dans la feuille...
Tu dis, mais le plus simple est la ListBox!
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 496
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
Messages postés
16
Date d'inscription
lundi 23 juillet 2012
Statut
Membre
Dernière intervention
14 juillet 2013

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