formateur informatique

Actions de macro au chargement du formulaire Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Actions de macro au chargement du formulaire Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Actions au chargement

Dans l'exercice Access précédent, nous avons découvert les macros et leur fonctionnement. Nous avons nommé l'une d'entre elles : AutoExec. A la reconnaissance de ce nom, la base de données déclenche ses actions à l'ouverture. Ainsi, nous avons soumis l'utilisation des données de l'application à un mot de passe. Désormais, il est temps de déclencher des traitements précis, guidés par des évènements bien définis. L'objectif est de faire interagir les objets Access entre eux et de ficeler l'application.

Source et présentation de l'objectif
Pour poursuivre le développement de l'application, il est tout d'abord nécessaire de récupérer les travaux développés au cours des exercices précédents.
  • Télécharger le fichier clients-et-commandes-macros-chargement.rar en cliquant sur ce lien,
  • Le décompresser dans le dossier de votre choix,
  • Ensuite, double cliquer sur le fichier pour ouvrir la base de données dans Access,
  • A l'invite, taper le mot de passe: abc,
  • Puis, cliquer sur le bouton Activer le contenu du bandeau de sécurité,
  • Saisir de nouveau le mot de passe précédemment demandé,
Cette activation ne se produit qu'une seule fois après avoir téléchargé une source externe. En revanche, le mot de passe d'accès est demandé à chaque ouverture. Il s'agit de la première sécurité que nous avons mise en place lors de l'exercice précédent.

Affichage automatique du formulaire par macro Access AutoExec sur ouverture de la base de données

Quoiqu'il en soit, à validation du mot de passe, l'affichage du formulaire principal de navigation est commandé à l'ouverture de la base de données. C'est lui qui offre tous les outils nécessaires à la gestion des informations de l'entreprise. A ce titre, nous avions développé ce système de navigation par onglet à l'occasion d'un exercice sur les formulaires.

Le volet de navigation, sur la gauche de l'écran, énumère tous les outils que nous avons développés jusqu'alors. Les catégories des tables et des requêtes sont repliées temporairement, faute de place. Les catégories des formulaires et macros sont quant à elles déployées. A ce titre, vous notez la présence de la macro AutoExec très spéciale. C'est elle qui a déclenché la boîte de dialogue intimant de valider le mot de passe d'accès. En cas de succès, elle déclenche l'affichage du formulaire principal, comme ici. Le cas échéant, elle aurait fermé la base de données Access.
  • Cliquer sur le dernier onglet à l'extrémité droite du formulaire de navigation : Outils actions,
Une nouvelle navigation est proposée, cette fois à la verticale, pour des instruments très spéciaux. Ces formulaires ont pour vocation d'influer directement sur les données de la base.

Outils actions sur données de la base Access regroupés dans un formulaire avec navigation verticale par onglets

Comme ces opérations sont particulièrement délicates, l'accès à ces formulaires doit être réservé. Seuls les administrateurs capables de valider le mot de passe doivent pouvoir les exploiter.

Macro au chargement du formulaire
Depuis l'exercice précédent, nous avons configuré des actions et provoqué leur déclenchement conditionnel. Désormais, nous devons les attacher à des évènements. Nous provoquerons ainsi des actions contextuelles et chirurgicales pour ficeler l'application, au fil de son développement. En mode création, l'onglet Evènement de la feuille de propriétés, permet de gérer un grand nombre d'évènements. Et comme elle est elle-même contextuelle, elle propose ceux qui sont disponibles selon le contrôle actif.
  • Fermer le formulaire de navigation en cliquant sur la croix de son onglet,
  • Dans le volet de navigation, cliquer droit sur le formulaire F_creer_client,
  • Dans le menu contextuel, choisir Mode création,
Nous basculons ainsi dans la vue en conception de ce formulaire d'action. La feuille de propriétés doit être visible. C'est le bouton du même nom dans le ruban contextuel Création qui permet de l'afficher comme de la masquer. Par défaut, c'est le formulaire lui-même qui est actif. En conséquence, la feuille de propriétés met à disposition les attributs et évènements qui lui sont attachés. Et c'est précisément ce que nous souhaitons. Au chargement du formulaire, une macro doit enclencher des actions conditionnelles veillant à protéger l'accès, tant que l'administrateur n'est pas clairement identifié.

Les traitements à empiler sont très proches de ceux que nous avons bâtis lors de l'exercice précédent. Le contexte change et le raisonnement s'inverse. Si le mot de passe administrateur n'est pas correct, le formulaire doit être fermé pour sécuriser son accès. Dans le cas contraire, aucune action ne doit être entreprise pour ne pas perturber l'ouverture en cours du formulaire. Nous devons donc de nouveau exploiter l'instruction conditionnelle avec la fonction Access BEntrée. C'est cette dernière qui questionne l'utilisateur en lui offrant une zone de saisie en guise réponse.
  • Activer l'onglet Evènement de la feuille de propriétés,
  • Cliquer sur le petit bouton à l'extrémité de son évènement Sur chargement,
Déclencher des actions de macros au chargement du formulaire Access grâce à la feuille de propriétés

Une boîte de dialogue se déclenche. Les actions peuvent être définies selon plusieurs procédés.
  • Dans la boîte de dialogue, choisir Générateur de macro et valider par Ok,
Nous basculons ainsi dans l'éditeur de macro Access. Les actions que nous allons programmer sont attachées. Elles sont destinées à se déclencher au lancement du formulaire. Nous devons tout d'abord barrer l'accès par un mot de passe administrateur à renseigner : abc123 par exemple. S'il est correctement inscrit, l'ouverture du formulaire doit se poursuivre. Donc aucune action ne doit être engagée. S'il est erroné, le formulaire doit être fermé. Nous devons donc vérifier la condition consistant à savoir si la saisie n'est pas valide.
  • Déployer la liste déroulante qui se propose dans l'éditeur de macro,
  • Puis, choisir la troisième commande, soit l'instruction Si,
Paramétrer action de macro conditionnelle avec instruction Si Access

Le bloc de l'instruction conditionnelle s'inscrit dans l'éditeur. Il est en attente d'implémentation. Nous devons commencer par construire le critère à valider dans la zone Expression conditionnelle. Ensuite, nous devons définir les actions à déclencher lorsque la condition est satisfaite. C'est pourquoi une nouvelle liste déroulante se propose juste en dessous de la zone de critère.

Dans cette zone de critère, nous devons donc comparer la saisie de l'utilisateur au mot de passe attendu : abc123. Nous devons donc déclencher l'affichage d'une boîte de dialogue offrant une zone de texte en guise de réponse. Nous l'avons apprise dans l'exercice précédent, c'est la fonction Access BEntrée qui génère une telle boîte de message. Elle est l'équivalent de la fonction VBA InputBox.
  • A droite de la zone Expression conditionnelle, cliquer sur l'icône de la baguette magique,
Nous affichons ainsi le générateur d'expression Access.
  • Dans la liste de gauche, déployer la catégorie des fonctions pour sélectionner l'élément Fonctions intégrées,
  • Dès lors, dans la liste du centre, sélectionner la catégorie Messages,
  • Puis, dans la liste de droite, double cliquer sur la fonction BEntrée,
Nous inscrivons ainsi sa syntaxe brute dans la partie supérieure du générateur d'expression. Entre les parenthèses de la fonction, nous devons renseigner ses arguments. Ils sont séparés les uns des autres par un point-virgule. Mais seuls les deux premiers nous intéressent : prompt et title. Il s'agit respectivement du message et du titre de la boîte de dialogue.
  • A la place de l'argument «prompt», saisir entre guillemets le message suivant :
Veuillez saisir le mot de passe Administrateur
  • A la place de l'argument «title», saisir entre guillemets le titre : Authetnification,
  • Supprimer tous les autres arguments avec leur point-virgule,
  • En revanche, veiller à conserver la parenthèse fermante de la fonction,
Fonction Access BEntrée pour vérifier mot de passe administrateur avant ouverture formulaire

A ce stade, l'expression que nous avons bâtie est la suivante :

BEntrée('Veuillez saisir le mot de passe Administrateur'; 'Authetnification')

Elle n'est pas terminée. Nous nous contentons d'afficher la boîte de dialogue à l'écran. Cette fonction retourne la saisie de l'utilisateur. Nous devons la comparer avec le mot de passe requis : abc123.
  • A la suite de l'expression, taper le symbole inférieur suivi du symbole supérieur, soit : <>,
Comme dans la syntaxe des fonctions Excel, cet opérateur permet de vérifier l'inégalité. En d'autres termes, nous cherchons à savoir si la saisie du mot de passe est erronée.
  • A la suite, saisir le mot de passe à vérifier entre guillemets, soit 'abc123',
  • Puis, valider l'expression en cliquant sur le bouton Ok du générateur,
Sa syntaxe apparaît désormais dans la zone de critère de l'instruction conditionnelle. Si cette condition est vérifiée, le formulaire F_creer_client doit être fermé, mais pas seulement. Il est aussi possible de l'atteindre par les formulaires de navigation _F_navig_actions et _F_navig_principal. Nous verrons comment Access se comporte lorsqu'ils ne sont pas ouverts et que leur fermeture est commandée.
  • Sous la zone de critère, choisir l'action FermerFenêtre avec la liste déroulante,
Il s'agit d'une action au sens large. Nous devons préciser le type de fenêtre et son nom.
  • Dans la zone Type d'objet, choisir Formulaire,
  • Dans la zone Nom d'objet, désigner le formulaire F_creer_client,
  • Dans la zone Enregistrer, choisir Non,
  • De la même façon, ajouter en-dessous les actions permettant de fermer les formulaires _F_navig_actions et _F_navig_principal,
Actions de macro Access pour fermer formulaires si mot de passe administrateur erroné

Il est temps de tester le bon fonctionnement de cette macro. Rappelons-le, elle est censée déclencher ses actions au chargement du formulaire F_creer_client.
  • Dans le ruban Création, cliquer sur le bouton Enregistrer puis sur le bouton Fermer,
Ainsi, nous sommes de retour sur le formulaire F_creer_client, en mode conception.
  • L'enregistrer à son tour par le raccourci clavier CTRL + S,
  • Puis, l'exécuter en enfonçant la touche F5 du clavier,
La boîte de dialogue apparaît aussitôt. Si vous renseignez correctement le mot de passe demandé, l'accès est autorisé et le formulaire s'affiche. En revanche, si votre saisie est erronée, le formulaire se ferme aussitôt. L'accès est verrouillé. A ce titre, il est intéressant de constater qu'aucun message d'erreur n'est apparue. En effet, par les actions de macros, nous demandons de fermer des formulaires qui ne sont pas ouverts. Access ignore donc ces actions. Si vous tentez d'atteindre le formulaire F_creer_client par le biais des formulaires de navigation, le contenu n'est dévoilé qu'à la saisie du bon mot de passe. Le cas échéant, l'accès est barré comme précédemment.

Nous avons judicieusement choisi le formulaire à partir duquel enclencher les actions de macro. Il s'agit du point d'entrée du formulaire _F_navig_actions et de la rubrique Outils actions du formulaire _F_navig_principal. En conséquence, il n'est pas utile et pas conseillé de reproduire le même test à l'ouverture de chaque formulaire d'action. En effet, malgré l'accès a priori déverrouillé, le mot de passe serait demandé à chaque ouverture respective.

Et souvenez-vous, la macro AutoExec que nous avons conçue dans l'exercice précédent, affiche le formulaire de navigation par défaut. A l'avenir, nous verrouillerons l'environnement pour qu'aucun autre objet ne soit accessible. En conséquence, nous avons protégé l'accès aux outils sensibles, en associant des actions de macro sur évènement, celui du chargement du formulaire.

Sachez néanmoins qu'une autre méthode est intéressante. Elle consiste à déclencher ces actions aux clics sur un onglet précis.

Déclencher des actions de macro Access au clic sur les onglets du formulaire

Pour cela, il suffit de sélectionner l'onglet en question en mode conception. Ensuite, il ne reste plus qu'à définir les actions de macro sur l'évènement choisi, grâce à sa feuille de propriétés.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn