Inscription à la newsletter

Tutoriel réalisé avec Excel Microsoft 365

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 :

Liste déroulante en cascade Excel

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 Visual Basic VBA. 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 Code VBA Excel 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
Range("B1").Value = ""
End If

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)
If Target.Address = "$A$1" Then
Range("B1").Value = "Sélectionnez une ville"
End If
End Sub

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 Validation des données Excel.

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)
Dim Reference As Range
Set Reference = Intersect(Target, Range("A1:A10"))
If Reference Is Nothing Then Exit Sub
For Each Reference In Reference
Range("B" & Reference.Row).Value = "Sélectionnez une ville"
Next
End Sub

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.

Inscription à la newsletter