image

Nous savons comment créer une liste déroulante en cascade sur une feuille de calcul à l’aide de la validation des données. Mais comment créer une liste déroulante combobox en cascade sur le formulaire utilisateur VBA. C’est l’un des besoins fondamentaux. Dans cet article, nous allons apprendre à créer une zone de liste déroulante dépendante dans VBA. === Logic For Dependent Combobox dans VBA Pour créer une combobox dépendante dans VBA, nous devons initialiser la combobox sur l’événement de l’élément source. Par exemple, si une zone de liste déroulante dépend d’un groupe de boutons radio, le code pour charger la liste déroulante dépendante doit s’exécuter immédiatement après que quelqu’un a sélectionné un bouton radio. Ou si une zone de liste déroulante dépend d’une autre zone de liste déroulante, en fonction de la zone de liste déroulante, elle doit se charger à chaque fois que la valeur de la zone de liste déroulante est modifiée.

Assez de théorie. Passons à un exemple pour voir comment cela fonctionne.

ComboBox Dépendant d’une autre Combobox Créez deux combobox. Le premier devrait énumérer les quelques noms de pays.

L’autre devrait énumérer les noms des États du pays sélectionné. Si l’utilisateur change le pays dans la première zone de liste déroulante, la liste de la seconde zone de liste déroulante doit être modifiée.

Créons un formulaire qui a deux combobox avec les étiquettes pays et états et un bouton de commande pour soumettre l’entrée.

image

La première zone de liste déroulante doit lister les noms des pays et ne dépend d’aucune valeur. Nous allons donc le charger dans l’événement form_intialize comme nous le faisons pour l’initialisation de base de combobox.

Double-cliquez sur le formulaire utilisateur. Cela ouvrira la zone de codage dans l’objet UserForm. Maintenant, dans le menu déroulant de gauche, sélectionnez userform. Ensuite, dans le menu déroulant de droite, sélectionnez initialiser.

image

Un sous-nom vide UserForm_Initialize () sera inséré. Tout ce qui est écrit dans ce sous sera exécuté avant que le formulaire utilisateur n’apparaisse.

Nous écrivons donc ici le code d’initialisation de la zone de liste déroulante.

Private Sub UserForm_Initialize()

countries = Array("India", "Nepal", "Bhutan", "Shree Lanka")

UserForm1.ComboBox1.List = states

End Sub

Nous avons notre première combobox initialisée. Chaque fois que vous chargerez le formulaire utilisateur, la première combox sera prête avec le nom des pays.

Maintenant, pour charger la deuxième combobox, nous devons regarder quelle valeur est sélectionnée dans la première combobox1 et exécuter le code à chaque fois que combobox1 change ses valeurs. Pour cela, nous utiliserons l’événement Combobox_AfterUpdate.

Dans le menu déroulant de gauche, sélectionnez combobox1. Dans le menu déroulant de droite, sélectionnez AfterUpdate. Nous pouvons également utiliser l’événement Change mais nous nous en tiendrons à AfterUpdate dans l’article.

Maintenant, écrivez le code ci-dessous:

Private Sub ComboBox1_AfterUpdate()

Select Case ComboBox1.Value

Case "India":

states = Array("Delhi", "UP", "UK", "Gujrat", "Kashmir")

Case "Nepal":

states = Array("Arun Kshetra", "Janakpur Kshetra", "Kathmandu Kshetra",_

"Gandak Kshetra", "Kapilavastu Kshetra")

Case "Bhutan":

states = Array("Bumthang", "Trongsa", "Punakha", "Thimphu", "Paro")

Case "Shree Lanka":

states = Array("Galle", "Ratnapura", "Colombo", "Badulla", "Jaffna")

End Select



ComboBox2.List = states



End Sub

image

Ici, nous avons utilisé une instruction de sélection de cas. L’instruction de sélection de cas est bonne lorsque nous voulons voir quelle valeur est choisie parmi de nombreuses valeurs. Je l’ai expliqué link: / general-topics-in-vba-vba-select-case-alternative-of-nested-if-else-if-statements [ici en détail].

Pour stocker la valeur insérée par l’utilisateur, utilisez le bouton d’envoi. Écrivez le code ci-dessous dans le bouton de commande Soumettre pour enregistrer le pays et l’état sélectionnés par l’utilisateur sur la feuille de calcul.

Private Sub CommandButton1_Click()

country = ComboBox1.Value

State = ComboBox2.Value

ThisWorkbook.Worksheets("sheet1").Range("G1") = country

ThisWorkbook.Worksheets("sheet1").Range("H1") = State

Unload Me

End Sub

Maintenant, pour afficher le formulaire utilisateur, insérez un bouton sur la feuille de calcul et écrivez le code ci-dessous. Ou vous pouvez utiliser un module simple pour afficher le formulaire utilisateur.

Sub load_userform()

UserForm1.Show

End Sub

Exécutez maintenant le code load_userform.

image

Comment ça marche?

Lorsque vous exécutez le sous qui a le code userform.show, le VBA exécute les événements userform_initialize immédiatement après avoir exécuté la commande userform.show. Dans l’événement userform_intialize, nous avons initialisé la première zone de liste déroulante contenant une liste de pays. Ensuite, le formulaire est montré à l’utilisateur.

Désormais, lorsque l’utilisateur sélectionne une valeur dans la première zone de liste déroulante, l’événement combobox1_AfterUpdate s’exécute. Cet événement contient le code pour vérifier quelle valeur est sélectionnée par l’utilisateur dans combobox1 et en fonction de cette valeur, il définit le tableau d’états et initialise les valeurs de combobox2 avec le tableau d’états.

Alors oui les gars, c’est ainsi que vous créez une combobox en cascade dans le formulaire utilisateur VBA. J’espère avoir été suffisamment explicatif et que l’article a atteint son objectif. Si vous avez des doutes concernant cet article ou un sujet VBA, demandez-moi dans la section commentaires ci-dessous.

Articles liés:

link: / applications-word-outlook-in-vba-getting-started-with-excel-vba-userforms [Premiers pas avec Excel VBA UserForms] | * Je vais vous expliquer comment créer un formulaire dans Excel, comment l’utiliser Boîte à outils VBA, comment gérer les entrées utilisateur et enfin comment stocker les entrées utilisateur. Nous allons parcourir ces sujets en utilisant un exemple et un guide étape par étape.

lien: / general-topics-in-vba-vba-variables-in-excel [Variables VBA dans Excel] | * VBA signifie Visual Basic pour Applications.

C’est un langage de programmation de Microsoft. Il est utilisé avec les applications Microsoft Office telles que MSExcel, MS-Word et MS-Access, tandis que les variables VBA sont des mots-clés spécifiques.

link: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope] | * Dans tous les langages de programmation, nous avons des spécificateurs d’accès aux variables qui définissent d’où une variable définie peut être accédée. Excel VBA n’est pas une exception. VBA a également des spécificateurs de portée.

lien: / cells-ranges-rows-and-columns-in-vba-quelle-est-la-difference-entre-byref-and-byval-arguments-vba-interview-question [Arguments ByRef et ByVal] | Lorsqu’un argument est passé en tant qu’argument ByRef à un autre sous ou fonction, la référence de la variable réelle est envoyée. Toutes les modifications apportées à la copie de la variable seront reflétées dans l’argument d’origine.

lien: / files-workbook-and-worksheets-in-vba-delete-sheets-sans-confirmation-invites-using-vba-in-microsoft-excel [Supprimer les feuilles sans invites de confirmation en utilisant VBA dans Microsoft Excel] | Puisque vous supprimez des feuilles à l’aide de VBA, vous savez ce que vous faites.

Vous voudriez dire à Excel de ne pas afficher cet avertissement et de supprimer la fichue feuille.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur à l’aide de VBA dans Microsoft Excel 2016] | Dans ce code, nous avons d’abord créé une référence à un objet de classeur. Et puis nous l’avons initialisé avec un nouvel objet classeur. L’avantage de cette approche est que vous pouvez effectuer facilement des opérations sur ce nouveau classeur. Comme enregistrer, fermer, supprimer, etc `link: / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Afficher un message sur La barre d’état Excel VBA *] `| La barre d’état dans Excel peut être utilisée comme moniteur de code. Lorsque votre code VBA est long et que vous effectuez plusieurs tâches à l’aide de VBA, vous désactivez souvent la mise à jour de l’écran pour ne pas voir cet écran scintiller.

lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016] | * Ce code désactive non seulement VBA alertes mais augmente également l’efficacité temporelle du code. Voyons comment.

Articles populaires:

lien: / clavier-formule-raccourcis-50-excel-raccourcis-pour-augmenter-votre-productivité [50 raccourcis Excel pour augmenter votre productivité] | Accélérez votre tâche. Ces 50 raccourcis vous permettront de travailler encore plus rapidement sur Excel.

lien: / formules-et-fonctions-introduction-de-vlookup-function [La fonction RECHERCHEV dans Excel] | C’est l’une des fonctions les plus utilisées et les plus populaires d’Excel qui est utilisée pour rechercher la valeur de différentes plages et feuilles. lien: / tips-countif-in-microsoft-excel [COUNTIF dans Excel 2016] | Comptez les valeurs avec des conditions en utilisant cette fonction étonnante. Vous n’avez pas besoin de filtrer vos données pour compter des valeurs spécifiques.

La fonction Countif est indispensable pour préparer votre tableau de bord.

lien: / excel-formule-et-fonction-excel-sumif-function [Comment utiliser la fonction SUMIF dans Excel] | C’est une autre fonction essentielle du tableau de bord. Cela vous aide à résumer les valeurs sur des conditions spécifiques.