Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Les Macros avec Access
Dans ce
didacticiel nous abordons les
macros dans
Access . Les
macros permettent d'automatiser de nombreuses actions et de réaliser des tâches spécifiques. Pour ce faire, nous allons réaliser les manipulations sur une petite
base de données existante, la
base de données facturation-macros .
Télécharger la base de données facturation-macros.accdb en cliquant sur ce lien ,
L'ouvrir dans Access ,
Cliquer sur le bouton Activer le contenu sous le ruban ,
Comme vous le constatez, cette
base de données est déjà constituée de nombreux objets listés dans le volet de gauche d'
Access . Nous avons des
tables , des
requêtes ainsi que des
formulaires et des
états . L'ossature de cette petite
base de données est conçue sur deux
tables reliées entre elles. La
table Clients qui liste des clients et la
table Commandes qui liste des commandes de ce clients. Le
formulaire Clients_et_commandes regroupe ces données sur une interface graphique ergonomique de sorte que nous accédons aux commandes d'un client sur une même vue. Il s'agit donc d'un formulaire avec un sous formulaire. Le
didacticiel suivant forme sur l'apprentissage de la création de ces
formulaires complexes.
Création d'une macro
Cliquer sur l'onglet créer pour afficher son ruban,
Cliquer sur le bouton Macro dans la section Macros et codes ,
Nous basculons ainsi dans l'
éditeur de macro qui permet de paramétrer les actions à associer.
Dans la liste déroulante de l'éditeur, choisir l'action OuvrirFormulaire ,
Dans la liste Nom du formulaire , choisir le formulaire Clients_et_commandes ,
Dans la liste Mode de données , choisir le mode Modification ,
Comme vous le constatez, nous aurions pu choisir le
mode Lecture seule . Dans ce cas les utilisateurs n'auraient pu que consulter les données et non les modifier. Ici, en
mode Modification , nous pouvons modifier les clients et leurs commandes.
Réaliser la combinaison de touches CTRL + S pour enregistrer cette macro,
Dans l'invite qui apparaît, lui donner un nom, par exemple : Ouvrir_form_clts_cmdes,
Puis valider en cliquant sur Ok.
La
macro apparaît dans la liste de tous les objets du volet de gauche dans la section
Macros .
Fermer l'éditeur de macro en cliquant sur la croix de son onglet,
Double cliquer sur la macro ainsi créée dans le volet de gauche,
Vous constatez qu'elle commande bien l'affichage du
formulaire Clients_et_commandes comme nous l'avons demandé.
Fermer ce formulaire en cliquant sur la croix de son onglet.
Les groupes de macros
Il s'agit ni plus ni moins d'une
macro dans laquelle nous paramétrons plusieurs actions. Ainsi la
macro ne se limite pas à un traitement. Elle enchaîne les tâches en cascade selon la chronologie qui a été définie.
Cliquer sur la macro dans le volet de gauche pour la sélectionner,
Réaliser la combinaison de touches CTRL + C pour la copier,
Réaliser la combinaison de touches CTRL + V pour la coller,
A l'invite qui apparaît, lui donner un nom, par exemple : Groupe_form_clts_cmdes ,
Puis cliquer sur Ok pour valider.
La copie de cette
macro apparaît à son tour dans le volet de gauche. Pour reprendre le paramétrage d'une
macro et lui ajouter des
actions , nous devons l'ouvrir en
mode création :
Dans le volet de gauche, cliquer avec le bouton droit de la souris sur la copie de la macro que nous venons de créer,
Dans le menu contextuel, cliquer sur Mode création ,
Nous souhaitons ajouter une action qui permette de définir précisément à quel endroit le
formulaire doit s'ouvrir, sur quel client. Pour cela, nous devons ajouter une action qui réalise un
filtre sur le nom du client. Ce nom lui sera passé à l'ouverture du
formulaire par l'utilisateur qui souhaite accéder à ce client. C'est la
condition WHERE du
filtre avec un paramètre qui va permettre de réaliser cette tâche.
Sous l'action précédente, à l'aide de la liste déroulante, choisir l'action DéfinirFiltre ,
Attribuer un nom à ce filtre dans la zone Nom du filtre , par exemple Quel_client ,
Dans la zone Condition WHERE , taper la correspondance suivante : [Clients_nom]=[Nom du client ?]
Nous demandons à ce que le nom du client, identifier dans la table par le champ
Clients_nom soit identique à ce que l'utilisateur tapera au moment de l'action. Le fait que le paramètre
Nom du client ? tapé entre crochets ne corresponde pas à un nom de
champ valide de la
table , amènera
Access à vous demander de préciser, via une boîte de dialogue au moment de l'exécution. Remarque : Quand vous pointez sur une action dans l'éditeur de
macro , vous notez la présence d'une flèche verte dirigée vers le haut ou le bas. Elle permet tout simplement de modifier la chronologie de la
macro en changeant l'ordre de ses actions.
Enregistrer la macro (CTRL + S ),
Fermer l'éditeur de macro en cliquant sur la croix de son onglet,
Puis double cliquer sur cette macro depuis le volet de gauche afin de l'exécuter,
L'ouverture se produit et est directement suivie de l'invite programmée par la
condition WHERE avec comme indication dans la boîte de dialogue, l'information que nous avions donnée :
Nom du client ?
Taper alors le nom de l'un des clients, par exemple Douch,
Puis valider en cliquant sur Ok.
Vous êtes directement positionné sur le client que vous souhaitez traiter. Voilà donc, un début intéressant avec les macros pour automatiser certaines tâches et gagner du temps.
Fermer le formulaire en cliquant sur la croix de son onglet.
Condition dans les macros
Nous allons compliquer légèrement le cas ce qui va nous donner un léger aperçu de la puissance des
macros avec
Access . Nous souhaitons que la
macro conçue jusqu'alors fonctionne toujours de la même façon à un détail près. Si l'utilisateur connaît le
mot passe c'est qu'il s'agit de l'
administrateur . Dans ce cas, le
formulaire lui sera ouvert avec l'invite et avec tous les
droits soit l'
ajout et la
modification des données . Dans le cas contraire, le
formulaire s'ouvre toujours avec l'invite sur le nom mais en
lecture seule , donc l'utilisateur ne peut modifier aucune donnée. Ce principe permet de
sécuriser les données de la
base de données . Pour cela nous devons ajouter dans la
macro une
condition qui vérifie le mot de passe saisi par l'utilisateur.
Dans le volet de gauche, sélectionner la dernière macro Groupe_form_clts_cmdes ,
La copier (CTRL + C ),
Puis la coller (CTRL + V ),
A l'invite, taper son nouveau nom, par exemple : Si_form_clts_cmdes ,
Puis valider en cliquant sur Ok.
La nouvelle
macro apparaît bien dans le volet de gauche dans la liste des
macros .
Cliquer dessus avec le bouton droit de la souris,
Dans le menu contextuel, cliquer sur Mode création ,
Nous voilà de retour dans l'éditeur de
macro . Si le mot de passe est correct, nous ouvrons avec tous les droits sinon, nous ouvrons en lecture seule. Le volet sur la droite de l'
éditeur de macro représente le
catalogue d'actions . Il est organisé en groupes d'actions représentés par des dossiers. Vous constatez à ce titre qu'ils sont nombreux, que les
actions le sont tout autant et que les
macros ont donc peu de limite. Un dossier
Déroulement de programme doit être ouvert. Dans ce dernier figure l'
action Si . Elle permet de poser la fameuse condition que nous recherchons.
Double cliquer sur cette action Si depuis le volet de droite,
Elle se greffe en bas de l'éditeur sous les deux
actions précédentes.
Pointer avec la souris sur l'action Si de manière à faire apparaître la flèche verte dirigée vers le haut que nous avons évoquée toute à l'heure,
Cliquer deux fois consécutivement sur cette flèche verte de manière à remonter le Si en tête des actions ,
Vous devez obtenir le résultat présenté par la figure ci-dessous.
Maintenant nous devons définir le
critère de la
fonction Si . Le
mot de passe doit être validé. Pour cela, l'utilisateur doit pouvoir saisir le
mot de passe , donc il faut une boîte de dialogue qui renvoie le texte tapé par l'utilisateur.
Cliquer sur l'icône de la baguette magique située à droite de la zone de saisie de la fonction Si ,
Vous ouvrez ainsi le générateur d'expression.
Dans la liste de gauche Eléments d'expression , déployer le groupe Fonctions en cliquant sur son symbole + ,
Cliquer alors sur Fonctions intégrées ,
Dans la liste centrale, Catégories d'expressions , cliquer sur la catégorie Messages ,
Dans la liste de droite, Valeurs d'expressions , cliquer sur la fonction BEntrée ,
Puis cliquer sur Ok pour valider et fermer le générateur d'expression .
L'expression n'est pas terminée puisqu'elle n'est pas paramétrée et qu'elle ne pose aucun critère. Mais nous allons finir de la personnaliser depuis l'
éditeur de macro car c'est plus simple.
Dans l'
éditeur de macro , dans l'expression de la
fonction Si :
Remplacer le texte «prompt» par le message de la boîte de dialogue, par exemple : 'Veuillez saisir le mot de passe Administrateur s'il vous plaît',
N'oubliez pas les guillemets.
Remplacer le texte «title» par 'Mot de passe',
Il s'agit du titre qui apparaîtra sur la boîte de dialogue. Tous les autres arguments étant facultatifs :
Supprimer tous les arguments qui suivent et fermer la parenthèse après le titre,
Après la parenthèse fermée, taper le symbole = ,
Le mot de passe doit suivre pour que le critère soit complété. Nous choisissons arbitrairement le mot de passe
xyz .
Taper le mot de passe 'xyz' sans oublier les guillemets car il s'agit d'un texte,
Le critère est correctement tapé. Cependant les actions que nous avions précédemment définies pour ouvrir le formulaire et rechercher un client ne sont pas incluses dans la fonction. Elles vont donc échapper à la vérification du critère. Nous devons les glisser dans la partie
Alors de la
fonction Si .
Cliquer et glisser l'action OuvrirFormulaire sur la fonction Si ,
Un cadre rouge apparaît autour de l'action de la
fonction Si au moment où vous pouvez relâcher le bouton de la souris. Vous incorporez ainsi l'action d'ouverture dans le
Alors de la
fonction Si , soit lorsque le critère sur le mot de passe est vérifié.
Faire de même avec l'action DéfinirFiltre en la plaçant fort logiquement après l'action OuvrirFormulaire ,
Jusqu'alors par le biais de la macro, nous avons bien indiqué quoi faire lorsque le mot de passe est validé : Ouvrir le formulaire avec tous les droits (Modification) et enclencher la recherche sur le nom. Mais nous n'avons pas encore indiqué quoi faire dans le cas contraire, un utilisateur qui n'est pas l'administrateur : Ouvrir le formulaire en lecture seule et enclencher la recherche sur le nom.
Dans l'éditeur de macro , en bas de la fonction Si , cliquer sur le lien Ajouter sinon ,
Nous allons greffer dans cette partie sinon une copie des deux actions exécutées par la partie Alors.
En maintenant la touche CTRL enfoncée, cliquer et glisser l'action OuvrirFormulaire dans la partie sinon ,
Modifier alors son mode de données sur Lecture seule ,
Puis, toujours avec la touche CTRL , cliquer et glisser la fonction DéfinirFiltre dans la partie Sinon après l'action OuvrirFormulaire que nous venons de modifier,
Enregistrer la macro (CTRL + S ),
La capture ci-dessous illustre le travail effectué sur la macro.
Fermer l'éditeur de macro en cliquant sur la croix de son onglet,
Puis, double cliquer sur cette macro dans le volet de gauche pour l'exécuter,
La boîte dialogue que nous avons paramétrée (BEntrée) s'affiche.
Taper le mot de passe administrateur xyz et valider,
L'ouverture du formulaire suit selon la chronologie programmée puis survient l'invite sur le nom du client à rechercher.
Taper un nom de client comme Douch par exemple et valider par Ok,
Jusque là tout fonctionne, nous nous retrouvons bien sur le client demandé après avoir tapé le mot de passe et le nom du client recherché.
Essayer de modifier la date de naissance du client,
Access vous y autorise. Le
formulaire a bien été ouvert en
mode exclusif .
Fermer le formulaire ,
Double cliquer de nouveau sur la macro dans le volet de gauche,
Taper un mot de passe erroné ou valider directement en cliquant sur Ok,
Taper ensuite le nom du client recherché, le même que précédemment Douch,
Access vous y positionne de la même façon que précédemment. Vous notez au passage que la modification sur la date de naissance a bien été prise en compte.
Tenter de nouveau de modifier la date de naissance du client,
Cette fois
Access vous l'interdit. Le
formulaire a bien été ouvert en
mode Lecture seule et les
critères de la
fonction Si ont correctement été déroulés. Voilà donc un bout d'
application Access fort intéressant pour
sécuriser les données . Tous les salariés qui ne connaissent pas le mot de passe ont bien accès aux données pour les consulter et/ou les imprimer mais ne peuvent pas les modifier. Les administrateurs quant à eux, par le biais de la même application, ont accès aux mêmes informations mais peuvent en plus les modifier, les supprimer et en ajouter. Pour parfaire l'application et sécuriser encore plus les données, nous avons besoin que seule cette invite de saisie de mot de passe soit disponible à l'ouverture de la
base de données . Pour cela nous avons besoin d'un type de
macro particulier, une
macro auto-exécutable .
Macro auto-exécutable – Autoexec
Nous allons créer une
macro dont le but sera simplement de lancer l'exécution de la
macro précédente. Ce qui définira qu'elle devra s'exécuter au démarrage de la base de données est son nom. Elle doit s'appeler
Autoexec .
Cliquer sur l'onglet Créer pour activer son ruban,
Cliquer sur le bouton Macro de la section Macros et code ,
Dans le volet de droite, dans le sous dossier Commandes de macro du dossier Actions , double cliquer sur la commande ExécuterMacro ,
La
macro apparaît au centre de l'éditeur.
Dans la liste déroulante Nom de macro , choisir la macro précédente Si_form_clts_cmdes ,
C'est tout ! Il ne nous reste plus qu'Ã l'enregistrer avec le bon nom.
CTRL + S pour enregistrer cette nouvelle macro ,
A l'invite taper précisément le nom suivant : Autoexec ,
Valider et fermer l'éditeur de macro .
La nouvelle
macro apparaît bien dans la liste des objets dans le volet de gauche.
Cliquer sur le menu Fichier en haut de la fenêtre Access ,
Dans la liste, cliquer ensuite sur Fermer ,
Maintenant que la
base de données est fermée, nous souhaitons vérifier qu'elle se comporte bien comme convenu à l'ouverture.
Cliquer de nouveau sur le menu Fichier ,
Cliquer ensuite sur Ouvrir ,
Votre
base de données doit apparaître dans la liste des bases récentes, catégorie
Aujourd'hui , au centre de l'écran.
Cliquer dessus pour l'ouvrir,
Le message demandant le mot de passe apparaît automatiquement. Nous avons donc bien réussi à transformer notre
base de données en
petite application avec quelques
sécurités même si d'autres sont encore à définir. Ce sera l'objet d'un autre support de formation.