Liste déroulante à selection multiple !

Résolu/Fermé
florange - 24 juil. 2012 à 10:32
florange Messages postés 16 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 14 juillet 2013 - 24 juil. 2012 à 15:01
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.
A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 juil. 2012 à 10:45
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
0
Oui c'est une Combobox et au début je mettais listbox mais il m'affichait " variable not set or not declared"...
0
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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 juil. 2012 à 11:06
Une ComboBox à sélection multiple? Jamais vu...
Peux tu nous passer une copie de ton fichier que je regarde ton UserForm?
0
La question va te paraître bête mais je sais pas comment attacher le fichier ;(...

Merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 juil. 2012 à 11:19
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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 juil. 2012 à 13:29
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
0
florange Messages postés 16 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 14 juillet 2013
24 juil. 2012 à 15:01
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
0