Passer au contenu principal
 

Sélectionnez plusieurs éléments dans la liste déroulante Excel – guide complet

Auteur : Siluvia Dernière modification: 2024-03-26

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.

Conseil : Avant d'appliquer les méthodes suivantes, assurez-vous d'avoir au préalable créé des listes déroulantes dans vos feuilles de calcul. Si vous souhaitez savoir comment créer des listes déroulantes de validation des données, suivez les instructions de cet article : Comment créer des listes déroulantes de validation des données dans Excel.

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)
  1. Ouvrez la feuille de calcul contenant la liste déroulante pour laquelle vous souhaitez activer la sélection multiple.
  2. 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 :

Remarques:
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.

  1. Spécifiez la plage contenant la liste déroulante dans laquelle vous devez sélectionner plusieurs éléments.
  2. Spécifiez le séparateur pour les éléments sélectionnés dans la cellule de la liste déroulante.
  3. 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 :

Remarques:
  • 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 = "; "
Remarque : Pour remplacer le délimiteur par un caractère de nouvelle ligne dans ces codes VBA, remplacez cette ligne par :
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")
Notes: Ici C2: C10 est la plage contenant la liste déroulante que vous souhaitez définir comme sélections multiples.

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
Notes: Dans le code, veillez à remplacer «votre mot de passe" dans la ligne pswd = "votre mot de passe" avec le mot de passe réel que vous utilisez pour protéger la feuille de calcul. Par exemple, si votre mot de passe est "abc123", alors la ligne devrait être mot de passe = "abc123".

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.

Meilleurs outils de productivité bureautique

🤖 Aide à l'IA Kutools: Révolutionner l'analyse des données en s'appuyant sur : Exécution intelligente   |  Générer du code  |  Créer des formules personnalisées  |  Analyser les données et générer des graphiques  |  Invoquer les fonctions Kutools...
Caractéristiques populaires: Rechercher, mettre en évidence ou identifier les doublons   |  Supprimer les lignes vides   |  Combinez des colonnes ou des cellules sans perdre de données   |   Tour sans formule 
Super recherche: VSearchup à critères multiples    VSearch à valeurs multiples  |   Recherche virtuelle sur plusieurs feuilles   |   Recherche floue ....
Liste déroulante avancée: Créez rapidement une liste déroulante   |  Liste déroulante dépendante   |  Liste déroulante à sélection multiple ....
Gestionnaire de colonnes: Ajouter un nombre spécifique de colonnes  |  Déplacer les colonnes  |  Basculer l'état de visibilité des colonnes masquées  |  Comparer les plages et les colonnes 
Caractéristiques en vedette: Mise au point de la grille   |  Voir Design   |   Grande barre de formule    Gestionnaire de classeurs et de feuilles   |  Ressources (Texte automatique)   |  Sélecteur de date   |  Combiner des feuilles de travail   |  Crypter/déchiffrer les cellules    Envoyer des e-mails par liste   |  Super filtre   |   Filtre spécial (filtre gras/italique/barré...) ...
Les 15 meilleurs ensembles d'outils12 Texte Outils (Ajouter du texte, Supprimer les caractères, ...)   |   50+ Graphique Types (Diagramme de Gantt, ...)   |   40+ Pratique Formules (Calculer l'âge en fonction de l'anniversaire, ...)   |   19 Insertion Outils (Insérer le code QR, Insérer une image à partir du chemin, ...)   |   12 Conversion Outils (Nombres en mots, Conversion des devises, ...)   |   7 Fusionner et fractionner Outils (Lignes de combinaison avancées, Cellules divisés, ...)   |   ... et plus

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!