Créer un choix multiple sur Excel : méthode simple et rapide
Vous aimeriez sélectionner plusieurs éléments dans une même cellule Excel : plusieurs compétences, plusieurs catégories, plusieurs participants ou encore plusieurs tâches associées à un projet ? Par défaut, la liste déroulante d’Excel ne permet de choisir qu’une seule valeur. Dès qu’un nouvel élément est sélectionné, il remplace le précédent.
Heureusement, il existe une méthode simple pour transformer une liste déroulante classique en véritable choix multiple. Elle repose sur une petite macro VBA, facile à installer et suffisamment flexible pour s’adapter à vos tableaux.
Dans cet article, nous allons créer une liste déroulante permettant d’ajouter plusieurs choix dans une seule cellule, sans effacer les sélections précédentes.
Ce que nous allons créer
Imaginons un tableau de suivi de projets. Pour chaque projet, vous souhaitez renseigner les outils utilisés. Un même projet peut utiliser Excel, Power BI et Outlook.
Avec une liste déroulante classique, vous pourriez sélectionner Excel, puis Power BI. Mais la seconde sélection remplacerait la première. Le résultat final serait simplement « Power BI ».
Avec la méthode présentée ici, la cellule contiendra par exemple :
- Excel ; Power BI ; Outlook
Chaque nouvelle sélection sera ajoutée à la suite des précédentes. Si vous sélectionnez deux fois le même élément, Excel évitera également de le dupliquer.
Préparer la liste des choix
Commencez par créer la liste des éléments disponibles dans une colonne. Par exemple, dans la colonne A d’une feuille nommée « Listes » :
- Excel
- Power BI
- Outlook
- Teams
- SharePoint
Pour rendre cette liste plus pratique, vous pouvez lui attribuer un nom. Sélectionnez les cellules contenant les choix, puis cliquez dans la zone de nom située à gauche de la barre de formule. Saisissez par exemple Outils, puis validez avec la touche Entrée.
Cette étape n’est pas obligatoire, mais elle rend la règle de validation plus lisible. Au lieu d’utiliser une référence comme =Listes!$A$2:$A$6, vous pourrez simplement écrire =Outils.
Créer une liste déroulante classique
Avant d’ajouter le fonctionnement multi-sélection, il faut créer une liste déroulante standard. La macro s’appuiera sur cette liste pour récupérer les valeurs choisies.
Voici les étapes à suivre :
- Sélectionnez la cellule ou la plage de cellules concernée, par exemple B2:B100.
- Ouvrez l’onglet Données.
- Cliquez sur Validation des données.
- Dans la zone Autoriser, choisissez Liste.
- Dans le champ Source, saisissez
=Outilssi vous avez nommé votre liste. - Cliquez sur OK.
À ce stade, chaque cellule de la plage possède une flèche permettant de sélectionner un outil. Mais une nouvelle sélection remplace encore la précédente. C’est normal : la validation des données d’Excel ne gère pas nativement la sélection multiple dans une cellule.
Ajouter le code VBA
La macro doit être placée dans le module de la feuille qui contient la liste déroulante. Cette précision est importante : si votre liste se trouve dans la feuille « Suivi », le code doit être installé dans le module VBA de « Suivi », et non dans un module général.
Pour ouvrir l’éditeur VBA :
- Appuyez sur Alt + F11.
- Dans le panneau de gauche, repérez votre classeur.
- Double-cliquez sur la feuille qui contient les cellules à choix multiple.
- Collez le code ci-dessous dans la fenêtre qui s’affiche.
Private Sub Worksheet_Change(ByVal Target As Range) Dim ancienneValeur As String Dim nouvelleValeur As String Dim separateur As String separateur = "; " If Target.CountLarge > 1 Then Exit Sub If Intersect(Target, Me.Range("B2:B100")) Is Nothing Then Exit Sub On Error GoTo Sortie Application.EnableEvents = False nouvelleValeur = Target.Value Application.Undo ancienneValeur = Target.Value Target.Value = nouvelleValeur If nouvelleValeur = "" Then GoTo Sortie If ancienneValeur = "" Then Target.Value = nouvelleValeur ElseIf InStr(1, separateur & ancienneValeur & separateur, _ separateur & nouvelleValeur & separateur, _ vbTextCompare) = 0 Then Target.Value = ancienneValeur & separateur & nouvelleValeur Else Target.Value = ancienneValeur End IfSortie: Application.EnableEvents = TrueEnd Sub
Ce code surveille la plage B2:B100. À chaque modification, il mémorise la nouvelle sélection, récupère l’ancienne valeur, puis assemble les deux éléments avec un point-virgule.
Adapter la plage à votre tableau
Dans le code, cette ligne détermine les cellules concernées :
If Intersect(Target, Me.Range("B2:B100")) Is Nothing Then Exit Sub
Si votre liste déroulante se trouve dans la colonne D, de la ligne 2 à la ligne 500, remplacez-la par :
If Intersect(Target, Me.Range("D2:D500")) Is Nothing Then Exit Sub
Vous pouvez également cibler plusieurs zones. Par exemple :
If Intersect(Target, Me.Range("B2:B100,D2:D100")) Is Nothing Then Exit Sub
Dans ce cas, la macro fonctionnera dans les deux plages.
Comprendre le fonctionnement de la macro
La procédure utilisée s’appelle Worksheet_Change. Il s’agit d’un événement Excel qui se déclenche automatiquement dès qu’une cellule de la feuille est modifiée.
Le code suit une logique assez simple :
- Il vérifie que la modification concerne une seule cellule.
- Il contrôle que cette cellule se trouve dans la plage prévue.
- Il récupère la nouvelle sélection.
- Il utilise temporairement la commande Annuler pour retrouver l’ancienne valeur.
- Il remet la nouvelle sélection dans la cellule.
- Il ajoute la nouvelle valeur à l’ancienne si elle n’existe pas déjà.
La ligne Application.EnableEvents = False évite que la macro se déclenche en boucle lorsqu’elle modifie elle-même la cellule. La réactivation des événements est ensuite effectuée à la fin du traitement.
Le séparateur utilisé est défini ici :
separateur = "; "
Vous pouvez le remplacer par une virgule, une barre verticale ou un retour à la ligne. Par exemple, pour afficher chaque choix sur une ligne différente, utilisez :
separateur = vbLf
Dans ce dernier cas, pensez à activer le renvoi à la ligne automatique dans l’onglet Accueil, afin que le contenu soit correctement visible dans la cellule.
Tester le choix multiple
Revenez dans Excel et cliquez sur la flèche de la cellule B2. Sélectionnez « Excel ». La cellule affiche alors :
- Excel
Ouvrez à nouveau la liste et sélectionnez « Power BI ». Le contenu devient :
- Excel ; Power BI
Ajoutez ensuite « Teams ». Vous obtenez :
- Excel ; Power BI ; Teams
Si vous sélectionnez de nouveau « Excel », la macro ne l’ajoutera pas une seconde fois. Cette sécurité est particulièrement pratique lorsque la liste est longue ou lorsque plusieurs utilisateurs remplissent le fichier.
Supprimer un choix déjà sélectionné
La version de base de la macro permet d’ajouter des éléments et d’éviter les doublons, mais elle ne retire pas automatiquement un élément déjà présent. Pour supprimer un choix, vous pouvez effacer entièrement le contenu de la cellule et recommencer la sélection.
Pour une utilisation plus avancée, il est possible de créer une macro qui retire un élément lorsqu’il est sélectionné une seconde fois. Le principe consiste à rechercher la valeur dans la chaîne existante, puis à la supprimer au lieu de la conserver.
Cette variante est pratique, mais elle demande davantage de précautions lorsque les choix contiennent des caractères particuliers ou des mots proches. Pour la majorité des tableaux de suivi, la méthode consistant à effacer puis recréer la sélection reste la plus fiable.
Enregistrer le fichier au bon format
Une erreur fréquente consiste à enregistrer le classeur au format .xlsx. Ce format ne conserve pas les macros.
Utilisez plutôt le format :
- Classeur Excel prenant en charge les macros (*.xlsm)
Lors de l’enregistrement, Excel peut afficher un message vous demandant si vous souhaitez conserver les fonctionnalités VBA. Répondez oui.
À la prochaine ouverture du fichier, Excel pourra afficher une barre de sécurité. Cliquez sur Activer le contenu si vous faites confiance au fichier et à son origine. Sans cette autorisation, la liste déroulante fonctionnera comme une liste normale, mais la sélection multiple ne sera pas active.
Les limites de cette méthode
Cette solution est rapide et efficace, mais elle repose sur VBA. Elle ne fonctionnera donc pas de la même manière dans toutes les versions d’Excel.
- Les macros peuvent être bloquées par les paramètres de sécurité de l’entreprise.
- Excel pour le web ne permet pas toujours d’exécuter ce type de code événementiel.
- Le fichier doit être enregistré au format .xlsm.
- Les utilisateurs doivent autoriser l’exécution des macros.
Si votre fichier doit être partagé avec des personnes qui ne peuvent pas utiliser VBA, une alternative consiste à créer une colonne par choix, avec des cases à cocher ou des valeurs « Oui/Non ». Cette approche demande plus d’espace, mais elle facilite ensuite les filtres, les tableaux croisés dynamiques et les analyses.
Une alternative sans VBA avec plusieurs colonnes
Dans certains contextes, la sélection multiple dans une cellule n’est pas forcément la meilleure solution. Une cellule contenant « Excel ; Power BI ; Teams » est agréable à lire, mais moins facile à analyser automatiquement.
Pour exploiter les données, vous pouvez prévoir une colonne par option :
- Projet
- Excel
- Power BI
- Teams
- Outlook
Chaque cellule peut contenir « Oui » ou « Non ». Vous pourrez ensuite filtrer les projets utilisant Power BI, compter le nombre de projets associés à Teams ou construire un tableau croisé dynamique.
La liste multi-sélection est donc idéale pour une saisie compacte et lisible. Les colonnes séparées sont souvent préférables pour les statistiques et les traitements avancés. Comme toujours avec Excel, le meilleur choix dépend de ce que vous comptez faire des données ensuite.
Quelques conseils pour un fichier plus fiable
- Placez vos listes de référence dans une feuille dédiée, éventuellement masquée.
- Utilisez des noms de plages explicites comme
Outils,ServicesouStatuts. - Évitez les choix trop longs : une cellule remplie de plusieurs phrases devient difficile à lire.
- Appliquez le retour à la ligne automatique si le nombre de choix peut varier.
- Testez la macro sur une copie du fichier avant de l’intégrer à un tableau important.
- Ajoutez une note expliquant aux utilisateurs qu’ils peuvent sélectionner plusieurs éléments.
Cette dernière astuce semble anodine, mais elle évite bien des incompréhensions. Sans indication, certains utilisateurs penseront qu’ils doivent choisir un seul élément, même si la macro permet d’en ajouter plusieurs.
Une solution pratique pour vos tableaux Excel
La liste déroulante multi-sélection permet de gagner du temps tout en conservant une présentation propre. Elle convient parfaitement aux suivis de projets, aux formulaires internes, aux inventaires et aux tableaux de qualification.
La méthode repose sur trois éléments : une liste de référence, une validation des données et un court code VBA placé dans le module de la feuille. Une fois ces éléments en place, chaque sélection vient compléter la précédente sans écraser le contenu déjà saisi.
Si vous utilisez cette technique dans un fichier partagé, pensez simplement à prévenir les utilisateurs de l’activation des macros et à enregistrer le classeur au format adapté. Votre liste déroulante ne sera plus limitée à un seul choix : Excel saura enfin faire preuve d’un peu plus de souplesse.