Sélectionnez plusieurs éléments dans la liste déroulante Excel – guide complet
Les listes déroulantes Excel sont un outil fantastique pour garantir la cohérence des données et la facilité de saisie. Cependant, par défaut, ils vous limitent à sélectionner un seul élément. Mais que se passe-t-il si vous devez sélectionner plusieurs éléments dans la même liste déroulante ? Ce guide complet explorera les méthodes permettant d'activer plusieurs sélections dans les listes déroulantes Excel, de gérer les doublons, de définir des séparateurs personnalisés et de définir 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éfinition d'une plage spécifiée
- Exécution dans une feuille de calcul protégée
Activation de plusieurs sélections dans la liste déroulante
Cette section propose deux méthodes pour vous aider à activer plusieurs sélections dans la liste déroulante dans Excel.
Utiliser le code VBA
Pour autoriser plusieurs sélections dans la liste déroulante, vous pouvez utiliser Visual Basic pour 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 : Ouvrez 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 Voir 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 d'ouverture de la feuille (Code).
Code VBA : activez les sélections multiples dans la 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ésultats
Lorsque vous revenez à la feuille de calcul, la liste déroulante vous permettra de choisir plusieurs options. Voir la démo ci-dessous :
Le code VBA ci-dessus :
- S'applique à toutes les listes déroulantes de validation des données dans la feuille de calcul actuelle, existantes et celles créées ultérieurement.
- Vous empêche de sélectionner le même élément plusieurs 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 consultez cette section pour changer le séparateur.
Utiliser Kutools for Excel en quelques clics
Si vous n'êtes pas à l'aise avec VBA, une alternative plus simple consiste à Kutools for Excel's Liste déroulante à sélection multiple fonctionnalité. Cet outil convivial simplifie l'activation de plusieurs sélections dans les listes déroulantes, vous permettant de personnaliser le séparateur et de gérer les doublons sans effort pour répondre à vos différents besoins.
Après installation de Kutools pour Excel, Aller à la Kutools onglet, sélectionnez La liste déroulante > Liste déroulante à sélection multiple. Ensuite, vous devez configurer comme suit.
- Spécifiez la plage contenant la liste déroulante dans 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.
- Cliquer sur OK pour terminer les réglages.
Résultats
Désormais, lorsque vous cliquez sur une cellule avec une liste déroulante dans la plage spécifiée, une zone de liste apparaîtra à côté d'elle. Cliquez simplement sur le bouton « + » à côté des éléments pour les ajouter à la cellule déroulante, puis cliquez sur le bouton « - » pour supprimer les éléments dont vous ne voulez plus. Voir la démo ci-dessous :
- Vérifiez la Envelopper le texte après l'insertion d'un séparateur option si vous souhaitez afficher les éléments sélectionnés verticalement dans la cellule. Si vous préférez une liste horizontale, laissez cette option décochée.
- Vérifiez la Activer la recherche option 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 la liste déroulante à sélection multiple
Cette section rassemble les différents scénarios qui peuvent être requis lors de l'activation de plusieurs sélections dans la liste déroulante Validation des données.
Autoriser les éléments en double dans la liste déroulante
Les doublons peuvent poser problème lorsque plusieurs sélections 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 devez conserver des éléments en double, essayez le code VBA dans cette section.
Code VBA : autoriser les doublons dans la 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ésultats
Vous pouvez désormais 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 :
Suppression de tous les éléments existants de la liste déroulante
Après avoir sélectionné plusieurs éléments dans une liste déroulante, vous devrez parfois 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 : supprimez 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ésultats
Ce code VBA vous permet de sélectionner plusieurs éléments dans une liste déroulante et de supprimer facilement tout élément que vous avez déjà choisi. Après avoir sélectionné plusieurs éléments, si vous souhaitez en supprimer un en particulier, sélectionnez-le simplement à 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 avec n'importe quel caractère préféré à utiliser 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 ont tous la ligne suivante :
delimiter = ", "
Il vous suffit de remplacer la virgule par n'importe quel séparateur selon vos besoins. Par exemple, vous souhaitez séparer les éléments par un point-virgule, remplacez la ligne par :
delimiter = "; "
delimiter = vbNewLine
Définition d'une plage spécifiée
Les codes VBA ci-dessus s'appliquent à toutes les listes déroulantes de la feuille de calcul actuelle. Si vous souhaitez uniquement que les codes VBA s'appliquent à 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 ont tous la ligne suivante :
Set TargetRange = Me.UsedRange
Il vous suffit de changer la ligne comme suit :
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éfinissez les cellules de la liste déroulante sur "Débloqué" avant d'activer la protection, garantissant ainsi que la fonction de sélection multiple reste active après la protection. Cependant, les codes VBA mentionnés ci-dessus ne peuvent pas fonctionner dans ce cas, et cette section décrit un autre script VBA spécialement conçu pour gérer la fonctionnalité de sélection multiple dans une feuille de calcul protégée.
Code VBA : activer la sélection multiple dans la 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 plusieurs sélections dans les listes déroulantes Excel, vous pouvez considérablement 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 possibilité de transformer vos listes déroulantes standard en outils dynamiques à sélection multiple. Grâce à ces compétences, vous êtes désormais équipé pour créer des documents Excel plus dynamiques et conviviaux. Pour ceux qui souhaitent approfondir les fonctionnalités d’Excel, notre site Web propose une multitude de didacticiels. Découvrez plus de trucs et astuces Excel ici.
Articles Relatifs
Saisie semi-automatique lors de la saisie dans la 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 vers le bas juste pour trouver la bonne, ou taper le mot entier directement dans la zone de liste. S'il existe une méthode permettant de compléter automatiquement lors de la saisie de la première lettre dans la liste déroulante, tout deviendra plus facile. Ce didacticiel 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 parmi les feuilles de calcul d'un classeur. Mais si les données de liste dont vous avez besoin pour la validation des données se trouvent dans un autre classeur, que feriez-vous? Dans ce didacticiel, vous apprendrez à 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 la bonne n'est pas une tâche facile. Auparavant, nous avons introduit une méthode de liste déroulante de remplissage automatique lorsque vous entrez la première lettre dans la liste déroulante. Outre la fonction de saisie semi-automatique, vous pouvez également rendre la liste déroulante consultable pour améliorer l'efficacité du travail en trouvant les valeurs appropriées dans la liste déroulante. Pour rendre la liste déroulante consultable, essayez la méthode de ce didacticiel.
Remplir automatiquement d'autres cellules lors de la sélection de valeurs dans la liste déroulante Excel
Supposons que vous ayez 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 renseignées dans une cellule sélectionnée. Pour résoudre le problème, les méthodes de ce didacticiel vous rendront service.
Meilleurs outils de productivité bureautique
Améliorez vos compétences Excel avec Kutools for Excel et faites l'expérience d'une efficacité comme jamais auparavant. Kutools for Excel offre plus de 300 fonctionnalités avancées pour augmenter la productivité et gagner du temps. Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...
Office Tab apporte une interface à onglets à Office et facilite grandement votre travail
- Activer l'édition 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, plutôt que dans de nouvelles fenêtres.
- Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
Table des matières
- Activation de plusieurs sélections
- Utilisation du code VBA
- Utiliser Kutools for 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éfinition d'une plage spécifiée
- Exécution dans une feuille de calcul protégée
- Articles Relatifs
- Les meilleurs outils de productivité de bureau
- Description