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) :

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 :

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… 🙂

Vous aimerez aussi...

2 réponses

  1. Hervé Inisan dit :

    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.

  2. Harimovski dit :

    Bonjour,

    Merci pour l’astuce, en revanche mon souci c’est de récupérer les valeur contenues dans une listbox.

    Merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *