Vous êtes sur la page 1sur 13

Cours ACCESS

Les Macro Commandes

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.

Introduction .......................................................................................................................... 2 Cration d'une macro autonome .......................................................................................... 2 Excuter la macro pas pas................................................................................................. 5 Modifier une macro............................................................................................................... 5 Cration d'une macro associe un formulaire ................................................................... 6 Excuter des actions en fonction de conditions................................................................... 7 Afficher un message............................................................................................................. 7 Dplacer le curseur .............................................................................................................. 8 Affectation de la macro l'vnement.................................................................................. 9 Dfinir la valeur d'un champ dans une macro ..................................................................10 Mettre un bouton de commande dans un formulaire........................................................11 Ouvrir un formulaire et afficher un enregistrement ..........................................................12 Crer une boite de dialogue .............................................................................................13

Page 1 sur 13

Cours ACCESS

Les Macro Commandes

LES MACRO COMMANDES


1. Introduction
La macro commande permet d'automatiser certaines tches d'Access, elle peut simuler une suite d'actions qui auraient du tre faites par l'utilisateur. Une macro est compose d'Actions, chaque action correspond une tche : lorsque vous excutez la macro, Access excute automatiquement les actions qu'elle contient. Certaines de ces actions, plus complexes, vous permettent d'afficher des botes de dialogue, de tester la rponse fournie par l'utilisateur, d'afficher une barre de menus personnalise et de dvelopper une application autonome sans avoir besoin de programmer des modules en Visual Basic (bien que les actions fassent rfrence des instructions en Visual Basic). La mthode de cration d'une macro est lie deux facteurs importants : ?? L'environnement de dpart de la macro : certaines macros peuvent tre excutes quelle que soit la fentre active, d'autres sont lies un objet de la base de donnes (formulaire, tat, ) ?? L'vnement qui va dclencher l'excution de la macro : dans un formulaire, ce peut tre un clic sur un bouton, ce peut tre l'ouverture du formulaire, la valeur du contenu d'un contrle, ou encore en fonction de la mise en page d'un tat.

2. Cration d'une macro autonome


Une macro autonome n'est pas lie un vnement spcifique et peut tre excute quelle que soit la fentre active. Nous allons crer une macro qui va ouvrir la table Clients et son formulaire : 1. Dans la fentre principale d'Access, cliquez sur l'onglet Macro et sur Nouveau :

La partie suprieure de la fentre (le tableau) est destine aux diffrentes actions qui vont composer la macro. La plupart des actions ont des paramtres (par exemple l'action OuvrirTable qui ouvre une table demande en paramtre le nom de la table qu'elle va ouvrir), les paramtres (par exemple ici, le nom de la table) sera indiqu dans la partie infrieure de la fentre.

Page 2 sur 13

Cours ACCESS

Les Macro Commandes

2. On choisit dans le menu droulant l'action que l'on veut faire excuter par la macro :

Comme vous pouvez le constater, il existe un trs grand nombre d'actions possible, en fait, tout ce qu'on peut faire dans Access se retrouve dans ce menu. Pour avoir la liste des actions possibles, utilisez l'aide intgre Access qui dcrit le fonctionnement de chaque action. Nous voulons ouvrir une table, nous choisissons l'action "OuvrirTable".

3.

Saisie des paramtres de l'action

Comme vous pouvez le constater, dans le champ "Nom table" apparaissent les noms de toutes les tables de la base, on choisit "Clients". Deux autres champs peuvent paramtrer l'action : ?? Affichage : dtermine si la table sera ouverte en mode cration ou en mode feuille de donnes ?? Mode donnes : Trois choix : Ajout (on peut ajouter des enregistrements la table), Modification (on peut ajouter, modifier ou supprimer des enregistrements) et Lecture Seule (seule la consultation est permise).

Page 3 sur 13

Cours ACCESS

Les Macro Commandes

4. Une deuxime action

Vous l'avez remarqu, le tableau de la fentre "Macros" contient plusieurs lignes, on peut excuter plusieurs actions les unes la suite des autres dans la mme macro, maintenant, aprs avoir ouvert notre table Clients, nous allons ouvrir le formulaire associ cette table :

L'Action "OuvrirFormulaire" a plus de paramtres : ?? Affichage : identique aux tables ?? Mode donnes : identique aux tables ?? Nom Filtre : on peut indiquer ici le nom d'une requte contenant les critres ncessaires la slection des enregistrements. ?? Mode fentre : indique comment le formulaire va tre affich : Standard (comme dfini dans Affichage), Masque (le formulaire est ouvert et automatiquement cach), Icne (le formulaire est rduit en icne), Bote de dialogue (nous verrons a plus tard) ?? Condition Where : plus tard

5.

Excution de la macro

Sauvez votre macro. Comme pour les requtes, cliquez sur l'icne 'Point d'exclamation'. Access va alors excuter toutes les lignes de la macro et s'arrter ds qu'il va rencontrer une ligne vide, ou ds qu'il va rencontrer l'action "ArretMacro".

Page 4 sur 13

Cours ACCESS

Les Macro Commandes

3. Excuter la macro pas pas


Pour analyser le droulement d'une macro, on peut l'excuter pas pas, c'est--dire, action aprs action. Pour cela : 1. 2. Ouvrir la macro en mode cration Cliquer sur l'icne :

3.

Excuter ensuite la macro

Access affiche la premire action ainsi que ses paramtres, cliquez sur : ?? Pas pas : pour excuter cette action et passer la suivante ?? Arrter : pour stopper l'excution de la macro ?? Continuer : Pour poursuivre l'excution de la macro en mode normal

4. Modifier une macro


Pour modifier une macro, ouvrez l en mode cration et positionnez vous sur l'action modifier, cliquez dessus avec le bouton droit : vous pouvez alors la supprimer ou en insrer une autre.

Page 5 sur 13

Cours ACCESS

Les Macro Commandes

5. Cration d'une macro associe un formulaire


Certaines macros doivent tre excutes en rponse un vnement li au formulaire (ouverture, fermeture, fermeture), d'autres dpendent d'un vnement li un contrle du formulaire (clic, valeur du contrle, etc.). Dans le premier cas, la macro doit tre insre dans la feuille de proprits du formulaire, dans le second cas, elle doit apparatre dans la feuille de proprits du contrle. Il faut dfinir prcisment quel est l'vnement qui va dclencher l'excution de la macro (quand tel vnement se produit, telles actions vont se drouler). Prenons un exemple, nous voulons refuser l'enregistrement d'une commande si la date de cette commande n'a pas t saisie. (Nous pourrions dans les proprits du champ date, indiquer dans la proprit Null Interdit Oui). La question se poser est : "Quand va-t-on vrifier que le champ date est vide ?", Il n'y a qu'une rponse : "Quand on passera un nouvel enregistrement, que ce soit pour retourner sur un enregistrement prcdent ou pour en crer un nouveau". Donc, lorsqu'on passera un nouvel enregistrement, si la date est vide, on va afficher un message d'erreur, et positionner le curseur nouveau sur le champ date pour pouvoir le saisir. L'vnement "passer un nouvel enregistrement" est li au formulaire et pas au contrle "Date", l'vnement sera donc associ au formulaire. Voici la liste des principaux vnements qui peuvent tre associs un formulaire : Evnement Sur Ouverture Sur Fermeture Sur Activation Sur Insertion Sur Suppression Avant MAJ Aprs MAJ La macro doit s'excuter A l'ouverture du formulaire A la fermeture du formulaire Lorsque Access accde un enregistrement du formulaire Lorsqu'on prcise la valeur d'un champ d'un nouvel enregistrement Lorsqu'on va supprimer un enregistrement Aprs avoir quitt un enregistrement modifi et avant l'enregistrement des modifications Aprs avoir quitt un enregistrement modifi et aprs l'enregistrement des modifications.

En rsum, ces vnements concernent l'ouverture, la fermeture du formulaire et la gestion des enregistrements. Les vnements lis aux contrles d'un formulaire sont les suivants : Evnement Sur Clic Sur Double Clic Sur Entre Sur Sortie Avant MAJ Aprs MAJ La macro doit s'excuter : Quand on clique sur le contrle Quand on double-clique sur un contrle Avant d'accder un contrle Lorsqu'on quitte un contrle Aprs avoir quitt un contrle modifi et avant qu'Access ne fasse la mise jour Aprs avoir quitt un contrle modifi et aprs sa mise jour

Dans notre exemple, il faut que la macro s'excute lorsqu'on va accder un nouvel enregistrement, on va donc l'affecter l'vnement "AvantMAJ" du formulaire : il faut que la vrification de la bonne saisie de la date se fasse lorsque l'on veut changer d'enregistrement mais avant qu'Access n'enregistre quoi que ce soit.

Page 6 sur 13

Cours ACCESS

Les Macro Commandes

6. Excuter des actions en fonction de conditions


1. On va crer une nouvelle macro pour vrifier la date, une fois la fentre de la macro ouverte, cliquez sur l'icne :

2.

Une nouvelle colonne apparat dans la fentre de la macro, c'est la colonne "Condition", c'est dans cette colonne qu'on va taper la condition qui dcidera si oui ou non l'action de la macro doit s'excuter. On veut qu'un message d'erreur s'affiche lorsque la date de la commande est vide, la condition pour que le message s'affiche est donc : [date de la commande] Est Null. L'action qui va tre dclenche si la condition s'avre vraie va tre l'affichage d'un message d'erreur.

3.

7. Afficher un message
Pour afficher un message pendant une macro, on utilise l'action "BoteMsg", "BoteMsg" va afficher une bote de dialogue Windows avec le texte et les caractristiques qu'on va indiquer dans les paramtres de l'action. L'action "BoteMsg" a les paramtres suivants : ?? ?? ?? ?? Message : texte afficher Bip : Emet un bip sonore lors de l'affichage du texte Type : Icne afficher ct du texte (point d'exclamation, d'interrogation, etc) Titre : titre de la fentre o va s'afficher le texte

Page 7 sur 13

Cours ACCESS

Les Macro Commandes

8. Dplacer le curseur
Une fois le message d'erreur affich, il va falloir positionner le curseur automatiquement sur le contrle Date, pour que l'utilisateur puisse le resaisir. Il existe plusieurs actions pour dplacer le curseur : ?? AtteindreContrle : Dplace le curseur sur un contrle spcifi ?? AtteindrePage : Dplace le curseur sur le premier contrle de la page spcifie ?? AtteindreEnregistrement : Dplace le curseur sur l'enregistrement spcifi ou sur un nouvel enregistrement. Nous devons dplacer le curseur dans le formulaire sur le contrle du champ "Date", nous utiliserons donc l'action "AtteindreContrle" :

Quoi de neuf dans cette fentre ? Sur la premire ligne on a la condition : si la date de la commande est vide, on affiche le message d'erreur, mais aprs avoir affich l'erreur que fait-on ? on va faire plusieurs choses, et pour indiquer que les autres actions que l'on va faire vont se drouler dans le cas o l'erreur s'est produite, on va mettre comme condition "", autrement dit, chaque fois qu'Access va rencontrer comme condition "", il va reprendre la condition spcifie explicitement plus haut. Donc, aprs avoir affich l'erreur, on va excuter l'action "AnnulerEvnement". A quoi sert cette action ? Normalement, aprs avoir modifi le formulaire, Access va m ettre jour les champs correspondants dans les tables lis ce formulaire. Juste avant de faire cette mise jour, Access va appeler la macro associe lvnement AvantMAJ . La macro va tre excute, puis la mise jour sera faite. Il faut quon annule cette mise jour, sinon, le message indiquant que la date est vide va tre affich, puis Access va sauvegarder les modifications et sauver dans la table commandes la date vide. Laction AnnulerEvnement annule la mise jour qui allait tre faite, ainsi, la date vide ne sera pas sauve.

Enfin, on va dplacer le curseur sur le contrle "Date de la commande" grce l'action "AtteindreContrle", Ainsi le curseur clignotera directement sur le contrle o lutilisateur devra saisir la date.

Page 8 sur 13

Cours ACCESS

Les Macro Commandes

9. Affectation de la macro l'vnement


Maintenant que la macro est cre, on va l'affecter la macro l'vnement "AvantMAJ" du formulaire "Commandes". Pour afficher les proprits d'un formulaire, cliquez avec le bouton droit sur le carr noir situ en haut gauche du formulaire, puis dans le menu, cliquez sur "Proprits"

Choisissez l'vnement auquel vous voulez associer la macro, dans le menu droulant s'affichent toutes les macros existantes, on choisit "Date Obligatoire". Une fois la macro associe l'vnement, il suffit d'entrer une commande dans laquelle on omet de saisir la date pour vrifier que la macro va s'xecuter (message d'erreur et repositionnement sur le contrle) :

Page 9 sur 13

Cours ACCESS

Les Macro Commandes

10. Dfinir la valeur d'un champ dans une macro


On peut, grce une macro modifier le contenu d'un champ d'une table. Imaginons que nous voulions que le nom de chaque client saisi soit en majuscule, on pourrait bien sur le faire en modifiant la proprit "Masque de saisie" du contrle "nom du client", mais nous allons voir comment le faire partir d'une macro. Pouvoir modifier le contenu d'un champ lors d'un vnement peut s'avrer trs utile. Nous allons crer une nouvelle macro et utiliser l'action "DfinirValeur"

Quels sont les paramtres de l'action "DfinirValeur" ? ?? Elment indique qu'est-ce qui est modifier, ce peut tre comme ici le nom d'un champ, mais ce peut tre aussi une proprit d'un contrle par exemple. ?? Expression : Indique la nouvelle valeur de l'lment indiqu prcdemment, ce peut tre une valeur indique explicitement, le contenu d'un autre champ, le rsultat d'un calcul, ou, comme ici le rsultat d'une fonction. La fonction "Majuscule( )" renvoie la chane de caractre pass en paramtre en majuscule. Comme prcdemment, on va affecter cette macro l'vnement "AvantMAJ" su formulaire.

Page 10 sur 13

Cours ACCESS

Les Macro Commandes

11. Mettre un bouton de commande dans un formulaire


Nous avions vu rapidement dans les formulaires que, parmi les contrles existants, il y avait un contrle nomm "Bouton de Commande". Ce bouton, plac sur un formulaire, permet d'excuter soit n'importe quelle action d'Access, soit, et c'est ce qui nous intresse ici, une macro. Dans notre formulaire "Bon de commande +", qui contient la commande ainsi que son dtail, nous allons ajouter un bouton qui, lorsqu'on cliquera dessus, dclenchera l'impression du bon de commande. Nous allons crer une macro qui imprimera le formulaire :

Un petit peu compliqu pour imprimer un bon de commande ? La macro comporte trois actions, pourquoi ? Si on n'utilise que l'action "Imprimer", Access va imprimer tous les bons de commande, il faut donc limiter l'impression au bon de commande courant, pour cela, on procde en trois tapes : ?? D'abord, on appelle l'action "ExecuterCommande", "ExecuterCommande" permet d'excuter toutes les oprations possibles dans Access, on va donc choisir parmi la liste propose, l'action "SlectionnerEnregistrement", cette action va slectionner l'enregistrement courant. Une fois cet enregistrement slectionn, on va pouvoir l'imprimer. ?? Ensuite, on appelle l'action "Imprimer", parmi les paramtres de cette commande, il y a la dfinition de ce qui a imprimer : toutes les pages, un groupe, une slection, on choisit la slection. ?? Enfin, on appelle l'action "AtteindreContrle", cette action va positionner le curseur sur le contrle pass en paramtre, ce qui a pour effet de supprimer la slection.

Page 11 sur 13

Cours ACCESS

Les Macro Commandes

On insre ensuite un bouton de commande dans le formulaire, la fentre suivante s'affiche :

On peut choisir toutes les actions possibles, parmi celles-ci, dans la catgorie "Divers", il y a "Executer une macro", aprs avoir cliqu sur suivant, Access nous demande le nom de cette macro, on choisit celle que l'on vient de crer, puis le texte ou l'icne du bouton. Vous pouvez essayer, ca marche ! Si par la suite, vous allez regarder les proprits du bouton qui vient d'tre cr, vous verrez que la macro a t affecte l'vnement "Sur Clic", ce qui signifie, qu' chaque fois qu'on cliquera sur le bouton, la macro se dclanchera, vous pouvez la placer ailleurs, par exemple sur l'vnement "Sur Double Clic", il faudra alors double-cliquer sur le bouton pour imprimer.

12. Ouvrir un formulaire et afficher un enregistrement


Notez que cette manipulation nest donne qu titre dexemple, on peut faire la mme beaucoup plus simplement en utilisant lassistant du bouton de contrle. Nous allons ajouter un bouton sur le bon de commande, ce bouton affichera les informations compltes sur le client concern par le bon de commande : D'abord, on cre une macro qui va ouvrir le formulaire :

On indique qu'on ouvre le formulaire "Clients", et ici, on utilise la condition Where qu'on avait vu plus tt, on va indiquer que dans le formulaire qui va tre ouvert, le champ [Nclient] (numro de client) va tre gal [Formulaires]![bon de commande + ]![Nom Client]. Ce qui signifie que le champ [Nclient] dans le formulaire "Clients" va tre gal au contenu du contrle "Nom Client" dans le formulaire " Bon de commande+".

Page 12 sur 13

Cours ACCESS

Les Macro Commandes

13. Crer une boite de dialogue


Il peut tre pratique de crer une bote de dialogue pour rpondre une question par exemple, nous allons crer une bote de dialogue dans laquelle nous allons entrer un numro de commande, et qui affichera le formulaire correspondant cette commande. 1. Cration de la bote de dialogue

Une bote de dialogue est un formulaire standard qui a des proprits particulires : Dans la fentre proprits du formulaire, cliquez sur l'onglet "Toutes", et mettez la proprit "Fen Indpendante" oui, "Fen Modale" oui, "Auto Center" oui, "Boite Contrle" non et "Affich par dfaut" "Mode simple". Ce qui aura pour effet de crer un formulaire qui sera centr l'cran, qui n'affichera pas le menu systme de windows en haut gauche et qui n'affichera pas les icones pour se dplacer sur les enregistrements.

La liste de choix contient le rsultat d'une requte allant chercher les numros de toutes les commandes. 2. On cre ensuite la macro

La macro est du mme type que la prcdente, la clause Where ici est : [N Commande]=[Formulaires]![boite]![liste commandes] o [N Commande] est le nom du champ contenant le numro de commande dans le formulaire "Bond de Commande" et [liste commandes] est le nom de la liste contenant la liste des commandes existantes.

Voil, nous avons fait le tour rapidement des fonctionnalits offertes par l'utilisation des macros, on peut, bien sur, pousser plus loin et faire beaucoup d'autres choses avec, vous d'exprimenter et de trouver d'autres utilisations aux macros.

Page 13 sur 13