Lancement d'une routine à chaque modification d'un controle

Salut,

J'ai besoin de lancer une vérification du bon remplissage des contrôles d'un Userform pour déverrouiller le bouton de validation.

J'ai écrit ma routine de vérification mais je ne sais pas comment la lancer. Il faudrait que ce soit à chaque modification d'un contrôle. Il y a des DTPicker, des TextBox et des ToggleButton.

J'ai commencé à écrire ça :

Dim Txt As TextBox

Dim DTP As DTPicker

Dim Opt As OptionButton

For each Txt.XXXXXX

Call [routine de vérification ]

Next

For each DTP.XXXXXX

Call [routine de vérification ]

Next

For each Opt.XXXXXX

Call [routine de vérification ]

Next

Mais quoi mettre à la place des XXXXXX ? Il semblerait que Change ou AfterUpdate ne fonctionnent pas

Merci d'avance.

Manu

Bonjour,

ce que vous pouvez faire également, c'est de faire le test lors du clic sur le bouton [Valider]

Vous faites les différents test sur cette procédure, et si une erreur sur un contrôle est détecté, vous afficher un msgbox avec la raison de l'erreur et avec SetFocus, vous donnez le focus au contrôle en "défaut".

@ bientôt

LouReeD

Bonjour,

ci-dessous exemple de code

   Dim ctrl As Control
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.TextBox Then Call routine1
        If TypeOf ctrl Is MSForms.OptionButton Then Call routine2
        ................................
    Next ctrl

Bonjour,

ce que vous pouvez faire également, c'est de faire le test lors du clic sur le bouton [Valider]

Vous faites les différents test sur cette procédure, et si une erreur sur un contrôle est détecter, vous afficher un msgbox avec la raison de l'erreur et avec SetFocus, vous donnez le focus au contrôle en "défaut".

@ bientôt

LouReeD

C'est une solution, je me la garde en mémoire.

Manu

Bonjour,

ci-dessous exemple de code

   Dim ctrl As Control
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.TextBox Then Call routine1
        If TypeOf ctrl Is MSForms.OptionButton Then Call routine2
        ................................
    Next ctrl

J'ai essayé mais ça plante.

  • Sur la ligne DTPicker, j'ai un message d'erreur " Type défini par l'utilisateur non défini "
  • Comment faire pour lancer la même routine quelque soit le control modifié ?
  • Où mettre ce code pour qu'il se lance à chaque modification d'un control ?

Merci d'avance.

Manu

Sur la ligne DTPicker, j'ai un message d'erreur " Type défini par l'utilisateur non défini "

N'ayant pas ce contrôle dans ma version 64 bits, je pense que cela doit être :

If TypeOf ctrl Is MSComCtl2.DTPicker Then Call routine3
  • Comment faire pour lancer la même routine quelque soit le control modifié ?
  • Où mettre ce code pour qu'il se lance à chaque modification d'un control ?

Le plus simple est de suivre la recommandation de LouReed, sinon passer par un module de classe mais ça me parait beaucoup de complications pour le sujet évoqué .

C'est ce que j'ai fait au final. Ca suffit largement.

Manu

Rechercher des sujets similaires à "lancement routine chaque modification controle"