Accueil | Ce site | CV | Excel | Livre d’or | Macros XL4 | Modèles | VBA

 La fonction Controle

Contexte


Fig. 1 - Exemple de zone de dialogue où une information
est attendue de l’utilisateur.

De nombreux développements utilisent au moins un UserForm (ou zone de dialogue, figure 1). Si une information est attendue de l’utilisateur, il faut s’assurer qu’elle a été fournie, avant de poursuivre l’exécution du programme. Certaines vérifications peuvent être effectuées en temps réel grâce aux événements associés aux contrôles (les objets que contient le UserForm), en particulier les événements Change et BeforeUpdate.

Cependant, ces événements ne peuvent suffire à s’assurer qu’aucune information ne manque. Si un contrôle n’est jamais sélectionné par l’utilisateur, aucun événement relatif à ce contrôle ne survient, et le code VBA éventuellement associé à ces contrôles n’est pas exécuté.

C’est pourquoi j’ai développé la fonction Controle, à lancer lorsque l’utilisateur clique sur le bouton de validation du UserForm, ici le bouton “OK”. Il s’agit du principal composant du module MOutil.

Cette fonction permet de vérifier si toutes les informations attendues dans un UserForm ont été fournies par l’utilisateur, et d’afficher si nécessaire, le(s) message(s) d’erreur adapté(s). Elle sert également à vérifier la pertinence et la cohérence de ces informations.

La fonction Controle suffit pour effectuer n’importe quelle vérification, mais elle intervient a posteriori. La bonne approche consiste à combiner les possibilités offertes par la gestion d'événements, et la fonction Controle.

Voici un exemple de UserForm, pour lequel cette combinaison d’outils est exploitée.

Une version complète du code de la fonction Controle est reproduit et commenté, ainsi qu’une version simplifiée.

Analyse

Quelle que soit l’information devant être entrée par l’utilisateur, la vérification à effectuer peut être ramenée à un schéma constant :

Au moment où le UserForm est affiché, tous les contrôles pour lesquels une information est attendue de l’utilisateur possèdent des caractéristiques (leurs propriétés) connues.

Pour chaque contrôle, l’intervention de l’utilisateur, si elle a lieu, modifie au moins l’une des propriétés initiales. Lors de la validation, il est donc aisé de tester la valeur de la propriété concernée pour déterminer si une modification est ou non intervenue.

En outre, si modification il y a eu, on peut également s’assurer que celle-ci est pertinente :

Chaque anomalie peut être détectée à l’aide d’une expression dont le résultat est un booléen. Si l’expression est vraie, il faut alors :

Quelle que soit l’anomalie, il suffit de passer à la fonction Controle l'expression idoine et les arguments relatifs au message à afficher, à la position du curseur et aux caractères à sélectionner pour réaliser les actions ci-dessus.

Code de la fonction et fonctionnement

Deux versions de la version Controle sont présentées sur ce site.

Pour éviter que cette page ne soit trop lourde, leur code et leur fonctionnement sont présentés sur 2 pages distinctes :

sticker VDP-Annuaire