Astuce Word VBA : insérer un mot ou plusieurs avec une mise en forme spécifiq...
Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?
1. Votre Assistante : https://www.votreassistante.net - le 08/02/2022
Article écrit par Lydia Provin du site
Votre Assistante : https://www.votreassistante.net
1
Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?
Lors du tutoriel sur la création de liste déroulante en cascade sur Excel, vous vous êtes
probablement aperçu que lorsque vous modifiiez votre choix dans la première liste, la seconde
liste n’était pas réinitialisée automatiquement et vous pouviez obtenir ce genre d’affichage :
Bien sûr, vous pouvez appuyer sur la touche Suppr de votre clavier lorsque vous êtes sur la
deuxième cellule, mais il est quand même préférable que cela se fasse automatiquement afin
d’éviter les oublis et c’est ce que nous allons voir dans ce tutoriel.
Afficher le menu Développeur
Pour réinitialiser ou vider une liste déroulante, nous avons besoin d’utiliser le menu
Développeur d’Excel, car nous allons utiliser du code VBA (Visual Basic for Applications).
S’il n’est pas affiché, je vous invite à consulter ce tutoriel où j’explique comment le faire avec
la dernière version d’Excel à ce jour sur Windows ou sur Mac.
Réinitialiser (vider) une liste déroulante en cascade sur Excel
Pour réinitialiser une liste déroulante, rendez-vous dans le menu Développeur > Visual
Basic . Dans l’Explorateur de projets, à gauche de l’écran (s’il n’apparaît pas, faites
Ctrl + R sur Windows ou Cmd + R sur Mac), faites un clic droit > Code sur la
feuille où se trouvent vos listes en cascade : ici, il s’agit de Feuil2 (Listes).
En haut du module qui s’affiche, sélectionnez dans la liste de gauche Worksheet et dans la liste
de droite Change. Cela vous a créé une procédure inutile (Worksheet_SelectionChange) que
vous pouvez supprimer. Puis, replacez votre curseur à l’intérieur de la procédure
Worksheet_Change.
Dans cet exemple, ma première liste se trouve en A1 et la deuxième en B1, j’écris donc :
If Target.Address = "$A$1" Then
1
Range("B1").Value = ""
2
End If
3
2. Votre Assistante : https://www.votreassistante.net - le 08/02/2022
Article écrit par Lydia Provin du site
Votre Assistante : https://www.votreassistante.net
2
Ce code signifie que si la cellule A1 est modifiée (puisque je suis dans l’évènement du
changement sur la feuille Listes), alors la cellule B1 sera égale à rien.
Maintenant, si je réduis la fenêtre de l’éditeur VBA et que je sélectionne un autre pays, ma liste
de villes est vidée.
Je peux améliorer cette procédure en invitant l’utilisateur à sélectionner une ville. Pour cela, je
retourne dans l’éditeur VBA et, entre les guillemets vides, je saisis Sélectionnez une ville.
Ma procédure complète est donc :
Private Sub Worksheet_Change(ByVal Target As Range)
1
If Target.Address = "$A$1" Then
2
Range("B1").Value = "Sélectionnez une ville"
3
End If
4
End Sub
5
Si je retourne à ma feuille Excel, que je sélectionne une ville, puis que je sélectionne un autre
pays, j’ai bien la phrase Sélectionnez une ville. Cela fonctionne même si vous empêchez
l’utilisateur de saisir autre chose qu’un élément de la liste via l’onglet Alerte d’erreur de la
Validation des données .
Réinitialiser (vider) plusieurs listes déroulantes en cascade sur Excel
Si plusieurs de vos cellules sont en cascade, A1 à A10 par exemple, il n’est pas nécessaire de
copier-coller 10 fois la procédure que nous venons de voir.
Pour cela, dans l’éditeur VBA, à la place du code précédent, mais toujours dans le même
évènement, nous allons instancier un objet (une plage de cellules) avec Set (que nous déclarons
préalablement), puis exécuter une boucle. Ce qui donne :
Private Sub Worksheet_Change(ByVal Target As Range)
1
Dim Reference As Range
2
Set Reference = Intersect(Target, Range("A1:A10"))
3
4
If Reference Is Nothing Then Exit Sub
5
6
For Each Reference In Reference
7
Range("B" & Reference.Row).Value = "Sélectionnez une ville"
8
Next
9
3. Votre Assistante : https://www.votreassistante.net - le 08/02/2022
Article écrit par Lydia Provin du site
Votre Assistante : https://www.votreassistante.net
3
End Sub
10
Dans cet exemple, j’indique que le changement susceptible de produire l’évènement se fera
dans la plage de cellules A1 à A10 (ligne 3) et, si c’est en dehors de la plage (ligne 5), alors on
met fin à la procédure.
La boucle (lignes 7 à 9) permet d’indiquer Sélectionnez une ville pour chaque ligne en
colonne B dont la colonne A aurait été modifiée.
Si je modifie la cellule A3, Reference sera égale au pays que je sélectionne et Reference.row au
numéro de la ligne donc 3 : B3 sera égale à Sélectionnez une ville.
Enfin, si vous ne souhaitez pas écrire cette phrase, laissez les guillemets vides.
N’oubliez pas d’enregistrer votre fichier dans un format prenant en charge les macros pour ne
pas perdre votre procédure à la fermeture du fichier.
Vous retrouverez le fichier utilisé dans l’Espace Membres accessible aux abonnés à la
newsletter.
Je prépare une formation sur le VBA d’Excel niveau débutant et avancé. Si vous souhaitez
être tenu informé de sa sortie, inscrivez-vous à la newsletter Excel.
Tutoriel réalisé avec Excel Microsoft 365
Voir la version vidéo de cet article