XL 2016 Liste de choix à sélection multiple

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

StanSigma

XLDnaute Junior
Bonjour à tous,

Je fais une nouvelle fois appel aux compétences excel des membres de ce forum à propos d'un fichier.
Je souhaite faire une liste déroulante (ou zone de liste) avec une sélection multiple (c'est à dire que je puisse sélectionner plusieurs champs de la liste).
J'ai recherché sur internet et ai trouvé l'objet zone de liste avec comme type de sélection "Multiple", ceci me va très bien cependant lorsque je lie la zone de liste à une cellule (pour me renvoyer le ou les résultats), il ne renvoie que 0 peut importe le résultat choisi.
Comment faut-il procéder pour obtenir les données choisies ?
Dois-je passer par du VBA ?

Ci-joint le fichier pour imager mes propos, dans la feuille "GR1" j'ai 5 listes en ligne 3-7, j'ai la source de mes zone de listes dans la feuille "Support".

Merci d'avance pour le temps que vous accordez à mon projet.
 

Pièces jointes

Bonjour @StanSigma , le Forum

Oui c'est uniquement par VBA pour du Multi-Selections sur les ListBox de Form Control ,(Non-ActiveX). C'est "normal" que ça retourne 0 en Design Mode, il lui faut du code...

Voici ce que l'on peut faire pour envoyer la selection dans la Linked Cell...

Bon Week-End
@+Thierry
 

Pièces jointes

Merci beaucoup c'est exactement cela, est ce que tu pourrais m'expliquer le code car je n'ai pas tout compris..
J'ai mis en notes les questions que j'avais
VB:
Sub ListBox1_Change()
    Dim myListBox As ListBox
    Dim myText As String
    Dim i As Long
    Set myListBox = Feuil1.ListBoxes("List Box 1") 'Pourquoi Feuil1.ListBoxes ?
    With myListBox
        For i = 1 To .ListCount
            If .Selected(i) Then
                myText = myText & ", " & .List(i) 'Tous les champs sélectionnés sont stockés dans myText (ex : P12, P16, P999) ?
            End If
        Next i
        Feuil1.Range(.LinkedCell).Value = Trim(Mid(myText, 2)) 'Pourquoi Feuil1 ? et je n'ai pas compris Trim(Mid(myText, 2).
    End With
End Sub
 
Re Bonjour @StanSigma , le Forum

1) Pour :
Set myListBox = Feuil1.ListBoxes("List Box 1") 'Pourquoi Feuil1.ListBoxes ?

Une petite image
1595077936538.png

Feuil1 est le CodeName de la Feuille "GR1", c'est une façon d'appeler les Feuilles ...

2) Pour :
myText = myText & ", " & .List(i) 'Tous les champs sélectionnés sont stockés dans myText (ex : P12, P16, P999) ?
Exact , je stock tout dans une string... Je pourrais faire une Array aussi... ou envoyer en Cells(i,1) par exemple...


3) Pour :
Feuil1.Range(.LinkedCell).Value = Trim(Mid(myText, 2)) 'Pourquoi Feuil1 ? et je n'ai pas compris Trim(Mid(myText, 2).
Pour Feuil1, c'est expliqué en Pour 1)
Pour Mid et bien le mieux est de voir l'aide sur cette Fonction
Et aussi ici c'est interressant :
Je n'indique que 2 en position de départ (J'ignore la première "," que j'ai créée) , la longueur est faculative. (par défaut, il prend toute la chaine du coup à partir de 2)
Le Trim m'élime ensuite l'espace que j'ai créé aussi dans myText = myText & ", " & .List(i)

Voilà j'espère t'avoir éclairé sur ces questions...

Bon week-end
@+Thierry
 
Merci pour ton temps et tes explications c'est top j'ai tout compris,
j'ai une dernière question, si je souhaite avoir les résultats dans des cellules différentes, tu sais comment faire?
Exemple : Au lieu d'avoir en AN2 : "C101,C110,C120" j'aurais en AN2 : C101 en AO2 : C110 en AP2, C120.

Merci
Bon week end
 
Pour faire suivre mon précédent message, j'ai testé ceci à partir de ton code :

VB:
Sub ListBox1_Change()
    Dim myListBox As ListBox
    Dim myText As String
    Dim i As Long
    Set myListBox = Feuil1.ListBoxes("List Box 1")
    With myListBox
        For i = 1 To .ListCount
            If .Selected(i) Then
                myText = .List(i)
                Sheets("GR1").Cells(2, i + 39) = myText
            End If
            
        Next i
        
    End With
End Sub

Il fonctionne lorsque je sélectionne un nouveau champs mais lorsque je désélectionne un champs, la cellule ne se vide pas...
 
Bonsoir @StanSigma , le Forum

J'ai un peu amélioré la version pour correspondre un peu mieux à ce que tu souhaites faire.
Cependant je trouve quand même que ces bons vieux "Form Controls" qui datent d'Excel 5 sont un peu long en réaction quand pilotés par VBA comparé à des ActiveX de UserForm...

J'ai devancé tes besoins aussi avec les CheckBoxes, mais par contre maintenant que je vais écrire de AN à AU pour les résultats multi-selection, je ne vois pas encore trop comment tu vas appliqué ton Algo "Filtre_global" là dessus surtout que dans l'exemple que j'ai sous les yeux pour "Emplacement" par exemple "C120" se répète à vita-eternam...

J'ai un peu optimisé cet Algo par la même occasion, mais les [Hide-Rows] "coûtent" en temps machine de toute façon sur beaucoup de Rows...

Je te souhaite tout le courage pour la suite !!!

Bonne soirée
@+Thierry
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour