Boucler sur les contrôles – Variante
Dans l’article Boucler sur les contrôles, il était question d’effectuer un traitement identique à des objets du formulaires nommés de la même manière (par exemple :
Texte1
,Texte2
, etc.). Mais comment faire si on veut tout simplement boucler sur TOUS les objets du formulaire, sans connaître leur nom au départ ? Ou boucler seulement sur les zones de texte du formulaire ?
Boucler sur tous les contrôles du formulaire
Un formulaire dispose d’une collection Controls
qui donne tous ses… contrôles.
Donc Forms("Nom d'un formulaire").Controls
, ou encore Forms![Nom d'un formulaire].Controls
donne cette liste. Et si votre code VBA se trouve dans le formulaire, vous pouvez remplacer Forms("...")
par Me
pour obtenir Me.Controls
.
Voici un bout de code qui illustre ça (la boucle affiche le nom de chaque contrôle du formulaire) :
1 2 3 4 5 6 7 |
Sub BoutonControles_Click() Dim ctl As Access.Control For Each ctl In Me.Controls MsgBox ctl.Name Next End Sub |
Boucler sur les zones de texte uniquement
En fait, on ne peut pas boucler sur les zones de texte uniquement. Mais on peut aménager la boucle précédente, et tester à chaque tour de boucle si l’objet trouvé est une zone de texte. D’où cette variante, qui affiche le nom de chaque zone de texte du formulaire :
1 2 3 4 5 6 7 8 9 |
Sub BoutonZonesTexte_Click() Dim ctl As Access.Control For Each ctl In Me.Controls If TypeOf ctl Is TextBox Then MsgBox ctl.Name End If Next End Sub |
La syntaxe TypeOf x Is y
permet de vérifier si l’objet x
est du type y
(ici : si chaque contrôle parcouru est de type TextBox
, zone de texte). Vous pouvez remplacer TextBox
par ComboBox
, ListBox
, ou d’autres objets Access.
Maintenant, si vous prévoyez un traitement autre que MsgBox
sur vos contrôles, il faut bien sûr que tous les contrôles traités aient les mêmes propriétés. Mais ceci est une autre histoire… 🙂
Harimovski > S’il s’agit d’une liste statique, cet article peut aider. Sinon, si la liste est alimentée par une table, une recherche sur « ListBox » sur le site donnera d’autres articles.
Bonjour,
Merci pour l’astuce, en revanche mon souci c’est de récupérer les valeur contenues dans une listbox.
Merci