Sélectionnez plusieurs éléments dans une liste déroulante dans Excel

Un de mes collègues m'a demandé s'il était possible de faire des sélections multiples dans une liste déroulante dans Excel.

Lorsque vous créez une liste déroulante, vous ne pouvez faire qu'une seule sélection. Si vous sélectionnez un autre élément, le premier est remplacé par la nouvelle sélection.

Il voulait faire plusieurs sélections à partir de la même liste déroulante de manière à ce que les sélections soient ajoutées à la valeur déjà présente dans la cellule.

Quelque chose comme indiqué ci-dessous dans la photo :

Il n'y a aucun moyen de le faire avec les fonctionnalités intégrées d'Excel.

Le seul moyen consiste à utiliser un code VBA, qui s'exécute chaque fois que vous effectuez une sélection et ajoute la valeur sélectionnée à la valeur existante.

Regarder la vidéo - Comment sélectionner plusieurs éléments dans une liste déroulante Excel

Comment faire des sélections multiples dans une liste déroulante

Dans ce tutoriel, je vais vous montrer comment faire des sélections multiples dans une liste déroulante Excel (avec répétition et sans répétition).

Cela a été l'un des didacticiels Excel les plus populaires sur ce site. Comme je reçois beaucoup de questions similaires, j'ai décidé de créer une section FAQ à la fin de ce tutoriel. Donc, si vous avez des questions après avoir lu ceci, veuillez d'abord consulter la section FAQ.

La création d'une liste déroulante qui permet plusieurs sélections comporte deux parties :

  • Création de la liste déroulante.
  • Ajout du code VBA au back-end.

Création de la liste déroulante dans Excel

Voici les étapes pour créer une liste déroulante dans Excel :

  1. Sélectionnez la cellule ou la plage de cellules dans laquelle vous souhaitez que la liste déroulante apparaisse (C2 dans cet exemple).
  2. Accédez à Données -> Outils de données -> Validation des données.
  3. Dans la boîte de dialogue Validation des données, dans l'onglet Paramètres, sélectionnez « Liste » comme critères de validation.
  4. Dans le champ Source, sélectionnez les cellules contenant les éléments souhaités dans la liste déroulante.
  5. Cliquez sur OK.

Maintenant, la cellule C2 a une liste déroulante qui affiche les noms des éléments dans A2:A6.

À partir de maintenant, nous avons une liste déroulante dans laquelle vous pouvez sélectionner un élément à la fois (comme indiqué ci-dessous).

Pour permettre à cette liste déroulante de nous permettre de faire plusieurs sélections, nous devons ajouter le code VBA dans le back-end.

Les deux sections suivantes de ce tutoriel vous donneront le code VBA pour permettre des sélections multiples dans la liste déroulante (avec et sans répétition).

Code VBA pour autoriser plusieurs sélections dans une liste déroulante (avec répétition)

Vous trouverez ci-dessous le code Excel VBA qui nous permettra de sélectionner plus d'un élément dans la liste déroulante (permettant des répétitions dans la sélection):

Private Sub Worksheet_Change (ByVal Target As Range) 'Code by Sumit Bansal from https://trumpexcel.com' Pour effectuer plusieurs sélections dans une liste déroulante dans Excel Dim Oldvalue As String Dim Newvalue As String En cas d'erreur GoTo Exitsub If Target.Address = "$C$2" Then If Target.SpecialCells(xlCellTypeAllValidation) N'est Rien Alors GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Vous devez maintenant placer ce code dans un module de VB Editor (comme indiqué ci-dessous dans la section « Où mettre le code VBA » ).

Lorsque vous avez placé ce code dans le backend (couvert plus loin dans ce didacticiel), il vous permettra de faire plusieurs sélections dans la liste déroulante (comme indiqué ci-dessous).

Notez que si vous sélectionnez un élément plus d'une fois, il sera saisi à nouveau (la répétition est autorisée).

Essayez-le vous-même… Téléchargez le fichier d'exemple

Code VBA pour autoriser plusieurs sélections dans une liste déroulante (sans répétition)

Beaucoup de gens ont posé des questions sur le code pour sélectionner plusieurs éléments dans une liste déroulante sans répétition.

Voici le code qui fera en sorte qu'un élément ne puisse être sélectionné qu'une seule fois afin qu'il n'y ait pas de répétitions :

Private Sub Worksheet_Change (ByVal Target As Range) 'Code by Sumit Bansal from https://trumpexcel.com' Pour autoriser plusieurs sélections dans une liste déroulante dans Excel (sans répétition) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$C$2" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target. Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & ", " & Newvalue Else : Target.Value = Oldvalue End If End If End If End If Application.EnableEvents = True Exitsub : Application.EnableEvents = True End Sub

Vous devez maintenant placer ce code dans un module de VB Editor (comme indiqué dans la section suivante de ce didacticiel).

Ce code vous permettra de sélectionner plusieurs éléments dans la liste déroulante. Cependant, vous ne pourrez sélectionner un élément qu'une seule fois. Si vous essayez de le sélectionner à nouveau, rien ne se passera (comme indiqué ci-dessous).

Essayez-le vous-même… Téléchargez le fichier d'exemple

Où mettre le code VBA

Avant de commencer à utiliser ce code dans Excel, vous devez le placer dans le back-end, de sorte qu'il soit déclenché chaque fois qu'il y a un changement dans la sélection déroulante.

Suivez les étapes ci-dessous pour mettre le code VBA dans le backend d'Excel :

  1. Allez dans l'onglet Développeur et cliquez sur Visual Basic (vous pouvez également utiliser le raccourci clavier - Alt + F11). Cela ouvrira l'éditeur Visual Basic.
  2. Il devrait y avoir un volet Explorateur de projet à gauche (s'il n'y est pas, utilisez Ctrl + R pour le rendre visible).
  3. Double-cliquez sur Nom de la feuille de calcul (dans le volet de gauche) où se trouve la liste déroulante. Cela ouvre la fenêtre de code pour cette feuille de calcul.
  4. Dans la fenêtre de code, copiez et collez le code ci-dessus.
  5. Fermez l'éditeur VB.

Maintenant, lorsque vous revenez au menu déroulant et effectuez des sélections, cela vous permettra de faire plusieurs sélections (comme indiqué ci-dessous) :

Essayez-le vous-même… Téléchargez le fichier d'exemple

Noter: Étant donné que nous utilisons un code VBA pour ce faire, vous devez enregistrer le classeur avec une extension .xls ou .xlsm.

Foire aux questions (FAQ)

J'ai créé cette section pour répondre à certaines des questions les plus posées sur ce tutoriel et le code VBA. Si vous avez des questions, je vous demande d'abord de parcourir cette liste de questions.

Q : Dans le code VBA, la fonctionnalité concerne uniquement la cellule C2. Comment puis-je l'obtenir pour d'autres cellules? Réponse : Pour obtenir cette liste déroulante de sélection multiple dans d'autres cellules, vous devez modifier le code VBA dans le backend. Supposons que vous vouliez obtenir ceci pour C2, C3 et C4, vous devez remplacer la ligne suivante dans le code : If Target.Address = "$C$2" Then with this line: If Target.Address = "$C$2" Ou Target.Address = "$C$3" Ou Target.Address = "$C$4" Then
Q : Je dois créer plusieurs listes déroulantes dans toute la colonne « C ». Comment puis-je obtenir cela pour toutes les cellules des colonnes avec la fonctionnalité de sélection multiple ? Réponse : Pour activer les sélections multiples dans les listes déroulantes d'une colonne entière, remplacez la ligne suivante dans le code : If Target.Address = "$C$2" Then par cette ligne : If Target.Column = 3 Then Sur des lignes similaires, si vous voulez cette fonctionnalité dans les colonnes C et D, utilisez la ligne ci-dessous : Si Target.Column = 3 ou Target.Column = 4 Then
Q : Je dois créer plusieurs listes déroulantes à la suite. Comment puis-je faire ceci? Réponse : Si vous devez créer des listes déroulantes avec plusieurs sélections à la suite (disons la deuxième ligne), vous devez remplacer la ligne de code ci-dessous : If Target.Address = "$C$2" Then par cette ligne : Si Target.Row = 2 Then De même, si vous voulez que cela fonctionne pour plusieurs lignes (disons la deuxième et la troisième ligne), utilisez plutôt la ligne de code ci-dessous : If Target.Row = 2 ou Target.Row = 3 Then
Q : À partir de maintenant, les sélections multiples sont séparées par une virgule. Comment puis-je changer cela pour les séparer avec un espace (ou tout autre séparateur). Réponse : Pour les séparer par un séparateur autre qu'une virgule, vous devez remplacer la ligne de code VBA suivante : Target.Value = Oldvalue & ", " & Newvalue par cette ligne de code VBA : Target.Value = Oldvalue & " " & Newvalue De même, si vous souhaitez remplacer la virgule par un autre caractère, tel que |, vous pouvez utiliser la ligne de code suivante : Target.Value = Oldvalue & "| " & Newvalue
Q : Puis-je obtenir chaque sélection sur une ligne distincte dans la même cellule ? Réponse : Oui, vous pouvez. Pour obtenir cela, vous devez remplacer la ligne de code VBA ci-dessous : Target.Value = Oldvalue & ", " & Newvalue par cette ligne de code : Target.Value = Oldvalue & vbNewLine & Newvalue vbNewLine insère une nouvelle ligne dans la même cellule . Ainsi, chaque fois que vous effectuez une sélection dans la liste déroulante, elle sera insérée dans une nouvelle ligne.
Q : Puis-je faire fonctionner la fonctionnalité de sélection multiple dans une feuille protégée ? Réponse : Oui, vous pouvez. Pour ce faire, vous devez faire deux choses : Ajoutez la ligne suivante dans le code (juste après l'instruction DIM) : Me.Protect UserInterfaceOnly :=True Deuxièmement, vous devez vous assurer que les cellules - qui ont la liste déroulante avec une fonctionnalité de sélection multiple - ne sont pas verrouillées lorsque vous protégez la feuille entière. Voici un tutoriel sur la façon de procéder : Verrouiller les cellules dans Excel 

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave