|
Créer un formulaire de recherche avec
liste déroulante
La macro
Notre objectif va consister à présent à associer
un choix dans la liste déroulante à une macro.
Cette dernière devra remplir les objectifs suivants :
- ouvrir le formulaire Clients ;
- se positionner sur le client sélectionné dans la
liste déroulante ;
- refermer la fenêtre RechercheClient,
devenue inutile.
Vous allez voir que cela n'est guère compliqué. Commençons
!
Rebasculez en mode création ( ).
Activez la zone de liste et sélectionnez l'onglet Evénement.
Cet onglet est uniquement utilisé pour associer des macros
ou du code à des actions. Celle qui nous intéresse
se nomme Après mise à jour
(ce qui signifie, dans le cas présent, après sélection).
Cliquez sur ... et choisissez Générateur
de macro et validez.
Access vous invite à nommer votre macro. Que pensez-vous
de AtteindreClient ? Tapez ce nom et
validez.
On peut le dire : la fenêtre de conception de macro est pour
le moins... extrêmement dépouillée !
Elle comporte 2 colonnes : Action et
description (que nous n'utiliserons pas et qui sert à documenter
votre macro) et une zone Arguments de l'action,
en bas de l'écran, pour l'instant inactive.
Cliquez dans la cellule Action et repérez
la petite flèche. Activez-la. Vous accédez à
présent à la liste des actions possibles. Celle qui
nous intéresse (cf. notre petit cahier des charges ci-dessus)
est OuvrirFormulaire. Sélectionnez-la
: la zone inférieure de votre écran affiche à
présent un masque complémentaire comportant plusieurs
lignes.

La zone inférieure, complétée
Positionnez votre curseur sur la ligne Nom
formulaire et activez la liste déroulante : sélectionnez
le formulaire que vous souhaitez ouvrir grâce à votre
macro. En l'occurrence, il s'agit de Clients.
Laissez le mode Affichage positionné
sur Formulaire.
Positionnez votre curseur sur le champ Conditions
where et cliquez sur le générateur
d'expression (...).
Il va en effet falloir indiquer à Access quel champ de la
table Clients nous souhaitons mettre en
correspondance avec l'élément de notre liste. Le générateur
est là pour nous aider à nous souvenir du nom de chacun
des champs à mettre en relation, ce qui n'es pas toujours
si évident.
Le générateur d'expression reprend l'arborescence
de la base de données (tables, requêtes, formualires...).
Puisque nous souhaitons mettre en relation deux formulaires, commençons
par double-cliquer sur l'icône Formulaires
puis Tous les formulaires.
Repérez le formulaire Clients
et double-cliquez dessus. Le champ de liaison étant Code
client, double-cliquez dessus : la formule Formulaires![Clients]![Code
client] apparaît dans la zone de texte située
au-dessus. Conservez seulement la partie [Code
client] et saisissez =.

A présent, double-cliquez, dans la zone de gauche, sur le
formulaire RechercherClient, puis sur
le champ Code client de ce formulaire.
Notre formule définitive est donc : [Code
client]= Formulaires![RechercherClient]![Code client] . En
d'autres termes : on ouvre le formulaire Clients
en positionnant le curseur sur la fiche dont le champ Code
client corresponde au champ Code client
du formulaire RechercheClient. Vous verrez,
on s'y fait...
Cliquez sur Ok pour revenir dans la
macro. Dans le champ Mode données,
saisissez Modification.
A présent, il ne nous reste plus qu'à refermer la
boîte de dialogue RechercheClient...
Retournez dans la grille Action. Sur
la seconde ligne, sélectionnez Fermer.
Dans la partie inférieure de l'écran, complétez
Type d'objet en précisant que
vous souhaitez refermer un Formulaire.
Sur la ligne suivante, sélectionnez son nom (RechercheClient)
et sélectionnez la valeur Non
dans le champ Enregistrer (le formulaire
Rechercheclient n'a pas à être
sauvegardé entre chaque utilisation car il ne sert qu'à
sélectionner un enregistrement).
Fermez la fenêtre de macro ( )
en sauvegardant. Vous regagnez alors le formulaire RechercheClient.
Sauvegardez-le et passez en mode Affichage.
Sélectionnez un élément de la liste. A présent,
tout devrait fonctionner parfaitement...
Hum, vous êtes doué ! Mais il est probable que vous
ayez souvent à lancer une recherche depuis le formulaire
Clients lui-même... Un petit bouton
ouvrant la boîte de dialogue serait donc le bienvenu, non
? Voyons voir...
Haut
|