user_mobilelogo

Le code du UserForm

Reste maintenant à écrire tout le code VBA pour notre UserForm ! Plus le UserForm disposera de contrôles plus le code sera compliqué. À l’aide de notre petit exemple nous en distinguerons 4 parties classiques :

Afficher et fermer le UserForm

Le Userform doit d’abord être chargé en mémoire avec tous ses objets. C’est le rôle de la commande Load. Par la suite notre objet UserForm désigné par son nom pourra être affiché par sa méthode Show et refermé par sa méthode Hide. VBA accepte d’exécuter implicitement la commande Load si on l’oublie avant l’exécution d’un Show.

Dans notre exemple le chargement et l’affichage de notre UserForm est exécuté dans une macro automatique à chaque ouverture du document (Sub Document_Open).

Nous y ajouterons la réouverture du UserForm pour éventuelle correction à l’aide d’un bouton « Cliquez ici pour lancer le formulaire ». Ce bouton exécute la macro Formulaire qui se contente d’exécuter à nouveau Show. Un autre bouton « Cliquez ici pour vider le document » lance la macro RAZ et vide le contenu ajouté.

Initialiser le UserForm

Il s’agit dans cette phase de renseigner les diverses propriétés du UserForm et de ses contrôles avant qu’il ne s’ouvre. Dans notre exemple il faut notamment renseigner la liste des répondeurs dans la combobox et ajuster la zone de texte Date la date du jour.

Le code d’initialisation d’une UserForm peut être très complexe surtout s’il faut rechercher des données dans le document lui-même ou dans des fichiers externes. On aurait pu imaginer par exemple que la liste des répondeurs de la combobox soit à chercher dans une feuille excel, laquelle contiendrait également pour chacun le délai moyen de réponse à appliquer au calendrier.

Toute cette phase d’initialisation peut être placée dans le code d’appel entre Load et Show ou mieux dans le code de l’événement Initialize du UserForm lui-même. Cet événement est lancé à chaque Load. Notez que Show ne provoque pas un événement Initialize.

Le code des contrôles

C’est tout le code événementiel dictant comment doit réagir chaque contrôle aux actions de l’utilisateur. Les événements possibles sont très nombreux pour chaque contrôle mais il suffit de coder uniquement ceux qui doivent déclencher une réponse. Un bon nombre de contrôles n’a pas besoin de code. Ce sont surtout les clics sur les boutons qu’il faut coder.

On accède facilement au code d’un contrôle en double-cliquant dessus : la fenêtre de code affiche en haut le contrôle et les divers événements qu’il est possible de coder.

Le bouton Annuler referme le UserForm par un Hide sans rien faire d’autre.

C’est le bouton de validation qui est le plus important. L’événement Click sur le bouton OK doit en effet :

1) collecter les données du UserForm
2) vérifier leur cohérence en refusant au besoin de refermer la UserForm
3) exécuter le propos de la UserForm
et enfin
4) fermer la UserForm.

L’étape de vérification des données peut aussi s’effectuer au niveau d’un contrôle par exemple avec son événement Change chaque fois que sa valeur est modifiée.

Dans notre exemple après vérification des zones de texte et de la date, la validation de la saisie doit provoquer l’insertion des données dans le document.

Le code de l’application

Ici on range le code spécialisé, les macros, les procédures et fonctions du projet pour lequel on a généralement développé précisément la UserForm. Ce code est généralement placé dans un ou plusieurs modules de façon à ne pas surcharger le code événementiel de la Userform qui y fera appel.

Dans notre exemple nous plaçons un module Signets chargé de traiter la mise à jour des signets dans un document. En effet le simple remplacement du texte d’un signet par un autre efface le signet en vba. La procédure RemplirSignet(Signet, Texte) remplace le contenu d’un Signet par Texte sans détruire ce signet, que ce dernier soit initialement vide ou non. Cette procédure est utilisée par notre UserForm pour remplir le document. Voir cet article concernant cette problématique de signet).

Placé dans le même projet ce code est appelé par le code événementiel des contrôles de la Userform.

Statistiques

Aujourd'hui1166
Hier1770
Cette semaine6497
Ce mois36729
Total depuis 200418239269

7
visiteurs actuellement en ligne

25 avril 2024