formateur informatique

Débuter avec les macros Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Débuter avec les macros Access
Livres à télécharger


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

Abonnez-vous gratuitement à la chaîne Youtube Rossetti Stéphane .
Sujets et formations similaires :


Découverte des macros Access

Après les tables, requêtes et formulaires, cet exercice est destiné à manipuler les macros pour les découvrir et les comprendre. Elles permettent d'engager des actions qu'il est possible d'empiler. Leur intérêt est encore plus grand que celui des macros que nous avions découvertes avec Excel. Bien souvent, on les utilise pour faire interagir les objets Access. L'une des finalités est d'engager des actions au clic sur un bouton de formulaire ou au choix d'une valeur dans une liste déroulante. Mais, nous n'en sommes pas encore là. Nous devons tout d'abord apprendre à les construire.



Base de données source
A chaque étape, nous proposons de récupérer les travaux précédents. Notre base de données s'enrichit au fur et à mesure. Tous les éléments précédents sont nécessaires pour les développements suivants. C'est elle qui produira à l'issue, l'application intégrale de gestion et facturation des clients, sans l'intervention du code VBA. Dans les exercices précédents, nous avons insisté sur le rôle des onglets. Nous avons appris à fragmenter l'information au sein d'un formulaire grâce au contrôle Onglets. Mais nous avons aussi découvert l'intérêt de la navigation par onglets. Ainsi, nous avons pu réunir sur une même interface tous les outils utiles à l'application.

Formulaire Actions Access avec navigation par onglets à animer par les macros

Certains de ces outils sont des formulaires devant réaliser des actions. Il peut par exemple s'agir de créer un nouveau produit ou de supprimer un client obsolète. Nous avons réalisé leur conception et ils sont désormais en attente de développement.

Pour la plupart, ces actions ne peuvent être entreprises que par des macros si l'on excepte le code VBA. Mais généralement, ce dernier ne doit intervenir que lorsque plus aucune solution ne peut être apportée par les outils usuels.

C'est pourquoi la découverte des macros par l'exercice est importante. Forts de ces acquis, nous les exploiterons ensuite pour finaliser les formulaires en attente.

Exécuter des actions
Les premières macros que nous allons concevoir sont donc destinées à être indépendantes. Aucune interaction n'est prévue pour l'instant. Et vous allez le constater, les possibilités de traitements et actions, sont nombreuses. Cette remarque est d'autant plus vraie que certaines tâches ou critères d'actions peuvent être enrichis à l'aide des fonctions Access. Comme nous l'avions découvert lors de la conception des requêtes, le générateur d'expression se propose en effet naturellement. Mais nous proposons de débuter simplement.
  • Fermer le formulaire_F_navig_principal s'il est ouvert,
  • En haut de la fenêtre Access, cliquer sur l'onglet Créer pour activer son ruban,
  • Tout à fait à droite du ruban, dans la section Macros et code, cliquer sur le bouton Macro,
Créer une macro Access

Nous basculons ainsi dans l'éditeur de macro Access. Et comme vous le remarquez, une liste déroulante se propose.

Liste des actions à définir pour concevoir la macro Access

Cette liste énumère toutes les actions classiques qu'il est possible d'entreprendre. Comme elles sont nombreuses, nous n'allons pas les passer en revue. Au fil des exercices, nous découvrirons les plus utiles.

Sur la droite de l'éditeur, vous devez noter la présence du catalogue d'actions. S'il n'est pas visible, il suffit de cliquer sur le bouton du même nom dans le ruban Création.

Catalogue des actions disponibles pour créer des macros Access

Les actions y sont organisées par catégories, mais pas seulement. La rubrique Déroulement de programme permet notamment d'exploiter les instructions conditionnelles. Leur fonctionnement est semblable à celui de la fonction Si d'Excel. Elles apportent de la puissance puisqu'elles permettent d'évaluer des conditions avant d'engager des actions. Nous y reviendrons bientôt.
  • Au centre de l'éditeur, avec la liste déroulante, choisir l'action ExporterAvecMiseEnForme,
Ces actions sont toutes classées par ordre alphabétique. Certaines sont spécifiques et nécessitent d'être paramétrées. Pour réaliser une exportation, faut-il encore préciser les données à traiter et sous quel format produire le résultat. C'est pourquoi, dans certains cas comme ici, les attributs de l'action apparaissent. Certains doivent être renseignés.
  • Dans la zone Type d'objet, conserver : Table,
  • Dans la zone Nom d'objet, choisir la table Clients,
  • Dans la zone Format de sortie, choisir Classeur Excel (*.xlsx),
Configurer une macro Access pour exporter les données de table



Les autres paramètres peuvent être ignorés, sauf un. L'attribut fichier de copie permet d'automatiser le traitement en désignant le fichier de sortie en amont. Pour cela, et même s'il n'existe pas, le nom du fichier doit être spécifié avec son chemin d'accès complet.

Il convient donc de copier l'adresse de votre dossier de décompression et de lui ajouter le nom du fichier, par exemple export.xlsx, après un antislash, comme ceci dans notre cas :

E:FormationAccess__Access2019Exercices4-automatisations-et-macros0-decouvrir-macros-accessdevexport.xlsx
  • Ajouter cette adresse adaptée dans la zone Fichier de copie,
  • Enregistrer la macro (CTRL + S) sous le nom : Exporter,
Comme vous le constatez, à validation, la macro s'inscrit dans le volet de navigation, au même titre que tous les autres objets Access. Mais elle apparaît explicitement détachée dans sa propre catégorie. Nous le verrons, le phénomène sera tout autre avec les macros attachées aux formulaires, pour exécuter des actions au clic par exemple. Elles sont incorporées. De fait, elles n'apparaîtront pas listées dans le volet de navigation. Néanmoins, leur principe de construction reste le même.
  • Fermer la macro en cliquant sur la croix de son onglet,
  • Dans le volet de navigation, double cliquer sur la macro Exporter,
En apparence, rien ne se produit. En réalité, le traitement est réalisé en tâche de fond. Si vous affichez le contenu du dossier que vous avez désigné, vous y constatez la présence du fichier export.xlsx.

Données Excel exportées depuis une table Access par action de macro

Si vous double cliquez dessus pour l'ouvrir dans Excel, vous constatez que les informations de la table Clients ont parfaitement été exportées. De plus, elles sont accompagnées des noms de champs en entête. Ces exportations sont intéressantes dans la mesure où Excel est un fabuleux calculateur. Il peut se charger aisément de tous les dénombrements statistiques et autres opérations de repérage par exemple.
  • Fermer Excel et revenir sur l'interface d'Access,
  • Dans le volet de navigation, cliquer droit sur la macro Exporter,
  • Dans le menu contextuel, choisir Mode création,
Nous sommes ainsi de retour dans l'éditeur de macro, pour poursuivre la construction de cette dernière. En effet et comme nous le disions, nous pouvons empiler les tâches. C'est la raison pour laquelle une nouvelle liste déroulante se propose en dessous de l'action précédente. Par la même occasion, nous souhaiterions exporter aussi les données de la table Produits.
  • Dans la nouvelle liste déroulante, choisir l'action l'action ExporterAvecMiseEnForme,
  • Conserver le type d'objet sur Table,
  • Dans la zone Nom d'objet, désigner la table Produits,
  • Dans la zone Format de sortie, choisir : Classeur Excel (*.xlsx),
  • Dans la zone Fichier de copie, spécifier le fichier export2.xlsx associé au même chemin que précédemment,
  • Enregistrer la macro et la fermer en cliquant sur la croix de son onglet,
  • Dans le volet de navigation, double cliquer sur son nom pour l'exécuter,
Comme vous le remarquez, une alerte apparaît cette fois. En effet, le fichier existe déjà. Le système demande logiquement l'autorisation de l'écraser. A ce titre, il est important d'avoir préalablement fermé Excel. Access n'aurait pas eu l'autorisation d'écrire dans un fichier ouvert en mode exclusif.

Si vous consultez le dossier désigné, vous constatez la présence des deux fichiers Excel d'exportation. Et si vous les ouvrez, vous remarquez que les données de l'une et l'autre table, ont parfaitement été restituées.

Action de macro Access pour ouvrir automatiquement un fichier de données exportées

Remarque : Si nous avions réglé le paramètre Lancement automatique sur Oui, les fichiers Excel se seraient ouverts directement après l'exécution de la macro.



Automatiser l'affichage d'un formulaire
Finalement, la macro précédente était destinée à nous familiariser avec l'éditeur de macro et son fonctionnement. Désormais, nous souhaitons fabriquer une macro utile pour l'application. Elle doit déclencher l'affichage du formulaire de navigation à l'ouverture de la base de données. Mais cet affichage doit être soumis à condition. Un mot de passe utilisateur doit être renseigné. Le cas échéant, l'accès doit être refusé.

L'action consistant à déclencher l'ouverture d'un formulaire est triviale. Nous aurons tôt fait de la trouver. Mais, pour valider une saisie utilisateur, le problème se corse. Nous devons déclencher une boîte de dialogue. C'est le générateur d'expression qui apporte la solution par une fonction dédiée. Cette saisie doit être analysée. Donc, cette fonction doit être imbriquée dans une instruction conditionnelle de macro. Nous l'avons découverte précédemment dans le catalogue d'actions.
  • Cliquer sur l'onglet Créer en haut de la fenêtre Access pour activer son ruban,
  • Tout à fait à droite, dans la section Macros et code, cliquer sur le bouton Macro,
Nous sommes de retour dans l'éditeur de macro Access pour définir de nouvelles actions. Comme nous le disions, l'ouverture du formulaire de démarrage est contextuelle. Cette action ne doit intervenir que si la condition est remplie. Elle doit donc être imbriquée dans l'instruction conditionnelle.
  • Dans le catalogue d'actions, double cliquer sur l'instruction Si,
Cette action a pour effet d'inscrire le bloc de l'instruction conditionnelle dans l'éditeur de macro. Elle est en attente d'implémentation. L'expression conditionnelle doit tout d'abord être renseignée. Il s'agit du critère à vérifier. Un mot de passe, par exemple abc, doit être renseigné par l'utilisateur pour poursuivre.

Engager des actions de macros conditionnelles avec Access

Si sa saisie est correcte, alors l'action consistant à afficher le formulaire de navigation peut être déclenchée. C'est la raison de la présence de la liste des actions juste en-dessous de la zone Expression conditionnelle. Il est même possible d'entrevoir d'autres actions le cas échéant. C'est pourquoi, le lien Ajouter sinon se propose sur la droite du bloc. Nous y reviendrons vite.

C'est la fonction Access BEntrée qui permet d'offrir une boîte de dialogue avec une zone de texte pour la réponse attendue.
  • A l'extrémité droite de l'expression conditionnelle, cliquer sur l'icône de la baguette magique,
Cette action a pour effet de déclencher le générateur d'expression. Nous l'avons exploité à maintes reprises pour la conception des critères dynamiques de requêtes.
  • Dans la liste de gauche, déployer l'arborescence des fonctions jusqu'à sélectionner l'élément Fonctions intégrées,
  • Dans la liste du centre, sélectionner la catégorie Messages,
  • Dans la liste de droite, double cliquer sur la fonction BEntrée,
Générateur expression Access pour action de macro consistant à déclencher une boîte de dialogue avec utilisateur

Nous l'inscrivons ainsi dans la partie supérieure du générateur d'expression. Ses arguments sont nombreux. Mais seul le premier et éventuellement le deuxième nous intéressent. Les autres sont facultatifs. Le premier «prompt» est un message à destination de l'utilisateur pour l'aiguiller. Le deuxième permet de donner un titre à la boîte de dialogue.
  • Remplacer le premier paramètre par le texte : Mot de passe requis :, entre guillemets,
  • Remplacer le deuxième par le texte : Identification, entre guillemets,
  • Supprimer les arguments suivants en conservant la parenthèse fermante,
L'expression bâtie à ce stade est la suivante :

BEntrée('Mot de passe requis :'; 'Identification')

La syntaxe n'est pas terminée. Nous sommes dans la zone de critère de l'instruction conditionnelle. Cette fonction renvoie la saisie de l'utilisateur. Nous devons la comparer avec le mot de passe défini : abc.
  • A la suite de l'expression, taper le symbole égal (=),
  • Puis, taper le mot de passe à vérifier entre guillemets : 'abc',
L'expression finalisée est donc la suivante :

BEntrée('Mot de passe requis :'; 'Identification') = 'abc'
  • Cliquer sur le bouton Ok du générateur d'expression pour valider la syntaxe,
Comme vous pouvez le voir, le critère ainsi bâti s'inscrit bien dans la zone de l'expression conditionnelle.
  • Déployer la liste déroulante située juste en-dessous,
  • Choisir l'action OuvrirFormulaire,
Le bloc d'action apparaît. De nombreux attributs se proposent car il est possible de réaliser des affichages spécifiques et filtrés. Ici, nous souhaitons simplement l'ouvrir. Encore faut-il le désigner.
  • Dans la zone Nom du formulaire, désigner le formulaire _F_navig_actions,
Action conditionnelle de macro Access pour ouvrir un formulaire sur vérification du mot de passe saisi

Nous aurions pu choisir le formulaire _F_navig_principal puisqu'il les regroupe tous. Nous sommes en phase d'apprentissage et ce sont les manipulations qui nous intéressent. A ce titre, même si ce n'est pas utile, nous allons adresser un message de bienvenue en cas de succès.
  • Déployer la liste déroulante placée en-dessous de l'action précédente,
  • Tout en bas de la liste, choisir l'action ZoneMessage,
  • Dans la zone Message, saisir le texte suivant : Bonjour et bienvenue !,
  • Dans la zone Bip, choisir Non,
  • Dans la zone Titre, taper le texte suivant : Accès autorisé,
Nous le disions, en cas de saisie erronée, nous souhaitons engager un autre traitement. Si le mot de passe est incorrect, l'accès est refusé. En conséquence, la base de données doit être fermée.
  • Cliquer en haut de la zone du Si pour réactiver le bloc de l'instruction conditionnelle,
  • En bas à droite de la dernière action, cliquer sur le lien Ajouter sinon,
  • Déployer la liste déroulante qui se propose et choisir l'action ZoneMessage,
  • Dans la zone Message, taper le texte suivant : Le mot de passe est incorrect,
  • Dans la zone Bip, choisir Non,
  • Dans la zone Titre, saisir le texte suivant : Accès refusé,
  • Déployer alors la liste déroulante du dessous,
  • Puis, choisir l'action QuitterAccess,
  • Dans la zone Options, choisir Quitter,
En effet, aucune modification n'est censée intervenir. Il n'est donc pas nécessaire d'enregistrer la base de données.
  • Enregistrer la macro (CTRL + S) sous le nom : Depart,
Actions conditionnelles de macro Access pour protéger accès au formulaire de démarrage



Il est temps de tester le fonctionnement de la macro.
  • Cliquer sur la croix de son onglet pour la fermer,
  • Dans le volet de navigation, double cliquer sur son nom pour l'exécuter,
Mot de passe requis pour ouvrir un formulaire Access protégé par une action de macro

Comme vous le constatez, la boîte de dialogue de la zone de critère se déclenche aussitôt. Si vous renseignez correctement le mot de passe, le formulaire apparaît avec le message de bienvenue.

Accès autorisé au formulaire Access après validation du mot de passe demandé par la macro

Si vous commettez une erreur de saisie en revanche, une alerte se déclenche et la base de données est fermée. Mais à ce stade, nous pouvons légitimement nous questionner sur l'utilité de cette macro. Elle ne protège pas l'application puisque l'utilisateur doit choisir lui-même de la déclencher. Pour qu'elle sécurise la base de données, elle doit s'enclencher à l'ouverture. Et l'adaptation est triviale. Il suffit de lui attribuer un nom spécifique : AutoExec.
  • Dans le volet de navigation, cliquer droit sur la macro Depart,
  • Dans le menu contextuel, choisir Renommer,
  • Puis, saisir : AutoExec et valider par la touche Entrée du clavier,
  • Fermer alors la base de données,
  • Puis, à la racine du dossier de décompression, double cliquer sur son nom pour l'exécuter,
Le résultat est cette fois tout autre. Le contrôle du mot de passe se déclenche automatiquement à l'ouverture de la base de données. Tant qu'il n'est pas saisi, aucune autre action ne peut être entreprise. S'il est erroné, la base de données est instantanément fermée. Bref, son accès est désormais sécurisé. Sachez néanmoins qu'à ce stade, il est trivial de faire sauter cette protection. Il suffit d'exécuter la base de données tout en maintenant la touche Maj du clavier enfoncée. Mais, une formation VBA Access explique comment neutraliser cette touche.

Macros et Visual Basic
Pour des applications professionnelles, il n'est pas rare de devoir réaliser des actions et traitements encore plus spécifiques. C'est alors le code VBA Access qui prend le relais pour aller plus loin. Une très bonne façon de s'initier à ce dernier consiste à convertir des macros existantes en VBA. Comme nous savons les opérations qu'elles réalisent, l'apprentissage et la compréhension du code s'en trouvent simplifiés.
  • Dans le volet de Navigation, cliquer droit sur la macro AutoExec,
  • Dans le menu contextuel, choisir Mode création,
  • Dans le ruban Création, cliquer sur le bouton Convertir les macros en Visual Basic,
  • Dans la boîte de dialogue qui suit, décocher les deux cases,
  • Puis, confirmer en cliquant sur le bouton Convertir,
  • Ensuite, valider le message de confirmation qui apparaît,
Nous basculons ainsi dans l'éditeur de code VBA Access. Il s'agit alors de double cliquer sur le nom du module situé dans l'explorateur de projet. Ce dernier est généralement placé sur la droite de l'éditeur.

Actions de macros Access transcrites en code Visual Basic

Dès lors, le code VBA des actions transcrites apparaît dans la feuille de code, au centre de l'écran. La fonction VBA InputBox est donc celle qui offre une boîte de dialogue avec zone de saisie. D'ailleurs, nous l'avions apprise dans la formation VBA Excel sur les variables.

L'objet VBA Access DoCmd est particulièrement précieux. Il permet d'enclencher des actions selon les méthodes appelées. Ici, la méthode OpenForm parle d'elle-même. Elle permet l'ouverture d'un formulaire, dont le nom lui est passé en paramètre. La formation VBA Access sur les interactions entre objets l'explicite en détail.

 
Sur Facebook
Sur G+
Sur Youtube
Les livres
Contact
Mentions légales



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