Table des matières
Selon les circonstances, vous pouvez avoir besoin de sélectionner plusieurs valeurs dans une liste déroulante. Dans ce tutoriel, nous allons vous montrer comment effectuer une sélection multiple dans une liste déroulante. Pour cette session, nous utilisons Excel 2019, n'hésitez pas à utiliser votre version préférée.
Avant de plonger dans la session, faisons connaissance avec le jeu de données qui constitue la base de nos exemples.
Nous disposons ici de plusieurs éléments de papeterie, à l'aide desquels nous allons créer une liste déroulante et y sélectionner plusieurs éléments.
Notez qu'il s'agit d'un ensemble de données simple pour que les choses restent claires. Dans un scénario pratique, vous pouvez rencontrer un ensemble de données beaucoup plus grand et complexe.
Cahier d'exercices
Vous pouvez télécharger le cahier d'exercices à partir du lien ci-dessous.
Faire une sélection multiple dans une liste déroulante.xlsm
Sélection multiple dans une liste déroulante
Tout d'abord, nous devons créer une liste déroulante sur la base de nos papeteries. Créons-la rapidement. N'hésitez pas à visiter l'article concernant la création d'une liste déroulante.
Dans le Validation des données sélectionner la boîte de dialogue LISTE et insérer la plage de cellules des éléments.
B4:B11 est la plage qui contient les éléments de papeterie. Vous trouverez maintenant la liste déroulante.
Lire la suite : Liste déroulante Excel en fonction de la sélection
1. sélectionner plusieurs éléments (permet une sélection en double)
Une liste déroulante classique sélectionne toujours un seul élément. Vous pouvez voir ici que nous avons sélectionné Stylo de la liste (image ci-dessous).
Maintenant, si nous sélectionnons un autre élément, disons... Crayon
alors il remplacera la valeur précédente. Seulement Crayon restera sélectionné.
Pour sélectionner plusieurs éléments, nous devons utiliser la fonction VBA Ouvrez le Microsoft Visual Basic pour les applications (appuyez sur ALT + F11 pour l'ouvrir).
Maintenant, double-cliquez sur le nom ou le numéro de la feuille de calcul où vous voulez sélectionner plusieurs éléments dans la liste déroulante. Vous trouverez la fenêtre de code pour cette feuille particulière.
Voici la fenêtre de code pour Feuille 2 dans notre classeur (nous avons la liste déroulante dans cette feuille).
Une fois la fenêtre de code ouverte, insérez-y le code suivant
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String On Error GoTo Exitsub If Target.Address = "$D$4" 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.UndoOldvalue = Target.Value Si 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
Enregistrez le code, et essayez maintenant de sélectionner des valeurs dans la liste déroulante.
Ayant choisi Crayon nous allons sélectionner un autre élément Carnet de notes Et vous pouvez voir, nous avons trouvé les deux articles (image ci-dessous).
Ce code nous permettra de répéter la sélection. Disons que si nous sélectionnons Crayon encore,
on retrouvera l'élément dans la boîte de sélection.
Explication du code
Nous avons déclaré deux chaînes de caractères Ancienne valeur et Nouvelle valeur .
Vous pouvez voir que nous avons créé la liste déroulante dans la section D4 cellule, c'est pourquoi notre adresse cible est D4 De plus, nous avons revérifié si la cellule utilise ou non la validation des données en utilisant la méthode suivante Cellules spéciales de la cible .
Une fois qu'une valeur est sélectionnée, nous désactivons les événements ( Application.EnableEvents = False
) afin que les changements ne déclenchent pas à nouveau l'événement. Ensuite, nous avons stocké l'élément sélectionné dans le champ Nouvelle valeur .
Après avoir annulé la modification, nous avons placé la valeur dans le fichier Ancienne valeur Vérifiez ensuite si le Ancienne valeur est vide ou non. Si elle est vide (ce qui signifie qu'une seule valeur est sélectionnée), elle renvoie l'adresse de l'utilisateur. Nouvelle valeur Sinon, concaténer les Ancienne valeur et Nouvelle valeur .
Avant de terminer la réinitialisation de l'événement, de sorte que nous pouvons changer si nécessaire.
Lire la suite : Liste déroulante dépendante multiple Excel VBA
2. sélectionnez plusieurs éléments dans la liste déroulante (sélection unique uniquement).
Dans la section précédente, nous avons vu les sélections multiples où la répétition était autorisée. Si vous ne voulez pas cela, alors suivez cette section.
Pour des raisons de commodité, nous avons utilisé une feuille séparée pour cette démonstration. Cette fois, nous sommes à la feuille 3. Écrivez le code suivant dans la fenêtre de code de cette feuille.
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else : If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.ValueApplication.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
Y a-t-il une différence par rapport au code précédent ? Regardez de plus près, vous pourrez repérer la légère différence.
Ici, nous avons utilisé un VBA fonction appelée INSTR . le INSTR renvoie la position de la première occurrence d'une sous-chaîne dans une chaîne de caractères. Consultez l'article INSTR pour plus d'informations.
En utilisant cette opération logique avec InStr(1, Oldvalue, Newvalue) = 0, nous avons vérifié si les valeurs sont trouvées ou pas. Si l'opération logique retourne VRAI (introuvable auparavant), il permet de sélectionner l'élément et de le concaténer avec la valeur précédente.
Enregistrez le code et essayez maintenant de sélectionner un élément qui a déjà été sélectionné.
Ici, nous avons déjà sélectionné Crayon si nous voulons le sélectionner à nouveau, nous ne pouvons pas. Il n'autorise pas les valeurs en double.
Lire la suite : Comment créer une liste déroulante à partir d'une autre feuille dans Excel ?
3. sélectionner les éléments dans la nouvelle ligne
Jusqu'à présent, nous avons constaté que les éléments sont séparés par une virgule. Dans cette section, nous allons organiser les éléments sélectionnés entre les nouvelles lignes.
Pour simplifier, nous fusionnons quelques cellules avec les D4 Pour ce faire, sélectionnez les cellules que vous souhaitez fusionner et cliquez sur Fusionner et centrer de la Alignement de la section Accueil onglet.
La cellule gagnera en hauteur.
Examinons maintenant le code permettant de séparer les éléments par une nouvelle ligne. Utilisez le code suivant
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else : If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.ValueApplication.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & ; vbNewLine & ; Newvalue Else : Target.Value = Oldvalue End If End If End If Application.EnableEvents = True Exitsub : Application.EnableEvents = True End Sub
La seule différence par rapport au code précédent est que cette fois nous avons utilisé vbNewLine entre les deux AncienneValeur et NouvelleValeur .
vbNewLine fournit une nouvelle ligne entre les éléments.
Maintenant, sélectionnez les éléments.
Nous sélectionnons un article Stylo qui apparaît dans l'image ci-dessus. Sélectionnez maintenant un autre élément.
Vous constaterez que les deux articles se trouvent sur des lignes différentes.
Ici, nous avons deux valeurs, qui se trouvent sur deux lignes différentes. En sélectionnant une autre valeur, celle-ci sera ajoutée à une autre ligne. Chaque valeur se trouvera sur une nouvelle ligne.
Notez que si vous souhaitez un autre délimiteur pour séparer les éléments, utilisez-le entre guillemets à la place de vbNewline .
Conclusion
C'est tout pour aujourd'hui. Nous avons énuméré plusieurs approches pour effectuer des sélections multiples dans une liste déroulante. Nous espérons que vous trouverez cela utile. N'hésitez pas à commenter si quelque chose vous semble difficile à comprendre. Faites-nous part de toute autre méthode que nous avons oubliée ici.