Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
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.
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.
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,
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,
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,
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,
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.
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.