Désactiver un bouton en VBA

Comment faire en sorte qu’un bouton soit désactivé après qu’on a cliqué dessus ?

Le principe

La plupart des composants graphiques (bouton, zone de texte, etc.) ont une propriété Enabled de type booléen (Oui/Non). Si Enabled = True, l’objet est activé. Donc, sur le principe, pour qu’un bouton appelé btnTest se désactive lui-même, il suffirait de programmer son événement Sur clic comme ceci :

Oui mais…

Ce bout de code marcherait sur .NET, par exemple. Mais sur Access, il y a une restriction : l’objet sélectionné (comprenez : « l’objet en cours d’utilisation », ou encore « l’objet qui a le focus ») ne peut pas être désactivé. Or comme vous venez de cliquer sur le bouton btnTest, vous l’avez sélectionné, et il ne peut donc plus se désactiver directement (par contre, il pourrait désactiver un autre objet du formulaire).

La solution

Tout simple : il suffit de prévoir, sur votre formulaire, un autre objet, et de sélectionner cet objet avant de désactiver le bouton. Si mon formulaire contient une zone de texte appelée txtDummy. Le code devient :

Il faut bien sûr que txtDummy soit un objet lui-même actif.

Pour information, le principe s’applique aussi sur la propriété Visible d’un bouton (si vous souhaitez faire apparaître ou disparaître un bouton).

Vous aimerez aussi...

2 réponses

  1. ppi dit :

    Losrque qu’on réouvre le formulaire, le bouton apparait à nouveau. Comment faire pour qu’il soit définitivement supprimé ?

    • Hervé Inisan dit :

      La désactivation d’un bouton par code est dynamique : elle n’est gérée que lors de la « durée de vie » du formulaire.
      Maintenant, quel serait le scénario où le bouton est définitivement supprimé ?
      (quand je pense « supprimé », je pense « détruit », pas seulement « masqué »)

Laisser un commentaire

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