Sélectionner plusieurs éléments dans une liste déroulante Excel – guide complet
Les listes déroulantes Excel sont un outil fantastique pour garantir la cohérence des données et faciliter leur saisie. Cependant, par défaut, elles vous limitent à la sélection d'un seul élément. Mais que faire si vous avez besoin de sélectionner plusieurs éléments dans une même liste déroulante ? Ce guide complet explore différentes méthodes pour activer les sélections multiples dans les listes déroulantes Excel, gérer les doublons, définir des séparateurs personnalisés et préciser la portée de ces listes.
- Autoriser les éléments en double
- Supprimer tous les éléments existants
- Définir un séparateur personnalisé
- Définir une plage spécifique
- Exécution dans une feuille de calcul protégée
Activer les sélections multiples dans une liste déroulante
Cette section propose deux méthodes pour vous aider à activer les sélections multiples dans une liste déroulante Excel.
Utilisation du code VBA
Pour permettre des sélections multiples dans une liste déroulante, vous pouvez utiliser « Visual Basic for Applications » (VBA) dans Excel. Le script peut modifier le comportement d'une liste déroulante pour en faire une liste à choix multiples. Veuillez procéder comme suit.
Étape 1 : Ouvrir l'éditeur de feuille (Code)
- Ouvrez la feuille de calcul contenant la liste déroulante pour laquelle vous souhaitez activer la sélection multiple.
- Cliquez avec le bouton droit sur l'onglet de la feuille et sélectionnez "Afficher le code" dans le menu contextuel.
Étape 2 : Utiliser le code VBA
Copiez maintenant le code VBA suivant et collez-le dans la fenêtre de la feuille (Code) qui s'ouvre.
Code VBA : Activer les sélections multiples dans une liste déroulante Excel.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Résultat
Lorsque vous revenez à la feuille de calcul, la liste déroulante vous permettra de choisir plusieurs options, voir la démonstration ci-dessous :
Le code VBA ci-dessus :
- S'applique à toutes les listes déroulantes avec validation des données dans la feuille de calcul actuelle, tant celles existantes que celles créées ultérieurement.
- Vous empêche de sélectionner le même élément plus d'une fois dans chaque liste déroulante.
- Utilise la virgule comme séparateur pour les éléments sélectionnés. Pour utiliser d'autres délimiteurs, veuillez consulter cette section pour changer le séparateur.
Utilisation de Kutools pour Excel en quelques clics
Si vous n'êtes pas à l'aise avec VBA, une alternative plus simple est la fonctionnalité "Liste déroulante multi-sélection" de "Kutools pour Excel". Cet outil convivial simplifie l'activation des sélections multiples dans les listes déroulantes, vous permettant de personnaliser le séparateur et de gérer facilement les doublons pour répondre à différents besoins.
Après avoir installé Kutools pour Excel, accédez à l'onglet "Kutools", sélectionnez "Liste déroulante" > "Liste déroulante multi-sélection". Ensuite, vous devez configurer comme suit.
- Spécifiez la plage contenant la liste déroulante à partir de laquelle vous devez sélectionner plusieurs éléments.
- Spécifiez le séparateur pour les éléments sélectionnés dans la cellule de la liste déroulante.
- Cliquez sur "OK" pour terminer les paramètres.
Résultat
Maintenant, lorsque vous cliquez sur une cellule avec une liste déroulante dans la plage spécifiée, une liste déroulante apparaîtra à côté. Il suffit de cliquer sur le bouton "+" à côté des éléments pour les ajouter à la cellule de la liste déroulante, et cliquez sur le bouton "-" pour supprimer tout élément indésirable. Voir la démonstration ci-dessous :
- Cochez l'option "Insérer un séparateur et passer à la ligne" si vous souhaitez afficher les éléments sélectionnés verticalement dans la cellule. Si vous préférez une disposition horizontale, laissez cette option décochée.
- Cochez l'option "Activer la fonction de recherche" si vous souhaitez ajouter une barre de recherche à votre liste déroulante.
- Pour appliquer cette fonctionnalité, veuillez télécharger et installer Kutools pour Excel d'abord.
Plus d'opérations pour une liste déroulante multi-sélection
Cette section regroupe les différents scénarios qui peuvent être nécessaires lors de l'activation de sélections multiples dans la liste déroulante de validation des données.
Autoriser les éléments en double dans une liste déroulante
Les doublons peuvent poser problème lorsque des sélections multiples sont autorisées dans une liste déroulante. Le code VBA ci-dessus n'autorise pas les éléments en double dans la liste déroulante. Si vous avez besoin de conserver des éléments en double, essayez le code VBA de cette section.
Code VBA : Autoriser les doublons dans une liste déroulante de validation des données
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
Target.Value = xValue1 & delimiter & xValue2
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Résultat
Maintenant, vous pouvez sélectionner plusieurs éléments dans les listes déroulantes de la feuille de calcul actuelle. Pour répéter un élément dans une cellule de liste déroulante, continuez à sélectionner cet élément dans la liste. Voir capture d'écran :
Supprimer tous les éléments existants d'une liste déroulante
Après avoir sélectionné plusieurs éléments dans une liste déroulante, vous devrez peut-être supprimer un élément existant de la cellule de la liste déroulante. Cette section fournit un autre morceau de code VBA pour vous aider à accomplir cette tâche.
Code VBA : Supprimer tous les éléments existants de la cellule de la liste déroulante
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRngDV As Range
Dim TargetRange As Range
Dim oldValue As String
Dim newValue As String
Dim delimiter As String
Dim allValues As Variant
Dim valueExists As Boolean
Dim i As Long
Dim cleanedValue As String
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Set your desired delimiter here
If Target.CountLarge > 1 Then Exit Sub
' Check if the change is within the specific range
If Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRngDV = Target.SpecialCells(xlCellTypeAllValidation)
If xRngDV Is Nothing Or Target.Value = "" Then
' Skip if there's no data validation or if the cell is cleared
Application.EnableEvents = True
Exit Sub
End If
On Error GoTo 0
If Not Intersect(Target, xRngDV) Is Nothing Then
Application.EnableEvents = False
newValue = Target.Value
Application.Undo
oldValue = Target.Value
Target.Value = newValue
' Split the old value by delimiter and check if new value already exists
allValues = Split(oldValue, delimiter)
valueExists = False
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) = newValue Then
valueExists = True
Exit For
End If
Next i
' Add or remove value based on its existence
If valueExists Then
' Remove the value
cleanedValue = ""
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) <> newValue Then
If cleanedValue <> "" Then cleanedValue = cleanedValue & delimiter
cleanedValue = cleanedValue & Trim(allValues(i))
End If
Next i
Target.Value = cleanedValue
Else
' Add the value
If oldValue <> "" Then
Target.Value = oldValue & delimiter & newValue
Else
Target.Value = newValue
End If
End If
Application.EnableEvents = True
End If
End Sub
Résultat
Ce code VBA vous permet de sélectionner plusieurs éléments dans une liste déroulante et de supprimer facilement tout élément déjà choisi. Après avoir sélectionné plusieurs éléments, si vous voulez en supprimer un spécifique, il suffit de le sélectionner à nouveau dans la liste.
Définir un séparateur personnalisé
Le délimiteur est défini comme une virgule dans les codes VBA ci-dessus. Vous pouvez modifier cette variable pour utiliser n'importe quel caractère préféré comme séparateur pour les sélections de la liste déroulante. Voici comment procéder :
Comme vous pouvez le voir, les codes VBA ci-dessus contiennent tous la ligne suivante :
delimiter = ", "
Il vous suffit de remplacer la virgule par n'importe quel séparateur dont vous avez besoin. Par exemple, si vous souhaitez séparer les éléments par un point-virgule, changez la ligne en :
delimiter = "; "
delimiter = vbNewLine
Définir une plage spécifique
Les codes VBA ci-dessus s'appliquent à toutes les listes déroulantes de la feuille de calcul actuelle. Si vous souhaitez que les codes VBA ne s'appliquent qu'à une certaine plage de listes déroulantes, vous pouvez spécifier la plage dans le code VBA ci-dessus comme suit.
Comme vous pouvez le voir, les codes VBA ci-dessus contiennent tous la ligne suivante :
Set TargetRange = Me.UsedRange
Il vous suffit de changer la ligne en :
Set TargetRange = Me.Range("C2:C10")
Exécution dans une feuille de calcul protégée
Imaginez que vous ayez protégé une feuille de calcul avec le mot de passe "123" et défini les cellules de la liste déroulante comme "Déverrouillées" avant d'activer la protection, assurant ainsi que la fonction multi-sélection reste active après la protection. Cependant, les codes VBA mentionnés ci-dessus ne fonctionnent pas dans ce cas, et cette section décrit un autre script VBA spécialement conçu pour gérer la fonction multi-sélection dans une feuille de calcul protégée.
Code VBA : Activer la sélection multiple dans une liste déroulante sans doublons
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Dim isProtected As Boolean
Dim pswd As Variant
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
' Check if sheet is protected
isProtected = Me.ProtectContents
If isProtected Then
' If protected, temporarily unprotect. Adjust or remove the password as needed.
pswd = "yourPassword" ' Change or remove this as needed
Me.Unprotect Password:=pswd
End If
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then
If isProtected Then Me.Protect Password:=pswd
Exit Sub
End If
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
' Re-protect the sheet if it was protected
If isProtected Then
Me.Protect Password:=pswd
End If
End Sub
En activant les sélections multiples dans les listes déroulantes Excel, vous pouvez grandement améliorer la fonctionnalité et la flexibilité de vos feuilles de calcul. Que vous soyez à l'aise avec le codage VBA ou que vous préfériez une solution plus simple comme Kutools, vous avez désormais la capacité de transformer vos listes déroulantes standard en outils dynamiques multi-sélection. Avec ces compétences, vous êtes maintenant équipé pour créer des documents Excel plus dynamiques et conviviaux. Pour ceux qui souhaitent approfondir les capacités d'Excel, notre site web regorge de tutoriels. Découvrez plus d'astuces et de conseils Excel ici.
Articles connexes
Autocomplétion lors de la saisie dans une liste déroulante Excel
Si vous avez une liste déroulante de validation des données avec de grandes valeurs, vous devez faire défiler la liste simplement pour trouver celle qui convient, ou taper le mot entier directement dans la zone de liste. S'il existe une méthode permettant d'activer l'autocomplétion lors de la saisie de la première lettre dans la liste déroulante, tout deviendra plus facile. Ce tutoriel fournit la méthode pour résoudre le problème.
Créer une liste déroulante à partir d'un autre classeur dans Excel
Il est assez facile de créer une liste déroulante de validation des données entre les feuilles de calcul d'un même classeur. Mais si les données de la liste dont vous avez besoin pour la validation se trouvent dans un autre classeur, que feriez-vous ? Dans ce tutoriel, vous apprendrez comment créer une liste déroulante à partir d'un autre classeur dans Excel en détail.
Créer une liste déroulante consultable dans Excel
Pour une liste déroulante avec de nombreuses valeurs, trouver celle qui convient n'est pas une tâche facile. Auparavant, nous avons introduit une méthode d'autocomplétion de la liste déroulante lors de la saisie de la première lettre dans la zone de liste déroulante. Outre la fonction d'autocomplétion, vous pouvez également rendre la liste déroulante consultable pour améliorer l'efficacité de travail lors de la recherche des bonnes valeurs dans la liste déroulante. Pour rendre la liste déroulante consultable, essayez la méthode de ce tutoriel.
Remplissage automatique d'autres cellules lors de la sélection de valeurs dans une liste déroulante Excel
Disons que vous avez créé une liste déroulante basée sur les valeurs de la plage de cellules B8:B14. Lorsque vous sélectionnez une valeur dans la liste déroulante, vous souhaitez que les valeurs correspondantes dans la plage de cellules C8:C14 soient automatiquement remplies dans une cellule sélectionnée. Pour résoudre le problème, les méthodes de ce tutoriel vous seront utiles.
Meilleurs outils de productivité Office
Dynamisez vos compétences Excel avec Kutools pour Excel et découvrez une efficacité inégalée. Kutools pour Excel propose plus de300 fonctionnalités avancées pour booster votre productivité et gagner du temps. Cliquez ici pour obtenir la fonctionnalité la plus essentielle pour vous...
Office Tab apporte une interface à onglets à Office, et facilite grandement votre travail
- Activez la modification et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
- Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, au lieu d’ouvrir de nouvelles fenêtres.
- Augmentez votre productivité de50% et réduisez des centaines de clics de souris chaque jour!
Table des matières
- Activer les sélections multiples
- Utilisation du code VBA
- Utilisation de Kutools pour Excel en quelques clics
- Plus d'opérations
- Autoriser les éléments en double
- Supprimer tous les éléments existants
- Définir un séparateur personnalisé
- Définir une plage spécifique
- Exécution dans une feuille de calcul protégée
- Articles connexes
- Les meilleurs outils de productivité Office
- Commentaires