XL 2010 Liste déroulante à sélection multiples

morganeexcel

XLDnaute Nouveau
Bonjour à tous,
Nouvelle sur ce forum, j'essaie depuis plusieurs heures de comprendre comment créer dans un tableau une liste avec la possibilité de sélectionner plusieurs choix...
Je me noies sous les informations de VBA, listbox , etc... plutôt novice, j'ai vraiment du mal à mettre en application sur mon excel. je vous joins le fichier sur lequel il est possible de travailler.
Je voudrais vraiment comprendre la manipulation à effectuer, car j'ai l'impression que ma demande est simple et voudrait au moins avoir appris un truc dans toutes ces recherches ^^
En bref, j'ai besoin de pouvoir , dans une colonne, sélectionner en liste déroulante une ou plusieurs années de mon choix... j'ai créé la liste années, la liste déroulante, mais un seul choix possible ... et je bloque avec tous ces codes à entrer , c'est du chinois!
Merci d'avance pour l'attention portée à ma demande, et désolée si vous considérez ce post comme un doublon, j'ai écumé tous les autres et je ne parviens pas à trouver ma solution :)

Morgane
 

Pièces jointes

  • Classeur1.xlsx
    8.8 KB · Affichages: 26

Nairolf

XLDnaute Accro
Salut,

En effet, la liste par validation de données ne permet que de sélectionner une seule valeur.

Afin de répondre au mieux à ton besoin, il faudrait que tu détailles plus ce que tu veux obtenir dans ton fichier exemple, car les possibilités sont nombreuses et plus ou moins complexe.
Donc, en clair, que veux-tu faire en sélectionnant plusieurs années ?
 

morganeexcel

XLDnaute Nouveau
Bonjour Nairolf,
Merci beaucoup pour ce retour rapide.
Tout simplement, je souhaiterai pouvoir sélectionner plusieurs années pour qu'ensuite, en utilisant le filtre de la colonne, je ne puisse voir que les lignes dont les années filtrées sont sélectionnées...
dans la cellule où j'aurai opéré le choix de plusieurs années, je souhaiterai que cela apparaisse ainsi > pour un choix année 2015 > "2015", pour un choix années 2015,2016,2017 " 2015-2016-2017"...
Suis-je assez claire ?
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @morganeexcel :), @Nairolf ;),

La demande est simple quant à la question. la demande est plus compliquée quant à la réponse.

Un exemple vite fait (pas le temps de commenter pour l'instant :(). Tout le code est dans le module de code de l"onglet "Feuil1".
VB:
Option Explicit

Dim Change As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i&
   ListBox1.Visible = False
   If Target.Count <> 1 Then Exit Sub
   If Intersect(Target, Range("c2:c" & Rows.Count)) Is Nothing Then Exit Sub
   ListBox1.ListFillRange = "a1:a6"
   ListBox1.Top = Target.Top + Target.Height + 2
   ListBox1.Left = Target.Left + Target.Width / 3
   On Error GoTo ERR001
   Change = False
   For i = 0 To ListBox1.ListCount - 1
      If InStr(Target, ListBox1.List(i)) > 0 Then ListBox1.Selected(i) = True
   Next i
   ListBox1.Visible = True
ERR001:
   Change = True
End Sub

Private Sub ListBox1_Change()
Dim i&, s As String
   If Not Change Then Exit Sub
   For i = 0 To ListBox1.ListCount - 1
      If ListBox1.Selected(i) Then
         s = s & " " & ListBox1.List(i)
      End If
   Next i
   ActiveCell = Application.Trim(s)
End Sub
 

Pièces jointes

  • morganeexcel- choix multiples- v1.xlsm
    25.5 KB · Affichages: 43
Dernière édition:

morganeexcel

XLDnaute Nouveau
Bonjour mapomme,
alors tout d'abord merci beaucoup ! c'est tout à fait ce que je recherche (la compréhension est donc possible, ça me rassure ^^ ).
Par contre, évidemment je suis incapable de réitérer la manip', mais si je veux bouger ma liste d'années à partir de laquelle est programmé le choix multiple (pour la mettre en feuillet 2 par exemple, et éviter de la voir sur mon tableau principal...), c'est compliqué ? :-D
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,
mais si je veux bouger ma liste d'années à partir de laquelle est programmé le choix multiple (pour la mettre en feuillet 2 par exemple, et éviter de la voir sur mon tableau principal...), c'est compliqué ?

Dans le nouveau code, vous avez la ligne suivante:
VB:
For Each x In Worksheets("Feuil3").Range("a1:a6").Value: ListBox1.AddItem x: Next
  • Remplacez Feuil3 par le nom de l'onglet de la feuille comportant votre liste d'années.
  • Remplacer "a1:a6" par votre plage des années
 

Pièces jointes

  • morganeexcel- choix multiples- v2.xlsm
    26.1 KB · Affichages: 36
Dernière édition:

Discussions similaires

Réponses
2
Affichages
273
Réponses
21
Affichages
1 K