Boucle à travers les contrôles dans Excel VBA
Avec seulement quelques lignes de code, on peut facilement en boucle grâce à des contrôles sur un fichier Excel VBA Userform. Le Userform nous allons créer se présente comme suit:
Pour créer cette Userform, exécutez les étapes suivantes.
-
Ouvrez le Visual Basic Editor. Si l’Explorateur de projets n’est pas visible, cliquez sur Afficher, Project Explorer.
-
Cliquez sur Insérer, Userform. Si la boîte à outils n’apparaît pas automatiquement, cliquez sur Affichage, Boîte à outils. Votre écran doit être configuré comme ci-dessous.
-
Ajouter l’étiquette, des cases à cocher (premier en haut, le second en dessous du premier, et ainsi de suite) et le bouton de commande. Une fois cet exercice terminé, le résultat devrait être compatible avec l’image du Userform indiqué précédemment. Par exemple, créer un contrôle de case à cocher en cliquant sur CheckBox de la boîte à outils. Ensuite, vous pouvez faire glisser une case à cocher sur la Userform.
-
Vous pouvez modifier les noms et les légendes des contrôles. Les noms sont utilisés dans le code VBA Excel. Les légendes sont celles qui apparaissent sur votre écran. Il est bon de changer les noms des contrôles, mais il est pas nécessaire ici parce que nous avons seulement quelques contrôles dans cet exemple. Pour changer la légende du Userform, étiquette, cases à cocher et le bouton de commande, cliquez sur Afficher, Fenêtre Propriétés et cliquez sur chaque contrôle.
-
Pour afficher le Userform, placez un bouton de commande sur votre feuille de calcul et ajoutez la ligne de code suivante:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Nous avons créé la première partie de la Userform. Bien qu’il semble déjà soignée, rien ne se passera encore lorsque l’on clique sur le bouton Effacer.
-
Ouvrez Visual Basic Editor.
-
Dans l’Explorateur de projets, double-cliquez sur UserForm1.
-
Double-cliquez sur le bouton Effacer.
-
Ajoutez les lignes de code suivantes:
Private Sub CommandButton1_Click() Dim contr As control For Each contr In UserForm1.Controls If TypeName(contr) = "CheckBox" Then contr.Value = False End If Next End Sub
Explication: boucles Excel VBA à travers tous les contrôles du Userform. La fonction TypeName est utilisé pour filtrer les commandes de case à cocher. Si un contrôle de case à cocher, Excel VBA désélectionne la case à cocher. Contr est choisi au hasard ici, vous pouvez utiliser un nom. N’oubliez pas de se référer à ce nom dans le reste de votre code.
Lorsque vous cliquez sur le bouton Effacer: