Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 3 Publicité

Plus De Contenu Connexe

Similaire à Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ? (20)

Plus par Votre Assistante (20)

Publicité

Plus récents (20)

Comment réinitialiser (vider) une liste déroulante en cascade sur Excel ?

  1. 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. 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. 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

×