0% ont trouvé ce document utile (0 vote)
122 vues89 pages

Introduction à Microsoft Access et bases de données

Transféré par

Meftah Computers
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
122 vues89 pages

Introduction à Microsoft Access et bases de données

Transféré par

Meftah Computers
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ACCESS

Introduction
Les 24 h de cours consacrées aux bases de données en magistère 2ième année ne sont pas suffisantes pour assurer
un enseignement exhaustif sur le sujet. J’ai donc choisit de concentrer mon enseignement sur l’utilisation de
l’outil Access en laissant volontairement de coté toute la partie modélisation des données.

Le but de ce cours est donc de vous familiariser avec l’environnement Access, de vous apprendre à utilisez les
différents composants (requêtes, formulaires, états, procédures VB) que Access met à notre disposition pour
stocker, manipuler et restituer des données. Nous utiliserons le mode SQL du générateur de requête pour vous
initier à SQL.

Nous travaillerons sur des bases dont le modèle de données à été préalablement définit, et je m’appuierais sur ces
bases pour introduire les notions de modèles de données et vous permettre d’appréhender le processus de
modélisation. Mais, je le répète, la partie analyse, conception et validation du modèle de donnée ne sera pas
abordée en détail.

Quand utiliser Access plutot que Excel ?


Il n’est pas si évident que ça de répondre à cette question. Sous Excel, feuilles, formulaires, requêtes SQL et
Visual Basic permettent de développer très facilement des applications gérant des données. Mais Excel a ses
limites : 65 536 lignes et 256 colonnes max par feuille, 255 caractères max dans une cellule. Utilisez Access
lorsque vous devez rassembler et stocker de grandes quantités de données.

Création d'une base de données

Pour créer une base de données

1- LANCEZ ACCESS (icône du gestionnaire de programme);

Microsoft Access affiche la fenêtre de lancement suivante :

!
" #
#

#
# $ #
% & # % # "
#
'% # % # #
"

( " " $
& # ) #
* " #$ + $
% # $" $% " ,
& # % & " &
# % & - )
#
,! mdb
&
#
'% # % #

" #
"

# %
# "

&
& $
8
#
#
#
# 9
:
$

+
%
& #
#

La fenêtre Base de donnée apparait.


Activez l’onglet TABLE, puis cliquez dans le bouton Nouveau

" /0 " 11

234( 55 6(
# 3 " #
# #
( " , " # #
# &%
! % #$ #
# " # # "
% # % "" # #
" # #
# #
# " # &%
*
7 ," $ %$ " %$ $ $
#
#$ #
$

" & # # "


# %$# - # ## &% #

.
Créez la structure de la table étudiant :

Vous choisissez le type de chaqu'un des


champs dans la colonne type de données.

Une liste
déroulante affiche
les types de
champs possibles.
Le type texte
permet définir des
champs caractères

Voici un tableau récapitulant les différants type de données et leurs utilisation

Texte Texte et nombres, notamment des noms, des adresses, des numéros de téléphone et
des codes postaux. Un champ Texte peut contenir jusqu'à 255 caractères.

Mémo Texte et nombres plus longs, notamment des commentaires ou des explications. Un
champ Mémo peut contenir jusqu'à 64 000 caractères.

Numérique Données numériques sur lesquelles vous souhaitez effectuer des calculs
mathématiques, à l'exception de tout calcul monétaire. A l'aide de la propriété Taille du
champ (FieldSize), définissez le type de données Numérique spécifique (voir page
suivante)

Date/Heure Permet d'enregistrer toute donnée relative à une Date et/ou une Heure. Vous pouvez
créer votre propre format d'affichage ou choisir un des nombreux formats disponibles.

Monétaire Valeurs monétaires. N'utilisez pas le type de données Numérique pour les valeurs
monétaires car la partie décimale du résultat des calculs risquerait d'être arrondie. Le
nombre de chiffres après la virgule du type de données Monétaire est fixe.

Compteur Nombres séquentiels automatiquement insérés par Microsoft Access en commençant


par 1. Le type de données Compteur fournit un champ Clé primaire tout à fait approprié
et est compatible avec le type de données Numérique lorsque la propriété Taille du
champ (FieldSize) a pour paramètre Entier long.

Oui/Non Oui/Non, Vrai/Faux, Activé/Désactivé ou champs qui ne contiendront qu'une seule


valeur. On désigne également ce type de champ par le terme booléen

;
Pour les champs de type numérique, vous devez choisir un sous-type
numérique à partir de la liste déroulante suivante

Voici un tableau qui récapitule le genre de données numériques que l'


on peut enregistrer dans chaqu'
un des 5
sous types numériques offerts par Access.

Octet Stocke les nombres compris entre 0 et 255 (sans fraction). Ce paramètre
occupe 1 octet

Entier Stocke les nombres compris entre -32 768 et 32 767 (sans fraction). Ce
paramètre occupe 2 octets.

Entier long Stocke les nombres compris entre -2 147 483 648 et 2 147 483 647 (sans
fraction). Ce paramètre occupe 4 octets.

Réel simple Stocke les nombres dont la précision atteint six chiffres et qui sont compris
entre -3,402823E38 et 3,402823E38. Ce paramètre occupe 4 octets.

Réel double (Paramètre par défaut). Stocke les nombres dont la précision atteint dix
chiffres et qui sont compris entre -1,79769313486232E308 et
1,79769313486232E308. Ce paramètre occupe 8 octets.

<
Créez la troisième table suivante :

Définition ou modification de la clé primaire


La clé primaire est un champ ou une combinaison de champs qui désigne, de
façon unique, chaque ligne dans une table. Deux lignes ne peuvent posséder
la même valeur dans le champ clé primaire. Vous devez définir une clé
primaire par table

Pour définir ou modifier la clé primaire, sélectionnez le(s) champ(s) que vous
souhaitez définir comme clé primaire. Pour sélectionner un seul champ,
cliquez sur le sélecteur de ligne. Pour sélectionner plusieurs champs,
maintenez la touche CTRL enfoncée et cliquez sur le sélecteur de ligne de
chaque champ.

Cliquez sur le bouton Clé primaire de la barre d'outils, ou choisissez la


commande Définir comme clé primaire du menu Edition.
Microsoft Access place l'icône Clé primaire dans la colonne sélecteur de ligne.

La clé primaire de la table LIVRE est le champ isbn (isbn veut dire International
Sérial Book Number) C'est une combinaison de chiffre permettant d'identifier
n'importe quel livre au niveau international.

La clé primaire de la table ETUDIANT est le n° d'étudiant, celle de la table


AUTEUR est le n° d'auteur (abusivement appelé insée).

=
Vous pouvez à tout moment passer du mode création (icône ) au mode feuille de donnée (icône )

Le menu fenêtre vous permet de revenir sur la fenetre Base de donnée de départ.

Passez en mode feuille de donnée et saisissez les enregistrements suivants

TABLE ETUDIANT :

TABLE AUTEUR :

0
TABLE LIVRE :

? @4 @A 2 A233 3 2 B 35 25@ 6 ?@ ?3 AB C? 55 2? ( ? 6D

E % 8 % # % %
" :

6 # #
'! #

. # #
,F G* &

; @ " 8#
# % % # % # ":

< #H & # "$ # ) ,#


,F #
#
"? 6

2 *

"# # #H & # $

5@(I $

. #H & #
'F # "# # $

; 5@(I #
#

>
LES REQUETES

Une requête est un moyen d’extraire, à partir des tables, les données qui nous intéressent.

Exemple : nous allons écrire la requête qui liste les livres dont le prix est > 100 F

Activez l’onglet Requête et cliquez dans le bouton


Onglet requête

Choisissez mode création

Choisissez la table LIVRE et cliquez dans ajouter

/
Le table LIVRE apparaît dans la fenêtre requête

Cliquez dans fermer

1
Sélectionnez les champs de la table livre et faites les glisser jusqu’aux colonnes de la requête (pointez sur un
champ, click bouton gauche et tout en restant cliqué, amenez le champ jusqu' à la colonne)

Vous pouvez sélectionner plusieurs champs en laissant la touche MAJ enfoncée et en cliquant dans les champs
qui vous intéressent puis en les faire glisser en une seule fois dans la grille de la requête.

Pour supprimer un champ


de la requête, amenez la
souris en haut de la colonne
du champ a supprimer
(l'icône de la souris se
transforme en flèche
verticale), click gauche
sélectionne la colonne,
touche Suppr supprime la
colonne
Vous pouvez maintenant entrer des critères de sélection pour chaque champ dans la ligne critère
Entrez le critère > 100 dans la colonne prix

Cliquez dans l’icône exécution ou dans le menu Requête – Exécuter pour voir le résultat de la requête

vous obtenez le résultat

Comme pour les tables, vous pouvez soit par les icônes, soit par le menu, basculer à tout moment du mode
création au mode exécution

icône du mode
exécution de requête

icône du mode création


de requête
La zone Critère d'une requête.

C'
est dans la zone critère que vous indiquez à Microsoft Access les enregistrements que vous souhaitez afficher.
Vous pouvez saisir des critères pour un ou plusieurs champs dans votre requête.

Zone critère de
votre requête

Quand vous tapez des valeurs ou expressions dans


plusieurs cellules Critères, Access les combine au
moyen de l'opérateur Et (And) ou Ou (Or).

Si les valeurs ou expressions occupent des cellules


différentes, mais dans la même ligne, Access
applique l'opérateur Et sur les critères de la ligne.

Si les valeurs ou expressions se trouvent dans la


même colonne de la grille d'interrogation, Access
applique l'opérateur Ou sur les critères de la colonne.

Exemples d'
expression Critère

Champ Expression Résultat de la requête


Commandes livrées à Paris
Ville livraison "Paris"

Commandes livrées à Paris ou à


Ville livraison "Paris" Ou "Bruxelles" Bruxelles
Commandes livrées le 2 février
Date d'envoi =#02/02/94# 1994
Commandes livrées à partir du 5
Date d'envoi Entre #5-Aoû-96# Et #10-Aoû-96# août 1996 et au plus tard le 10
août 1996
Commandes livrées au Canada ou
Pays livraison Dans ("Canada", "Royaume-Uni") au Royaume-Uni
Commandes livrées à l'
extérieur
Pays livraison Pas "USA" des Etats-Unis
Commandes de plus de 30 jours
Date commande < Date( )- 30

Commandes passées en 1996


Date commande Année([Date commande])=1996

Commandes pour le quatrième


Date commande PartDate("q", [Date commande])=4 trimestre

Date commande Année([Date Commandes pour l'


année et le
commande])=Année(Maintenant()) Et mois en cours
Mois([Date commande])=Mois(Maintenant())

Commandes livrées à des clients


Destinataire Comme "S*" dont le nom commence par la
lettre S.
Cdes livrées à des clients dont le
Destinataire Comme "*Nouveaux" nom se termine par "Nouveaux"

Commandes livrées à des clients


Destinataire Comme "[A-D]*" dont le nom est compris entre A et
D inclus, dans l'
ordre
.
alphabétique
Commandes dont le numéro se
N° commande Droite([N° commande], 2)="99" termine par 99
>234 Nombres supérieurs à 234

Opérateurs de comparaison disponible :


> : supérieur,
< : inférieur,
>= : supérieur ou égal,
<= : inférieur ou égal,
<> : différent

Utilisation des Fonctions de regroupement Domaine dans la zone critères d'une requête.

Il existe 7 fonctions domaines permettant de faire des calculs ou de retrouver des valeurs dans une table et vous
pouvez utiliser ces fonctions soit comme expression soit dans la zone en-tête de colonne d' une requête, soit dans
la zone critère d'une requête.
1. Fonction CpteDom (DCount)
2. Fonction MoyDom (DAvg)
3. Fonction RechDom (DLookup)
4. Fonction SomDom (DSum)
5. Fonctions EcartyDom (DStDev), EcartyPDom (DstDevP)
6. Fonctions MinDom (DMin), MaxDom (DMax)
7. Fonctions VarDom (DVar), VarPDom (DVarP)

Ces 7 fonctions ont un nom en Français et un nom en Anglais que vous pouvez utiliser indifféremment et
possèdent toutes la même syntaxe avec 3 arguments séparés par le caractère point virgule : ;

FONCTION(champ ; table [; critère] )

champ, table et critère doivent être des chaînes de caractères limités par les double guillemets. L'
argument critère
n'
est pas obligatoire.

Exemples :

renvoie le nombre de ligne de la table


CpteDom("insee";"auteur") auteur avec le champ insee non Null
renvoie le nombre de ligne de la table
CpteDom("insee";"auteur";"pays='USA'") auteur de nationalité américaine ("pays =
'USA' ") avec le champ insee non Null
renvoie le prix moyen des livres édites
MoyDom("prix";"livre";"[code editeur]='NRF'") par NRF
renvoie le nom de l'
auteur possédant
RechDom("nom";"auteur";"insee=1234") l'
insée n° 1234
renvoie la somme des prix de tous les
SomDom("prix";"livres") livres de la table livre
renvoie le prix du livre le moins cher
MinDom("prix";"livres";"[code editeur]='NRF'") édité par NRF. Pour le livre le plus cher :
MaxDom

EcartyDom et VarDom renvoie respectivement l'


écart type et la variance des valeurs du champ sélectionné

Remarque :
Champ, table et critères doivent être des chaînes de caractères et être délimités par les doubles guillemets. Les
nom de champs composés doivent être délimités par des crochets : [code postal] , [date de pret] ect...
D'autre part, lorsque le critère porte sur une chaîne de caractère, vous devez utiliser le caractère quote : ' pour
délimiter la valeur chaîne servant de critère.

;
L'argument critère doit être une
Exemple : chaîne de caractère. Vous devez le
délimiter avec des double
guillemets : "

MinDom("prix";"livres";"[code editeur]='NRF'")
code éditeur est un nom de champ NRF est une chaîne de caractère
composé, vous devez le délimiter servant de valeur de critère. Vous devez
Exemple
avec d'
utilisation
les crochets [ ] d'
une fonction la délimiter avec des caractères quote
simple : '

Exemple d' utilisation d'une fonction de regroupement dans la zone critère d' une requête :
isbn et le titre des livres dont le prix est égal au plus petit prix des livres édités par NRF

En préalable à toute
exécution de la requête,
Access remplace la fonction
MinDom de la zone critère
par la valeur renvoyée par
cette fonction (MinDom scrute
les prix des livres édités par
NRF et renvoie le plus petit
d'entre eux). Lorsque ce
remplacement est effectué,
Access lance l'exécution de la
requête.

<
LES RELATIONS

Les relations entre table sont des règles que vous imposez aux données. Ces règles permettent de
garantir que :
1. les relations entre les enregistrements dans les tables liées sont et resteront valides.
2. l'utilisateur n'
effacez pas ou ne modifiez pas par erreur des données liées.

Lorsque vous demandez à Access d' appliquez l'


intégrité référentielle, Access vérifie en permanence
l'
intégrité des données que vous saisissez ou modifiez et signale une erreur lorsque

Vous entrez dans le champ clé externe de la table liée, une valeur qui n'
existe pas dans la clé primaire
de la table primaire. Toutefois, vous pouvez entrer une valeur de type Null dans la clé externe pour
indiquer que les enregistrements ne sont pas liés.
Exemple :
Impossible de saisir dans le champ code éditeur de la table livre un code éditeur qui n'
existe pas dans la table éditeur

Vous effacez un enregistrement de la table primaire pour lequel il existe des enregistrements
correspondants dans une table liée.
Exemple :
Impossible d'
effacer un auteur s'
il existe des enregistrements de la table livre-auteur pour cet auteur.

Vous changer une valeur clé primaire dans la table primaire pour un enregistrement qui possède des
enregistrements liés.
Exemple :
Impossible de changer un n° d'
étudiant s'
il existe des prêts pour cet étudiant.

Comment mettre en place les relations entre table


1 - Dans le menu
Outil, choisissez
Relation

2 - Cliquez
dans le bouton
Afficher table

3 - Choisissez et ajoutez chacune des


tables pour lesquelles vous souhaitez
définir des relations.

Vous créez les relation entre table par cliquez –glisser.


Par exemple pour créer la relation 1:N entre la table ETUDIANT et la table PRÊT (une ligne de la
table ETUDIANT peut être liée à plusieurs lignes de la table PRÊT, une ligne de la table PRÊT ne
peux être liée qu'
à une seule ligne de la table ETUDIANT)

=
Cliquez dans le champ NUMERO de la table ETUDIANT, glissez en restant cliqué jusqu' au champ
NUMERO de la table PRET, et lâchez le bouton gauche lorsque vous êtes sur le champ NUMERO de
la table PRÊT.

Access établit une relation entre les 2 tables sur les champs utilisés et ouvre la fenêtre suivante

Cochez Appliquez l'intégrité référentielle et


choisissez le mode d'application de cette
intégrité en cochant les cases Mettre à jour
et Effacer.

Le bouton type de jointure vous permet de


préciser

0
Requêtes avec jointure de table

Soit les deux tables ETUDIANT et NOTES suivantes.

Notez qu’il y à 11 Etudiants et 7 Notes et que seuls les Etudiant n° 10001 ; 10002 et 20001 possèdent des notes.

Exécutons la requête suivante :

>
Voici le résultat de la requête :

Access affiche 77 lignes.


Ces 77 lignes correspondent au produit
cartésien des 11 lignes Etudiants par les 7
lignes Notes :
Etudiant 1 x Note 1
Etudiant 1 x Note 2
...
Etudiant 1 x Note 7
Etudiant 2 x Note 1
Etudiant 2 x Note 2
...
Etudiant 11 x Note 7

Evidemment, la réponse ne corresponds pas à


l’information recherchée. Ce qui nous
intéresse, c’est les notes obtenues par les
étudiants qui ont étés notés.

Pour obtenir cette information, il faut définir


une jointure sur le n° étudiant entre les tables
Etudiants et Notes.

Le fait de définir une jointure à l’effet suivant :


Access parcours la table Etudiant et à chaque
nouvel étudiant, ne voit plus que les lignes de
la table Notes dont le N° Etudiant correspond
au NUMERO de l’étudiant courant.
Evidemment, si plusieurs lignes Notes sont
visibles, Access affiche le produit cartésien de
ces lignes avec la ligne Etudiant courante.

Si vous avez crée une relation entre les champs


Numero et N° etudiant dans les tables Etudiant
et Notes dans la fenêtre relation, Access génère
automatiquement une jointure entre ces 2
champs.

Pour définir une jointure manuellement, il suffit


de cliquer sur le champ NUMERO de la table
Etudiant puis faire glisser la souris en restant
cliqué jusqu‘au champ N° Etudiant de la table
Notes

Et on obtient un résultat correct.

Avec la jointure, seul, les trois étudiants


possédant des notes dans la table Notes
apparaissent dans le résultat de la requête

/
UTILISATION DES FORMULAIRES

Un formulaire est un écran de saisie et d’affichage d’information. Un formulaire peut être ou ne pas être associé à
une table ou une requête.

Lorsqu’un formulaire est associé à une table ou une requête, il permet à l' utilisateur d'ajouter, de modifier, de
supprimer et de visualiser les enregistrements présents dans les différentes tables de la base de données.
Généralement, on crée un formulaire par table, mais on peut être amené à créer des formulaires mettant en jeu
plusieurs table. Une manière simple de créer un formulaire est de le faire générer automatiquement par ACCESS
à partir d'
une table. ACCESS crée alors autant de zone de saisie dans le formulaire qu' il y a de champs dans la
table. ACCESS utilise le terme contrôle pour désigner une zone de saisie dans un formulaire. Chaque contrôle
possède un certain nombre de propriétés que nous pouvons modifier et arranger à notre convenance.

Création d'un nouveau formulaire à partir d'


une table : lancez ACCESS et passez en mode Formulaire. Pour cela,
cliquer dans l’onglet FORMULAIRE

Vous allez créer un formulaire simple pour la table AUTEUR

Choisissez NOUVEAU et Selectionnez la table pour laquelle vous voulez créer le formulaire

ONGLET
FORMULAIRE

et cliquez dans Choisissez la


Nouveau table AUTEUR

1
ACCESS affiche la fenêtre suivante :
Cliquez dans l'icône
(Table) pour faire
apparaître les champs de
la table AUTEUR

Selectionnez les champs de la


table AUTEUR (cliquez sur les
champs les uns aprés les
autres en laissant la touche
MAJ enfoncée) puis, en
restant cliqué, faites glisser
les champs sélectionnés dans
la grille en dessous

En faisant glisser les champs


sélectionnés de la table AUTEUR dans
la grille du formulaire, vous demandez à
ACCESS de créer dans le formulaire
une zône de saisie de type texte pour
chaque champs séléctionné.
Pour ACCESS, une zône de saisie dans
un formulaire se nomme un
contrôle de formulaire

Dans le formulaire de gauche, vous


venez de générer 5 contrôles de
formulaire (5 zônes de saisie), un pour
chaque champs de la table AUTEUR
que vous avez fait glisser dans la grille.

Chacun de ces contrôles possède des


propriétés que vous pouvez modifier à
votre gré.

Conservons pour l'instant les propriétés par défaut définies par ACCESS pour les contrôles générés
et passons en mode utilisation du formulaire ainsi crée en cliquant dans l'icône formulaire

Ce formulaire écran vous permet de visualiser


et saisir (ajouter, modifier supprimer) les lignes
dans la table AUTEUR.
La touche TAB permet de passer d'une zône à
l'autre. TAB dans le dernier contrôle du
formulaire fait passer à l'enregistrement suivant.
Les modifications tapées dans une zône
écrasent la valeur précedente de la zône et
modifient le contenu du champ correspondant
dans la table lorsque vous changez
d'enregistrement.
La touche ECHAP vous permet d'annuler les
modifications.
CREATION DE FORMULAIRE ECRAN AVEC LISTE DEROULANTE

Nous prendrons comme exemple le Formulaire Ecran d’enregistrement d’un prêt étudiant. Ce formulaire doit
permettre de mettre à jour la table Pret c’est à dire permettre de créer, supprimer, modifier un prêt.

La table Pret est composée de 4 champs

Le formulaire associé à cette table va donc contenir ces 4 champs.


D’autre part, pour faciliter le contrôle des informations saisies, nous ajoutons le nom de l’étudiant et le titre du
livre emprunté. Ces 2 champs seront des champs non modifiables et ont pour seul but de permettre à l’utilisateur
qui enregistre un prêt de contrôler le nom de l’étudiant qui emprunte et le titre du livre emprunté.

Pour fabriquer un Formulaire Écran affichant toutes ces informations, le plus simple est de créer une requête
joignant la table Pret avec les tables Livre et Etudiant puis de créer le formulaire à partir de cette requête.

Etape n° 1. Création de la requête.

Cette requête affiche les 6 champs que nous voulons faire apparaître sur le formulaire
ISBN ; N° ETUDIANT ; DATE PRET et DATE RETOUR sont issus de la table pret
NOM est issu de la table Etudiant
TITRE de la table Livre
1. Cliquez dans l’onglet de la fenêtre base de
Etape 2. Création du Formulaire Ecran donnée puis choisissez Nouveau

2. Sélectionnez la requête que vous


venez de créer puis cliquez dans

Cliquez ici pour faire apparaître la


liste des champs de la requête.
Sélectionnez tous les champs (touche
MAJ enfoncée, sélectionnez chaque
champ ou double-cliquez dans la barre de
titre de la fenêtre champs de requête)
Tout en restant cliqué, faites glisser
les champs sélectionnés jusqu’au
formulaire.
ACCESS génère dans le formulaire
un champ de saisie pour chaque
champ de requête

Tous les champs de la requête sont


inséré dans le formulaire vierge

Cliquez dans l’icône mode formulaire


pour vérifier que le formulaire fonctionne
bien

Vous pouvez passer d’un enregistrement


à l’autre (avant; arrière) avec

.
Vous pouvez modifier individuellement les propriétés de chaque contrôle ou modifier les propriétés du groupe de
contrôle sélectionné.

Par exemple, pour modifier la police par défaut des 6 contrôles de ce formulaire :
Selectionnez
les controles et
cliquez dans
l’icône propriété
pour faire
apparaitre les
propriété

Changez la
taille de la
police, (par ex.)
ou une
quelconque des
propriétés du
groupe de
contrôle
sélectionné
La modification
de propriété que
vous effectuez
s’applique à
tous les
controles
sélectionnés.

Remarquez qu’un contrôle


sélectionné est entouré par des
poignées de déplacement et de
dimensionnement qui vous
permettent de le déplacer et de le Poignées de
dimensionner à votre gré. déplacement

Poignées de
dimensionnement

;
Déplacez les contrôles et modifiez les propriétés de manière à ce que le formulaire est cet aspect :

Remplacement des contrôles ISBN et N° ETUDIANT par des controles liste déroulante.

Supprimez les 2 contrôles et du formulaire

(sélectionnez-les l’un après l’autre et appuyez sur la touche Suppr)

Dans la boite à outil, cliquez dans


l’icône Zone de liste modifiable,
faites glisser le curseur jusqu’au
formulaire et cliquez.

Ceci insère un controle Zone de


liste modifiable dans le formulaire.

Il faut maintenant fixer les


propriétés de ce contrôle.

Cliquez dans l’icône propriété et


indiquez les valeurs suivantes :

<
Source contrôle:
C’est ici que vous indiquez le
champ de la table associé à ce
contrôle.
Choisissez N° ETUDIANT dans la
liste.

Contenu :
Choisissez la table Etudiant dans
la liste déroulante
ou bien
Choisissez une requête
ou bien
Tapez une instruction select (par
ex : Select [Nom] from etudiant
where...
.

Nbre colonnes : Vous choisissez le


nombre de colonnes de la table
Etudiant qui apparaîtrons dans la
liste déroulante. Ici : 3 : NUMERO,
NOM, PRENOM
En-tête colonnes : oui ou non
suivant que vous souhaitez faire
apparaitre le nom des colonnes en
haut de la liste déroulante.
Largeurs colonnes : à fixer en cm

Colonne liée :
Cette propriété est importante.
Votre liste déroulante affiche 3
colonnes. Il faut donc indiquer à
Access quelle est la colonne à
utiliser pour remplir le champ N°
ETUDIANT.
Vous devez faire la même chose pour le champ liste déroulante ISBN

Pour renseigner le champ 'Contenu'


vous pouvez utiliser soit un nom de
table, soit un nom de requête, soit une
instruction select.
Une requête ou une instruction select,
permettent, en offrant la possibilité
d'utiliser des critères de sélection
(zone critère de la requête ou clause
where pour l'instruction select), de
choisir de manière plus fine les
données qui seront affichées dans la
liste déroulante

Il vous reste à modifier les propriétés d’apparence de ces 2 contrôles à savoir

pour les 2 contrôles et

=
pour les 2 etiquettes et

Vous obtenez un formulaire qui à l’aspect suivant en mode création

et l’aspect suivant en mode utilisation

Il existe un autre moyen de créer un formulaire prêt qui affiche les champs nom de l'
étudiant et titre du livre sans
passer par une requête liant la table prêt avec les tables etudiant et livre.
Pour créer un tel formulaire, procédez de la manière suivante

1. Créez un formulaire viege à partir de la table prêt

2. Remplacez les contôle n° Etudiant et isbn par des liste déroulante comme précédemment

3. Ajoutez un contrôle texte pour le nom de l'


étudiant et un contrôle texte pour le titre du livre avec les
propriété suivantes :

0
La fonction RechDom insérée dans la propriété source contrôle du
contrôle [texte8] renvoie le titre du livre dont l’isbn est egal au contenu du
contrôle [champ8]. En définissant la propriété Source contrôle de ce
contrôle de la manière indiquée, le contrôle [texte8] affiche le titre du
livre dont l'isbn à été saisi dans le contrôle [champ8].

[champ8] est le nom du contrôle zone de liste déroulante permettant de


saisir l'isbn du livre prété

[champ8] renvoie son contenu et la fonction RechDom fait le reste

Pour afficher le nom de l'


étudiant il faut créer un deuxième champ texte - dans notre exemple, le nom de ce
deuxième champ texte sera [texte10]- contenant comme propriété source contrôle
=RechDom("nom";"etudiant";"numero=[champ18]")

4. Synchroniser les champs liste déroulante isbn et n° étudiant avec les champs textes titre du livre et nom de
l'
étudiant

Pour effectuer cette synchronisation, vous devez indiquer à Access de reafficher le contenu des contrôles titre du
livre [texte8] et nom de l’étudiant [texte10] lorsque la valeur des contrôles zone de liste déroulante isbn [champ8]
ou zone de liste déroulante n° étudiant [champ18] changent.

Ceci se réalise de la manière suivante : # #, #


" % ##
"" # #
% # J& % >K
# ##
& %

? .
L #

# .
& ""
2M

Access ouvre une fenetre Visual Basic Editor et génére une procédure champ18_Change().
>
Toutes les instructions que vous placerez dans cette procédure seront exécutée chaque fois que le contenu du
contrôle [champ18] changera.
L’instruction permettant de « rafraîchir » le contrôle [texte10] s’écrit simplement [Link]

Access ouvre une fenetre Visual Basic Editor et


génére une procédure champ18_Change().

Toutes les instructions que vous placerez dans cette


procédure seront exécutées chaque fois que le contenu
du contrôle [champ18] changera.

L’instruction permettant de « rafraîchir » le contrôle


[texte10] s’écrit simplement

[Link]

Pour synchroniser le contrôle titre du livre [texte8] avec le contrôle zone de liste modifiable [champ8] vous
devez procéder de la même manière, c’est à dire ajouter une instruction [Link] dans la procédure liée
à l’évenement sur changement du contrôle [champ8].

/
FORMULAIRE / SOUS FORMULAIRE

L'objet sous-formulaire (icône de la boite d' outil en mode création de formulaire) permet d' insérer un
formulaire à l'
intérieur d'
un formulaire. La configuration Formulaire / Sous-Formulaire s' emploie la plupart du
temps pour saisir des données de type entête-détail. Exemple classique : Commande - Lignes de Commande : les
informations générales concernant la commande (n° client, date de commande) sont saisies dans le formulaire, les
informations spécifique à chaque ligne de commande (n° article, quantité) sont saisie dans le sous formulaire. Les
informations apparaissant dans le sous formulaire sont synchronisées avec celles du formulaire.

Exemple : création d'


un formulaire / sous-formulaire permettant de lister les prêts d'
un étudiant.

Etape 1 : création d'


un formulaire basé sur la table prêt

Si on veut que les données du sous


formulaire apparaissent en colonne,
il faut penser à choisir Feuille de
données comme mode d'affichage
par défaut du sous formulaire.

On accède aux propriétés générales


d'un formulaire en cliquant dans le
carré placé en haut et à gauche de
la fenêtre formulaire en mode
création

.1
Etape 2 : création du formulaire principal, basé sur la table étudiant auquel on ajoute un contrôle sous formulaire

Ajout du
contrôle sous
formulaire

Première propriété importante du


sous formulaire :
Le nom du formulaire à insérer qui
va être le sous formulaire.
On choisi ici le formulaire prêt crée à
l'étape 1.

Deuxième propriété importante


du sous formulaire :
Champ père, champ fils.
Vous devez indiquer dans ces
propriétés sur quels champs des
tables etudiant et prêt va se faire
la synchronisation.
Dans notre exemple, la
synchronisation s'effectue sur le
n° d'étudiant . Ce n° d'étudiant
est contenu dans le champ
NUMERO de la table étudiant et
dans le champ NUMERO de la
table prêt.
Le champ père doit appartenir à
la table ou la requête sur laquelle
est basée le formulaire
Le champ fils doit appartenir à la
table ou la requête sur laquelle
est basée le sous-formulaire

On obtient le formulaire étudiant suivant.

.
Lorsqu'on passe d'
un étudiant à l'
autre, seul les prêts correspondant à l'
étudiant en cours apparaissent dans le sous
formulaire.

Amélioration.
1- On veut afficher le titre du livre emprunté
2- Si on ajoute un prêt dans le sous formulaire, on veut pouvoir choisir l'
isbn du livre dans une liste déroulante

Solution : modifier le sous formulaire prêt en le basant sur une requête liant prêt et livre (pour pouvoir accéder au
titre). Remplacer le champ isbn de ce formulaire par un champ liste déroulante basée sur livre.

La requête sur laquelle va être basé le formulaire prêt :

.
Le nouveau formulaire prêt :

Le contrôle ISBN est une


liste déroulante basée sur la
table LIVRE.

L'origine source de ce
contrôle est le champ ISBN
de la requête de la page
précédente.

Le formulaire étudiant :

..
La colonne isbn est une liste
déroulante.
Vous pouvez ajouter et supprimer des
prêts à travers le sous formulaire prêt.

Remarque : Pour bloquer la saisie


dans la colonne titre, pensez à
positionner les propriétés activé à non
et verrouillé à oui dans le contrôle titre
du livre du formulaire prêt.

.;
UTILISATION DES REQUETES ACTIONS

On appelle requêtes actions des requêtes qui modifient les données de la base, par oppositions aux requêtes
sélection qui permettent d'
afficher le contenu des données sans modifier ces données. Il existe 4 types de requête
action :

1. requête CREATION DE TABLE

2. requête MISE A JOUR


( # + "
% + $ & # -
3. requête AJOUT + # " %
# #

"" #
$ %% " +
4. requête SUPPRESSION "# #% # +
& !

requête CREATION DE TABLE


Nous allons écrire une requête qui crée une table ARCHIVES dans laquelle nous insèrerons les prêts antérieurs
à 2000 (date de prêt < 01/01/2000) qui ont leur date de retour renseignés (différente de NULL).

1- Créez une requête vierge


2- Ajoutez la table PRET à la requête

3- Fermez et cliquez dans l'


icône Création de table (ou menu Requête - Création de table )

( + L
& @ GB @ 5
%% % # #
# #

.<
B # 9 ' & # #

# #
'F !" # + & % @ + !"

# % # + " # #
# #

( % # " 9 "# " " #


# +

# 323 # + ' !" "

Affichez le contenu de la table archives pour en vérifier le contenu

Vous pouvez enregistrer la requête (nommez-la archivage2000 par ex.).

.=
requête MISE A JOUR

Elles permettent de modifier le contenu d'


un ou plusieurs champs dans une ou plusieurs tables.

Voici une requête mise à jour qui augmente de 20 % le prix de tous les livres édités par NRF.

Le debut est classique :

requête - nouvelle - vierge - ajout de la table livre - fermer

Puis cliquez dans l'


icône de requête mise à jour ou choisissez menu - Requête - Mise a jour

Sélectionnez les champs de la table livre et faites les glisser jusqu'


aux colonnes

Remarquez que Access à ajouté une ligne Mise à


jour dans la grille de la requête.
Indiquez la formule de mise à jour dans la
colonne Mise à jour (ici : [prix]*1.2 ) et les critères
de selection dans la colonne Critères

Pui cliquez dans l'


icône ou choisissez menu Requête – Exécuter pour exécutez la requête

.0
requête AJOUT

Cette requête fonctionne comme une requête Création de table avec la différence qu' il n'
y a pas de table crée. Les
données sélectionnées sont ajoutées à une table existante qu'
il faut évidement choisir parmi la liste des tables de
la base avant d'
exécuter la requête.

Vous créez une requête ajout en

cliquant dans l'icône

ou en selectionnant l'option Ajout


du menu Requête.

Vous devez alors choisir dans la


liste déroulante à quelle table de
la base ajouter les données
sélectionnées. Vous pouvez fixer
la correspondance champ par
champ entre les champs des
données sélectionnées et les
champs de la table ajout.

requêtes SUPPRESSION
Elles permettent de supprimer les enregistrements d'une table qui satisfont les contraintes fixées. Voici une
requête suppression qui supprime de la table prêt tous les prêts antérieur au 01 janvier 96 qui ont leurs date de
retour différante de Null.

.>
REQUETE AVEC OPERATION

Ce type de requête vous permettent de regrouper les lignes d'


une requête selection qui possedent la même valeur
dans une colonne et de faire une opération (Moyenne, Somme, Compte ect...) sur une autre colonne.

Exemple : on veut connaître le nombre de prêts par étudiants


Le champ de regroupement sera le nom de l' étudiant dans la table Etudiant et le champ sur lequel on va compter
sera un champ quelconque de la table prêt. Il faut évidement avoir pris soin, avant de lancer la requête, de joindre
la table étudiant avec la table prêt, pour ne voir (et donc ne compter) dans la table prêt, lorsqu' on est sur un
étudiant donné, que les prêts qui concernent cet étudiant.

Il faut commencer part créer une requête


selection, puis cliquer dans le bouton

opération de la barre d'icône.


Ceci à pour effet d'ajouter une ligne

dans la grille de la requête

Cette ligne vous permet de choisir le type


d'opération à effectuer sur la colonne.

Dans notre exemple, on regroupe sur le


nom et prenom et on compte sur la
colonne isbn issue de la table pret

On peut remarquer que cette requête fournira le même résultat quelque soit le champ de la table prêt sur lequel on
compte (a condition qu' il n'y ai aucun champ de la table prêt à Null ). Pour ne lister que les étudiant qui ont
emprunté plus de 3 fois, il suffit de mettre la condition > 3 dans la zone critère de la colonne avec laquelle on
compte.

Exemple 2
Prix moyen de vente moyen des livres pour les auteurs présents dans la base. On regroupe sur le champ
[Link] et on utilise la fonction Moyenne sur le champ [Link]

# "
#" # # #
&% %
% $ N "
&% # #
"
+ O #,
#

./
Requête Analyse croisée

Une requête Analyse croisée vous permet de résumer des données dans un format tableau.
Exemples :
1. A partir de la table ETUDIANT, connaître par ville et par section le nombre d’étudiants inscrits
2. A partir des tables AUTEURS, LIVAUT, LIVRE et EDITEUR, connaître le nombre d’auteur édités par
chaque éditeur pour chaque nationalité

Création d’une requête Analyse croisée.

Ajoutez les tables, insérez les champs et définissez des critères exactement comme si vous créiez une requête
Sélection afin de sélectionner les enregistrements qui doivent figurer dans la requête Analyse croisée.

Exemple 1 :

Quand la requête est affichée en mode Création, cliquez sur le bouton « Requête Analyse croisée » de la barre

d'
outils ou choisissez Requête - Analyse croisée.

Microsoft Access affiche les lignes « Opération » et « analyse » dans la grille d'
interrogation.

Pour le(s) champ(s) dont vous désirez faire apparaître les valeurs sous forme de lignes, cliquez sur la ligne
« analyse », puis sélectionnez « ligne » dans la zone de liste déroulante.

;1
Choisissez ligne pour
le champs devant être
en ligne

Vous devez conserver le champ « Regroupement » par défaut de la ligne « Opération » pour ces champs.

Pour le champ dont vous souhaitez faire apparaître les valeurs en tête de colonne, cliquez sur la ligne « analyse »,
puis sélectionnez « colonne ».

Choisissez colonne
pour le champ en
colonne

Vous devez aussi conserver le champ « Regroupement » par défaut de la ligne « Opération » pour ces champs.

Pour le champ dont vous souhaitez utiliser les valeurs dans l'
analyse croisée, cliquez sur la ligne « analyse», puis
sélectionnez « Valeur ».

Choisissez
Valeur pour le
champ de calcul
à l'intersection
de la ligne et de
la colonne

Sur la ligne « Regroupement» de ce champ, sélectionnez le type de fonction de regroupement désiré pour
l'
analyse croisée (par exemple Somme, Moyenne ou Compte). Dans notre exemple, nous allons utiliser Compte
pour compter le nombre d’étudiant par ville et par section.

;
Une fois le champ valeur choisi, vous
devez indiquer le type de calcul à
effectuer à partir de ce champ.

Dans notre exemple, choisissez la


fonction compte pour compter le nombre
de ligne de la table ETUDIANT qui
possède un champ NUMERO different
de NULL

Si vous spécifiez des critères, sélectionnez Où sur la ligne «Regroupement » du champ désiré, puis entrez une
expression sur la ligne « Critère ». Vous pouvez, par exemple, afficher le total des ventes pour les articles de
certaines catégories.
La ligne « analyse » doit rester vide pour les champs « Critères ».

Pour visualiser l'


instantané de la requête Analyse croisée, cliquez sur le bouton

« Mode Feuille de données » de la barre d'


outils : .

Pour effectuer une requête analyse croisée sur plusieurs tables, procéder exactement de la même manière en
oubliant pas de joindre les tables dans la requête.

Exemple 2 :

Pour arrêter l'


exécution d'
une requête
Appuyez sur CTRL + PAUSE.

Remarque
Si vous insérez un champ dans la requête, mais choisissez (non affiché) dans la cellule « Analyse » et
« Regroupement » dans la cellule « Opération », Microsoft Access regroupe sur ce champ en tant que Tête de
ligne, mais n'
affiche pas cette ligne dans l'
instantané.

;
UTILISATION D’UN FORMULAIRE ASSOCIE A UNE REQUÊTE.

Vous pouvez créer des formulaires sans nécessairement les associer à une table ou une requête (dans ce cas, la
propriété origine source du formulaire est vide). Avec ces formulaires sans table associée, vous pouvez saisir des
données dans des controles et utiliser ces données pour lancer des calcul, effectuer des mises à jour ou extraire et
afficher des résultats.

Dans l’exemple ci-dessous, nous allons utiliser des valeurs saisies dans un formulaire comme critère de sélection
dans une requête.

Il s'
agit d'effectuer le traitement suivant :
Saisir une année dans un formulaire à l’écran puis archiver tout les prêts étudiants correspondant à l’année
choisie qui possèdent une date de retour de prêt différante de NULL. Archiver consiste à ajouter les prêts
satisfaisant les critères dans une table archives puis à les supprimer de la table prêts.

Voici les étapes à suivre.


1. Créer un formulaire vierge contenant 3 contrôles :
un champ de saisie pour l’année
un bouton OK pour lancer le traitement
un bouton SORTIE pour arrêter le traitement sans archiver

2. Créer une requête action AJOUT pour ajouter dans la table archives les prêts sélectionnés à partir de l’année
saisie dans le formulaire

3. Créer une requête action SUPP pour supprimer de la table prêts les prêts sélectionnés à partir de l’année
saisie dans le formulaire

4. Créer une macro qui exécute les deux requêtes action AJOUT et SUPP et activer cette macro lorsqu’on
double clique dans le bouton OK du formulaire

1. Création du formulaire Zone de texte.


Pour insérer une
zone de texte dans
un formulaire vierge
utilisez le bouton

de la barre
d’outil.

Champ
indépendant.
Pour insérer un
champ de saisie
indépendant dans un
formulaire, utiliser le

Champ Boutons. bouton


Pour insérer un bouton,

utilisez le bouton

;.
Remarquez les propriétés du champ de saisie indépendant

Zone Format vide.


Dans ce cas, le champ est
de type texte

Masque de saisie : ‘0000’


4 positions numériques.
On ne peut saisir que des
caractères numérique

Condition de validation.
La zone texte saisie doit être
supérieure au texte « 1993 »

2. Requête action AJOUT


C’est une requête action qui ajoute dans la table archives tous les prêts de la table prêts qui vérifient les 2
conditions suivantes :
1. l’année de la date de prêt doit être égale à l’année saisie dans le formulaire archivage
2. la date de retour de prêt doit être différante de NULL

voici le requête :

Condition 1 :
On compare
l’année de la date
de prêt - que l’on
à transformé en
chaine de
caractère à l’aide
de la fonction
Cchaîne() - avec
le contenu du
contrôle Champ1

Condition 2 :
Vérifier que la
date de retour de
prêt n’est pas
égale à NULL

La requête action SUPP est absolument identique à la requête AJOUT (même critères de sélection)

C’est une requête de suppression (Requete - Suppression du menu ou icône )

alors que le requête AJOUT est une requête d’ajout (Requete -Ajout... du menu ou icône )

;;
3. Création d’une Macro qui lance les deux requêtes AJOUT et SUPP.

On crée une Macro en activant l’onglet Macro de la fenêtre Base de Données

puis en cliquant dans le bouton


Bouton nouveau

Onglet Macro

La fenêtre suivante apparait alors à l’écran

Cette Macro doit activer les requêtes AJOUT et SUPP. L’activation d’une requête se réalise par l’action
OuvrirRequete

;<
En cliquant dans ce
bouton vous ouvrez une
fenêtre dans laquelle
apparaissent, par ordre
alphabétique, toutes les
action exécutable dans
une Macro

Choisissez
OuvrirRequête dans la
liste des actions.

Ceci à pour effet


d’ouvrir une zone
Nom requête dans la
portion
Arguments de l’action

Ce bouton dans la ligne


Nom requête vous
permet de voir toutes
les requêtes que vous
avez définies

Choisissez celle que


vous voulez ouvrir et
exécuter
Ici, c’est celle-la !

Evidement, il faut ajouter une deuxième action OuvrirRequête dans cette Macro, avec SUPP pour nom de la
requête à ouvrir dans la zone Nom requête

4 . Association de la Macro à l’événement doucle clic dans le bouton OK du formulaire

C’est la dernière étape :

;=
Lorsque l’utilisateur doubleclique dans le bouton

du formulaire de saisie de l’année d’archivage, cela doit activer la macro Macro1

Revenez sur le formulaire en cmode création et selectionnez le bouton OK


Ouvrez la liste de ses propriétés
Placez le curseur sur la ligne sur double clic.
Un bouton liste de choix ( ) apparait.

Cliquez pour faire apparaître la liste des macros que vous avez définie et choisissez celle à activer

Pour terminer, associez l’événement double clic du bouton formulaire à une macro qui ferme le
formulaire

Cette macro doit contenir l’action


Fermer.
Les arguments de l’action vous
permettent d’indiquer
le type (ici « Formulaire »)
et le nom (ici « archivage »)
de l’objet à fermer

Remarque :
Tout ce qui peut être fait avec une macro peut être fait avec une event procédure (procédure Visual Basic)
Exemple : Macro : OuvrirRequête Visual Basic : Docmd OpenForm "nom du formulaire".

Les procédures visual basic offre en outre la possibilité d e pouvoir utiliser des structures de contrôle (if
then…else…endif ; for…next ; do while (until) … loop ; case…endcase). Pour tous les traitements qui
nécessitent de la programmation, prenez l'habitude d' utiliser les events procédures plutôt que les macros.

;0
CREATION D'ETATS

Access permet de créer des états de sortie sur imprimante de manière relativement simple.
Un état est généralement basé sur le contenu d' une table ou d'
une requête.

Un état peut comporter un en-tête et un pieds d' état qui ne s'


impriment qu'une fois, un entête et un pieds de page
qui s'imprime à chaque nouvelle page et une zone détail qui s' imprime autant de fois qu'
il y a de lignes dans la
table ou la requête sur laquelle est basé l'
état.

Le design d'
un état est très proche du design d'
un formulaire. On peut ajouter dans l'état une combinaison
quelconque des champs de la table/requête associée, ainsi que tout champ calculé à partir de ces champs. On peut
également insérer des champs indépendants affichant de l'information extraites et/ou calculées de la base.

On peut regrouper les lignes de la table/requête dans l'


état et imprimer un entête et un pieds de groupe qui
encadrerons les lignes d'
un groupe. On peut également imbriquer des groupes les uns dans les autres.

Voici un exemple complet à partir de la base Aé[Link].

Cette base contient une table Billet dont voici la structure :

Création d'
un état simple :

Choisissez Etat puis nouveau puis sélectionnez la table ou la requête sur


laquelle vous allez baser votre état puis cliquez dans Etat vierge

;>
Sélectionnez
les champs que
vous souhaitez
insérer dans
l'état et faites
les glisser dans
la zone détail
(comme dans
un formulaire).

Pour voir l'état à l'écran, cliquez dans aperçu

Access imprime les champs insérés selon le format créé dans l'état,
pour chacune des lignes de la table ou de la requête.

Vous pouvez régler les marges de l'état dans le menu Affichage –


Option

C'est dans le menu Disposition que vous pouvez


forcer ou non la présence d'un entête et un pieds
d'état, de même que l'entête ou le pied de page
(qui sont présents par défaut)

Vous trouverez également dans ce menu les


commandes permettant d'aligner de différentes
manière les contrôles de votre état.

;/
CREATION D'UN ETAT EN COLONNES

Pour éditer un état en colonne, insérez


les champs dans la section détail puis
coupez et coller les étiquettes de chaque
champ dans la section entête.
Il faut évidemment ranger les champs
de la zone détail sous leurs étiquettes
respectives de la zone en tête.

Pour faire apparaître les délimitations


des colonnes, réglez les propriétés
bordures des champs :

Les deux variables prédéfinies Page et


Pages contiennent respectivement le n°
de page de la page en cour et le nombre
total de pages de l'état. Pour afficher le
n° de page dans l'en tête ou le pied de
page, insérer un champ de type zone de
texte dans l'en tête ou le pied de page et
définissez la propriété Source control de
de champ avec :
=Page & "/" & Pages

Voici le même état avec la position et longueur des


étiquettes (propriété Gauche et Largeur) identique à la
position et longueur des champs correspondant dans la
zone détail.
La propriété bordure des étiquettes et des champs =
Standard

Epaisseur bordure = Filet

La propriété couleur de fond des étiquettes est à gris.

<1
CREATION D'UN ETAT EN COLONNE AVEC REGROUPEMENT
Access offre la possibilité de regrouper les lignes d' un état sur la valeur d'
un champ. Pour illustrer cette
possibilité, nous allons grouper les billets par n° de vol.

Pour créer un regroupement, cliquez dans l'icône de


regroupement

Cette commande à pour effet d'ouvrir la


fenêtre de regroupement qui vous permet
de choisir le champ sur lequel s'effectuera
le regroupement, ainsi que l'ordre du
regroupement. Vous pouvez imbriquer
plusieurs regroupement.
Précisez le type de regroupement souhaité
en fixant les propriétés de la fenêtre
Trier/regrouper

Voici l'
état correspondant :

Sur l'
exemple çi-dessus, on a choisi de faire apparaître l' entête et le pieds de groupe (propriété entête et pied de
groupe à oui dans la fenêtre Trier/regrouper).
Le champ numvol a été inséré dans l' entête et le pieds de groupe.
Remarquez également une zone texte dont le source contrôle est la fonction CpteDom qui permet d' afficher le
nombre de billet du vol
=CpteDom("[nompas]";"[Billet]";"[numvol]=reports![listepas].[Champ5]")
[Champ5] étant le nom de la zone de texte du pied de groupe contenant le champ numvol (on aurait pu aussi
bien utiliser le nom de la zone texte de l'
entête de groupe contenant le n° de vol)

Voir l'
état sur la page suivante

<
<
Exemple complet de formulaire permettant de saisir un nom de passager et d’éditer le
billet de ce passager ou la liste complète des passagers du vol.
Ce formulaire aura l’aspect suivant :

& ! # % $ #
. #
" #

- & F# 37
# % %
% 7
#

#
," #
# $ %$ " %$
% 7 #
$ &
" , " #
, +
# " "

Proriétes du contrôle M1

Propriétes du contrôle M2

<.
Détail de la requête origine source du contrôle M2

Propriétes du contrôle M3

Détail de la requête origine source du contrôle M3

<;
Synchronisation des controles M1 M2 et M3

Sur l’événement & % de M1 :

Sur l’événement & % de M2

Programmation des boutons :

Edition de la liste des passagers

Créez une procédure associée à l’événement # Hde ce bouton :

instruction de la procédure : ouverture de l’état nommé :

<<
Détail de l’état

(,
" " # + @ 18 # " # # @ 1 : "
% 7 #

Détail de la requête R10 sur laquelle est basé l’état

Vous obtenez le résultat suivant :


<=
<0
Exemple d’état avec la version Access 95
Attention cet exemple utilise également l’ancienne version du modèle de donnée Aérien avec les aéroports de
départ et d’arrivée inclus à l’intérieur de la table vol.

Voici un exemple d' état constitué à partir d'


une requête. On souhaite éditer le billet des passager en faisant
apparaître le nom des aéroport de départ et d'arrivée, les date et heures de départ et d'
arrivée, le nom de la
compagnie, les nom, prénom n° billet et n° de place des passagers.

Pour pouvoir éditer l' ensemble de ces information, il faut commencer par créer une requête associant les tables
billets, vol, aéroports et compagnie puis baser l'
état sur la requête.

Voici la requête :

Pour terminer, créeons un formulaire permettant de choisir un n° de vol dans une liste déroulant puis un billet de ce vol
et permettant d'
editer le billet correspondant.

<>
Voici le formulaire. Les deux boutons éditent sur click la liste des passager du vol choisi ou le billet du passager choisi
dans le vol.
1. La liste déroulante N° de place est synchronisée avec le n° de vol choisi dans la liste déroulante N° de vol
2. Les champs Nom et Prénom du passagé sont synchronisé avec le n° de place choisi dans la liste déroulante N° de
place

Détail des différents contrôle de ce formulaire.

Liste déroulante N° de Vol (nom de l'objet dans le formulaire : [Champ0])

L'
origine source de cette liste déroulante est la requêtte suivante :

Les propriétés de la liste déroulante N° de Vol L'aspect de la liste déroulante en mode utilisation

</
=1
Synchronisation de la liste déroulante N° de Vol et N° de Place, utilisation des événements.
Qu'est-ce qu'un événement ?
Un événement est une action spécifique qui se produit dans ou en présence d'un objet précis. Microsoft Access est en mesure
de répondre à plusieurs types d'événements : clics de souris, modification de données, ouverture ou fermeture de formulaires,
etc…. Les événements résultent généralement d'une action de l'utilisateur.
L'utilisation d'une procédure événementielle vous permet d'ajouter votre propre réponse à un événement se produisant dans un
formulaire, un état ou un contrôle.

Réponse à un événement Clic (Click) à l'aide d'une procédure événementielle


Lorsque vous créez une procédure événementielle pour un objet, Access ajoute un modèle de procédure événementielle
désignant l'événement et l'objet au module de formulaire ou au module d'état. Il vous suffit alors d'ajouter le code qui répond de
la façon souhaitée lorsque l'événement se produit dans le formulaire ou l'état.
Choisissez d’ajouter une event procédure
Exemple : sur l’évènement Après MAJ de la liste
déroulante N° de vol. (Voir le contenu de
l’event procedure çi-dessous).
Access activera cette procédure lorsque
l’événement Après MAJ se produira.
Pour la liste complète de tous les
événement, voir l’aide.

1. Docmd Requery "Champ1" force le recalcul de la requête source de la liste déroulante N° de Billet . Lorsqu'
on
cliquera dans la liste déroulante N° de Billet, on ne verra que les billets du n° de vol choisi dans la liste déroulante
N° de Vol. Chaque fois que l' on change de vol dans la liste déroulante N° de Vol, il faut recalculer la requête sur
laquelle est basée la liste déroulante N° de billet afin de synchroniser les 2 listes déroulantes, et c'
est précisement ce
que fait l'
instruction Docmd Requery "Champ1" de la procédure déclanchée sur l' évenement Après
MAJ de la liste déroulante N° de Vol. Champ1 est le l' objet liste déroulante N° de Billet

2. forms![formulaire1].[Link] = "imprimer la liste des passagers du vol " &


Int([champ0]) met à jour la propriété caption (texte apparaissant dans l'
étiquette) de l'
étiquette T1.

Etiquette T1
On veut que le texte du l'étiquette T1 affiche le nouveau n° de vol chaque fois
que l'on change de n° de vol dans la liste déroulante N° de Vol.
Dans le formulaire [formulaire1], le nom de l'objet liste déroulante N° de vol est
[champ0].
Int([Champ0]) contient la partie entière du n° de vol sélectionné dans la liste
déroulante N° de Vol
En mettant la valeur
"imprimer la liste des passagers du vol " & Int([champ0])
dans la propriété caption de l'étiquette T1, on affiche le n° de vol dans le texte
de l'étiquette à chaque changement de n° de vol puisque cette instruction est
Liste déroulante N° de Place (nom deexécutée
l'objet dans
danslelaformulaire : [Champ1])sur l'evenement Après MAJ de la
procédure déclanchée
liste déroulante N° de Vol

=
Cette liste déroulante est basée sur la requête suivante :

La requête est basée sur la table


Billet.

Remarquez la zone Critères de la


colonne numvol qui contient
[Champ0], l'objet liste déroulante N°
de Vol de ce même formulaire

Ce critère force la liste déroulante N°


de place à n'afficher que les billets du
vol choisi dans la liste déroulante N°
de Vol.

Pour que ça marche, il faut ajouter


l'instruction [champ1].Requery sur
l'événement sur changement de la
liste déroulante N° de Vol (objet

Synchronisation des champs nom et prénom passager ([Champ6] et [Champ8]) et du texte de l'
étiquette T2 à partir de la
liste déroulante N° de place

Il suffit de déclancher la procédure suivante sur l'


évenement sur changement de la liste déroulante N° de place

Zones de texte nom et prénom passager (nom des l'objets dans le formulaire : [Champ6] et [Champ8])

Voici la propriété Source Control de ces deux champs :

BOUTON Procédure activée sur l'événement On click di bouton


Docmd OpenReport ouvre l'état de nom "listepas" en mode
A_PREVIEW (aperçu avant impression). Pour imprimer
effectivement l'état, laissez ce paramètre à espace ou mettez
A_NORMAL.
Remarquez le paramètre
"[numvol]=Forms![Formulaire1].[Champ0]" qui permet de limiter
l'édition de l'état liste des passagers aux seules ligne de la
requête sur laquelle est basé l'état qui vérifient la contrainte
[numvol]=Forms![Formulaire1].[Champ0]

=
BOUTON

Idem que le bouton imprimer la liste


des passager du vol. Il faut
simplement fixer le n° de vol et
également le n° de place pour n'éditer
qu'un billet.

!" !
? # $ #
# # "# % ' F# P $ # "" % $
" $ " #9 B# % #
# "" % # #% 9 # # #
# #% % Q
% " "" % #
# '!" ! % #$ ! " "" % ##
+ !" " $# ' # "" % ! # ## "

2 "" % # F# % #

A "" % # F# % # # F#$
# % % P) # " ' F#

' F#

( F# % # 8 !% # % # #
F# " #R F# %+% % # :
$# " " %
#
' *

% # $# " " % P# "" % " P


#
' % # 8 %% $ $ :
$ %% *

8 % # :S 8 % # :S 8 % # :S 8 F#:S
8 F#:

( ' F# % # ' # 8 ! % #$# % % #


# F# # "# F# %+% % # :
$#
"" % # #
' *

# S

% % # $# " " % # # "" %


" P# % % # 8 %% ! $$ $ % :
$ %% *

# 8 F#:S 8 F#:S ! 8 % # :S$ 8 % # :S%


8 % # :

% P) " F#

( % # " ' F# % # F#$#


"" % & ' ( & ' *

& 'S ( & '

=.
( "" % # # F# % "P#
"" % & ' ( & '*

& 'S ( & 'S # S

( % # ! ' ! # ! ' # % #$
#
'"" % "" % # & %
F#$% "# F# % 8 #
"" % & ' ( & ': ( " '
"" % &
- & ! # ! ' #
% #*

) * S) S+ S S) ,

('
"" % # ! 9 " #
# % # ## # % #$ -"
"# F# % "" % 9 # "" %
# # "" % # # % #$% "" %
F# % # # "" - ) . # # % #
%9 $#'
"" % % # %%" % 9 #
'"" % # !
*

) * S) S+ S S) , S# !
S

2 "" % # % % #

A "" % # % % # #
% $% P) # " ' % $ % % 8:
! 8: " # %

' % % P) " %

( % ! % # $ % "
% $ % $# " '
"" % #
% # *

8 % # :S & '8 % # :S ( & '8 % # :S 8 % # :

( #
' % # " ""% " '
+ "
#
' % $# " " % # # F#
"" % 9 # "" % & ' ( & ' % # $ %% *

& '8 % # :S ( & '8 % # :S# 8 F#:S 8 F#:S


# 8 % # :S 8 % # :

P% # F# ' % # $ "" % &


F# ! % #$# " '
"" % # *

• % # % # " ' F# *

8 % # :S 8 F#:S 8 F#:S & '8 F#:S


( & '8 F#:

• F# *

/ 8 F# :S 8 F# :S 8 F# :S 8 F# :

• % *

& '8 % # :S ( & '8 % # :S/ 8 F# :S 8 F# :S


# 8 % # :S 8 % # :

' %

( % % $# " " % # % #
& L # % % # *

# S # S (#

# #
'"" % # $# " " % # (#
# L # ' &"
=;
" ' # %

( # % 8 : % # " # % P
#
' ' F#$# " '"" % *

8 % # :S 8 F#:S 8 F#:S + 8 % # :S
(+ 8 % # :

( "" % & ' ( & ' F# % # ! # %


9 #
'"" % + #
'"9 % ( +

2 "" % # % # # % #

A "" % % # # % % # $#
"# % # # #
# # " ' % #

2 % ' % #

( % # $# " '
"" % % # *

S S S S

F# % # ' $#
'"" % # % # $
9 #
'"" % % #
'"" %

( % % # $# " '
"" % % # *

! S$ S%

F# % # ' $#
'"" % # % # 9
#
'"" % ! % #
'"" % $

' % # P

( # ! % # $#
'"" % $ # %
% # #
'"" % # !9% % # *

$ 8 % # :S 8 % # :

('
"" % $ ' % # # # % #
+ $#
'"" % $ # #
L # $ % # # ""% + - 0 . 9 # %9
$ + ' #

? "" % "# % #
")
P $%+% % # !" 2 E % # 82 E %:

5 # " % #

( "" % % # F# # "# % # %
% # #% " ! % #$# % # #
%9 $# " '
"" % *

8 % # :S 8 % # :S 8 % # :S 8 % # :S
8 % # :S 8 F#:S 8 F#:

A %+% $# % % # $# " '


"" % *

# 8 F#:S 8 F#:S ! 8 % # :S$ 8 % # :S%


8 % # :

% "# " ' F#$# " " % & ' ( & ' F#
% # #'
"" % # F#

5 # % #

=<
( % # % # $# % # %
& " # % # # $# " " % % # F# 8 #
$ $ $ : # "" % % #
$#
'"" % '! # % # $ #' ' % #
# "# & "" % % # % # #

A # %+% % 9 $# % % # % # $ % #
% "& " 9 # % # ('
"" % $ '! #
% # $ # % ' % # # "# & "" % $ #
% # #( " " % # F# $# % # # % # #
#
' *

T" % F# % # 8 # # :

T" % F# % # 8
- % # F# % # :

. T" % % # 8 # $ % :

; T" % % #

# "" % ' % # # % # # %"$


"" % # #
' # # % % # # ' "" %
% # " #
#% % - # '
"" % % # #

2 "" % # & # #

( "" % # # % # F# # -
# & - & # % # # F# "(
"" % % # $ % # F#
% # # - # # $# # #
% # $ F#$ # # "# % # $
F#

T" % #

( - #
U& & # ' F# 8 # # #
'
5 & 8 M -: #
' M- - &:$# "
'
"" % *

) * S) S) ,

( - & # #
U& - & ) 9
3 B
$# " " % ) * $) $ ) ,
- & 3 B #% " $# " " % ) * )
R 8
) * $) $) * $) $
:) '
P #
U& # &V #
'"" % ) ,

- & 3 B # #
U & $# " " % ) * )
, % " & 3 B$#
'"" % ) *
) '
P #
U& # & V $#
'"" % ) ,

# ' - & "# & "" % F#$ # 9


#
'"" % ) * % #
'"" % ) , ! % #$ &
% # ! ' ! $ "# & "" % $# "
'
"" % *

) * S) S S) ,

& # "# % ' F# P $#'


"" % )
* # % F#$ # # "" % ) ) ,
# ! % #$ % # " ' F# - #
& 56 # F# $# " '
"" % *

• % F# *

) * S & 'S ( & 'S# S

• F# *

# S S) S) ,

==
T" %

( - #
U& # # # #
F# % # $# " '
"" % # F# *

# * S# , S

F# # F# $# "
'
"" % *

• % F# *

# S

• F# *

S S# * S# , S

"# % # F#$#
'"" %
% # #
'"" % F#

# # F#$# " " % $ ! ! % #$


# # # F# " ' %% $# "
'
"" % F# *

# * S# , S S$ ! S# ,

( # # %% $ "" % '
"" %

('
"" % # ' % # $' ' F# #
"# # # # % # $# # F# "" % "
"" % "" % " "" %

2 "" % # " '


"

A "" % # " # '


" # " #
'% %
# # $ # % "

T" % "

( " #
'% % # # $ # # % "#
+ $# " '"" % " *

S S% S$

( # !" $#
'"" % $ # % % #
#
'"" % # !9% % # *

$ 8
" :S 8
" :

('
"" % $ ' " # # #
'" +
' $#
'"" % $ # # L
# $ % # # ""% + - 0 . %9 $
+ ' #

( " " + $ "# & #


'"" % '!"
# + ) " $ " # 9 #
'" # %
" "" % #
# " P#
'"" % ! % #$ %
" "" % #
# L # #" # #
#
# 9 #
'"

T" % '
"

( % % # " $# " " % % + '


"
9 # "" % #
'" "" % %
$ *

8
" :S 8
" :S% 8 '
" :S+ 8 '
" :S% 8
" :
S$ 8" :

=0
A # $# " " % 9 # % % #
'"" %
+ *

• ('
"" % # ' P "" #
% #
'"

• ('
"" % % ' &" #
'"

• ('
"" % 9 # % % #
'% "" % +
#" # #
' #
'" % %"

=>
1 23 !

#9% *
? # # P "# % # # ' % # %% 9 "#
+

!% #*
% # # # # "" " #
%" , # # "#
P <1 # #
%% # " 9 + # # "# "
# # ( # %%" ( $# %% %%"
%% 1$# + %%" W + W
$# & % %" # %%"
3 %" $# # # %%" #

P ) $# #
# " # "# # "#
% P5 E# & % J# # "K # # #

% (

# % ( # # X& +

B C( + *

( 5 # YE@2 # XG @ % ( 8
J %" K
:Z 5

Dim Frm As Form


Dim Ctl As Control
Dim varItm As Variant

Public Function PrepareList(FormName As String, _


ControlName As String) As Boolean
Set Frm = Forms(FormName)
Set Ctl = Frm(ControlName)
If [Link] <> 0 Then
PrepareList = True
Else
PrepareList = False
End if
End Function

Public Function CompareList(ParameterValue As Variant) As Boolean


For Each varItm In [Link]
If CStr(ParameterValue) = [Link](varItm) Then
CompareList = True
Exit Function
End If
Next varItm
CompareList = False
End Function

E % # *
# " # % # $ 9 "#
J " "" % #
#K #
'"" % #H %%
%% 1
Private Sub Commande0_Click()
If Not PrepareList([Link], [Link]) Then
MsgBox "impossible de lancer la requête"
Else
[Link] "requête1"
End If
End Sub

=/
" % # *

# & # %" # $ "# # $


'! # # % "
"# # # "#
# # %% %% 1
@" # * + ' ## # "# "
E % # +
% # #
# # %% %% 1
@" # * + ' ## ! # "# "
E % # +
% # #
# # %% %% 1
@" # * % ' &" # + ' !" "
E % # +

%% " [

% # *
B3 ( 8 3% $ ( 3 % :5&
6 !W% # # # + W
#
A % 2 C -W + W
B

( # % % # # % ##
% # P# % ' & %
# # +
A % # *

Public Function CompareList(ParameterValue As Variant) As Boolean


For Each varItm In [Link]
If CStr(ParameterValue) = [Link](varItm) Then
CompareList = True
Exit Function
End If
Next varItm
CompareList = False
End Function

( % ( P # # P % ## $ %
# & # "# " ## A9 ' # ##
" # P# # "$ # # 5 P# + "# #
# #$ # ' "" " $# # E # " P
# +
' % " % # %"& P "
+ $ # ) # %+% % # # %+%

01

             

Créer un menu personnalisé et remplacer le menu et le formulaire de démarrage de Access par un menu et un
formulaire spécifique.
Base : Gestion de la bibliothèque. On souhaite afficher le menu suivant à l'
ouverture de la base :

ETAPE 1 : CREER UN MENU SPECIFIQUE

Ouvrez le menu Affichage –


Barre d'outils –
Personnaliser…

Choisissez l'onglet Barres


d'outils et cliquez dans
Nouvelle

Donnez un nom à cette


nouvelle Barre et cliquez dans

Cette commande à pour


effet d'afficher une barre
de menu vide sur l'écran.
Vous allez construire
menu par menu et sous
menu par sous menu le
contenu de cette barre.

La définition des menu et sous menu de la barre s'


effectue par glisser lâcher.

0
Cliquez dans l'onglet Commande
Dans la partie gauche de la fenêtre
apparaissent les catégories de
commande et dans la partie droite le
détail des commandes de la catégories
sélectionnée à gauche.

Pour insérer une commande dans la


barre de menu, il suffit de cliquer dans
cette commande, de la faire glisser en
restant cliqué bouton gauche jusqu'à la
barre de menu et de lacher le bouton
gauche lorsque la commande est dans la
barre.

Pour supprimer une commande de la


barre, cliquez bouton gauche dans la
commande et sortez la de la barre.

Pour créer une barre de menu


hiérarchisée, vous devez insérer des
sous menu dans la barre.

Pour insérer un sous menu, vous devez


sélectionner la catégorie Nouveau menu
qui se trouve en dernière position de la
liste des catégories

Lorsque la catégories Nouveau menu est


sélectionnée, la commande Nouveau
Menu apparaît dans la fenêtre
Commandes.

0
Cliquez dans Nouveau Menu avec le bouton
gauche de la souris, restez cliqué, faite
glisser Nouveau Menu jusqu'à la barre et
lâchez le bouton gauche lorsque Nouveau
menu est dans la barre.

Pour modifier le nom de ce menu, cliquez avec le bouton


droit de la souris et saisissez le nom du menu que vous
souhaitez à la place de Nouveau menu dans la zone
Nom.

Renouvelez l'insertion de Nouveau Menu autant de fois que


nécessaire en procédant de manière identique.

Remarquez que vous pouvez choisir la position de chaque


nouveau menu, à gauche ou à droite de chaque menu
préalablement inséré.

Pour insérer un sous menu dans un menu préalablement


inséré, procédez de manière identique par glisser - lâcher
de la commande dans la petite fenêtre du menu.

Vous pouvez ainsi définir plusieurs sous menu pour chacun


des menu préalablement insérés.

0.
Dans l'exemple çi-contre, le menu Edition possède 3
sous menus :
Editions Etudiants
Edition Liste Prêts
Edition Fond Bibliothèque

Le sous menu Edition Etudiant possède 2 commandes :


Edition des Etats 1 et 2

Remarquez que le menu Catégorie permet d'avoir accès


à l'ensemble des objets et commandes de la base. En
procédant avec une de ces commandes ou objets de la
même manière qu'avec Nouveau menu (par glisser
lâcher), vous pouvez constituer un menu permettant
d'activer une commande ou un objets quelconque à
n'importe quel niveau de la barre de menu.

Pour permettre l'activation d'


un élément du menu par une combinaison de touche CTRL.
Exemple : pour activer le menu Edition avec le raccourci CTRL + E, faite précéder le E de Edition par le
caractère & dans le nom de menu (tapez &Edition dans le nom du menu)
La lettre précédée du & apparaît soulignée dans le menu ( dans notre exemple : Édition ) et vous pouvez activer
le menu par CTRL + la lettre soulignée.

EPAPE 2. Choisir la barre de menu créée comme barre de menu par défaut de la base

1 – dans les propriétés de la barre de menu,


indiquez que la barre que vous venez de
créer est une barre de menu

Pour accéder aux propriétés de la barre de


menu que vous venez de créer, cliquez
avec le bouton droit de la souris dans la
barre de menu puis dans le bouton
propriété.

0;
2 – Fermez votre barre de menu, activez le
menu Outils puis le sous menu Démarrage.

Le nouveau menu sera actif à la prochaine ouverture


de la base. Une fois que le nouveau menu est actif,
pour re activer le menu standard, vous devez sortir
de la base et l'ouvrir à nouveau en appuyant sur la
touche majuscule (MAJ)
Par exemple : appuyez sur la touche MAJ et double
cliquez dans la base : ceci à pour effet de lancer
Accès et d'ouvrir la base avec le menu standard et la
fenêtre base de données.

Ou alors, lancez Accès, choisissez ouvrir une base


existante, allez dans le répertoire ou se trouve votre
base, appuyez sur MAJ et double cliquez dans votre
base.

Dans la fenêtre démarrage,


vous précisez la barre de
menu par défaut, ainsi que
le formulaire de démarrage.

Vous choisissez également


d'afficher ou de ne pas
afficher la fenêtre base de
données, les barres d'outils
et barre d'états

0<
CREATION DE MENU PERSONNALISE ACCESS 2

Access offre la possibilité de personnaliser le menu au démarrage à l'aide de la macro autoexec.


Si vous nommez une macro autoexec et que vous l' enregistrez dans une base, cette macro sera exécutée
automatiquement à chaque ouverture de la base.
Ce fonctionnalité permet de lancer n' importe quel traitement en préalable à toute ouverture de la base. En
particulier, on peut l'
utiliser pour :

1. remplacer le menu standard par un menu spécifique, adapté à l' application.


2. masquer les barres d' outils
3. masquer la fenêtre BD (la fenêtre avec les 5 onglets Table ; Requêtes ; Formulaire ; Etats ; Macro ; Module)
4. agrandir la fenêtre access à tout l'
écran

Voici comment effectuer ces 4 étapes dans la macro autoexec:

Les paramètres de chacune de ces 6 actions :

Avec l'action DéfinirValeur, vous


1 indiquez que la valeur de la propriété
BarreDeMenu de l'objet Application
devient "Menu_Général".

Ceci implique que vous ayez défini


une macro de nom Menu_Général,
2 contenant la description du nouveau
menu.

Cette macro est détaillée çi-dessous

6 Pas de paramètres

Contenu de la macro Menu_Général

0=
Supposons que le nouveau menu comporte 3 options : Saisie - Edition - Utilitaires ; et les sous menus suivants

Voici le contenu de la Macro Menu_Général et des trois macro Sous_Menu_Saisie ; Sous_Menu_Edition et


Sous_Menu_Utilitaires qui définissent le nouveau menu.

Pour chaque action AjouterMenu, vous devez


définir 2 paramètres :
1- le texte de l'option,
2- le nom de la macro définissant le sous menu.
Ci-dessous, les paramètres de chacune des 3
action AjouterMenu.

Contenu des 3 macro définissant les 3 sous menus

Au niveau des sous menu, vous pouvez lancer


l'action que vous voulez en choisissant une des
fonctions que vous propose access et en
précisant les paramètres de la fonction dans les
zones adéquates.

Vous pouvez exécuter n'importe quelle action, de


l'ouverture d'un formulaire à l'édition d'un état ou
même lancer une procédure Visual Basic à l'aide
de l'action ExécuterCode.

Evidemment, la procédure Visual Basic que vous


souhaitez lancer devra avoir été préalablement
définie dans l'onglet Module.

00
2- Comment masquer / reafficher les barres d'outils

Manuellement :

Choisissez
Affichage Option
dans le menu

Positionnez
l'option barre
d'outil à Oui
ou Non

Evidemment, il est hors de question de demander à l' utilisateur d'


effectuer cette opération chaque fois qu'
il ouvre
la base. Nous devons automatiser le fait d'
afficher/masquer la barre d'outil.
Nous pouvons effectuer cette tache de plusieurs manière.

Manière n° 1 : Exécuter la fonction EnvoiTouches dans la macro AutoExec

Avec les touches de raccourcis, et sans utiliser la souris, on peut activer le Menu, puis Affichage, puis Option,
puis atteindre l'option Barre d'outil par défaut disponible , puis mettre cette option à Non et enfin
sortir. Pour cela il faut
1. Taper ALT + A pour activer le menu Affichage
2. Taper O pour activer le sous menu Option
3. Appuyer 3 fois sur flèche vers le bas pour atteindre l'
option Barre d'outil par défaut disponible
4. Taper N pour passer cette option à Non
0>
5. Taper Enter pour sortir

La fonction EnvoiTouches permet d' activer les fonctions Access (en particulier les commandes de menu) de la
même manière qu'avec les touches de raccourcis.

Choisissez EnvoiTouches comme première action de votre macro AutoExec

puis préciser dans la zone Touche, la séquence des touches à envoyer pour mettre l'
option
Barre d'outil par défaut disponible à Non

La séquence de touche :
% A O {DOWN 3} N {ENTER}

Pour spécifier des touches utilisées conjointement avec les touches MAJ, CTRL et ALT, on doit faire précéder le
code de la touche par : + pour MAJ ; ^ pour CTRL ; % pour ALT
Pour plus de précision sur l'envoie de touche, voir l'instruction EnvoiTouches (Sendkey en Visual Basic) dans
l'
aide

Manière n° 2 : Définir une fonction dans un module et exécuter cette fonction dans la macro AutoExec.

Commencez par écrire une fonction qui masque la barre d' outil Pour écrire cette fonction vous devez créer un
module et ajouter le code de la fonction à l'
intérieur du module

Module

Nouveau

Tapez le code Visual Basic du module dans la fenêtre

Voici le code de la fonction

0/
Function MasquerBarreOutils ()
SendKeys "%AO" + "{DOWN 3}" + "N" + "{DOWN 2}" + "N" + "{ENTER}", True
End Function

SendKeys et l'
instruction Visual Basic correspondant à la commande EnvoiTouches.
Argument de SendKeys : chaîne de caractère contenant le code de touches

Une fois la fonction crée, insérer la commande ExécuterCode dans la macro AutoExec

puis précisez dans la zone Nom fonction le nom de la fonction que vous avez crée (ici MasquerBarreOutils).

LISTER les N premiers enregistrement d’une requête

Dans la définition de la requête : click bouton droit

Choix du nombre de lignes


renvoyées

DANS LA REQUETE SQL CORRESPONDANTE :

SELECT DISTINCTROW [TOP 25 / TOP 50 PERCENT ] FROM …

>1
LES MODULES VISUAL BASIC
Access offre la possibilité d’écrire des fonctions en visual basic exécutables à partir d’un des objets quelconque
de la base : formulaire, état, requête, ou macro.

Pour créer un module contenant


des procédures Visual Basic,
cliquez dans l'onglet Module
(Access 2) puis nouveau

La présentation sous Access


2000 est légèrement différente.

Pour écrire un module, cliquez dans l’onglet Module, puis sur nouveau et saisissez votre code. Vous pouvez
également ajouter une nouvelle fonction dans un module existant. La syntaxe et la sémantique des fonctions
Visual Basic Access et absolument identique à celle du Visual Basic Excel. Une fonction doit toujours renvoyer
une valeur.

Voici çi dessous la fonction RefAnSP qui renvoie la valeur de l’indicateur I de la table [catégorie sociaux prof]
pour la commune N et l’année immédiatement inférieure à une année A passée en paramètre. Si il n’existe pas
d’année inférieure à A dans la table, la fonction renvoie Null.

Function RefAnSP(N As Integer, A As Integer, I As String) As Variant


'N : n° de la commune
'A : année de reférence
'I : l'indicateur
'Cette fonction renvoie la valeur de l'indicateur I de la commune N
'pour l'année juste inférieure à A
R = DLookup(I, "[Catégories Socio Professionnelles]", "[n° commune]=" &
Str$(N) & "and [année]=(select max([année]) from [Catégories Socio
Professionnelles] where [n° commune]=" & Str$(N) _& " and [année] < " &
Str$(A) & ")")
If IsNull(R) Then
RefAnSP = Null
Else
RefAnSP = R
End If
End Function

>
Ce code est exécutable n’importe ou dans la base. Par exemple, on peut l’utiliser comme source de donnée dans
un formulaire

Le contrôle suivant utilise la


fonction RefAnSP pour
afficher la valeur de
l’indicateur de l’année
précedente.

La propriété source contrôle


du contrôle active la
fonction RefAnSP en
passant à la fonction les 3
paramètres suivants :
N° de commune ; année et
nom de l’indicateur.

N° commune et année sont


des contrôle du formulaire.

>
EXEMPLE DE REQUETES SELECTION
Soit le M.C.D. suivant :

Aeroport
code aeroport
nom
Billet
pays
numplace
1,n 1,n nompas
prenompas
arrivee depart datnaispas
(1,1)

1,1 1,1
Vol passager
numvol
datevol 0,n
1,n heuredep
heurearv 1,1
equipage appareil
1,1

Navigant planning avion


0,n
numero 0,n immat
nom nb-heure-vol
prenom 1,1
qualif 1,1
1,n
(1,1) proprietaire
compagnie
type
code compagnie 0,n
nom
emploie 0,n adresse

1,n

modele
code_modele
nbplace
constructeur

Description des liens.

Vol <=> Aeroport :


le lien 1:1 ; 1:n départ : Aéroport de départ d'un vol donné
le lien 1:1 ; 1:n arrivée : Aéroport d'arrivée d'
un vol donné;
Ensemble des vols décollant d' un aéroport donné; ensemble des vols atterrissant sur un aéroport donné.

Vol <=> Navigant :


Le lien 0:n ; 1:n équipage
Ensemble des vols auquel a participé un navigant donné.
Ensemble du personnel navigant d' un vol donné.
Vol <=> Billet :
le lien identifiant (1:1) ; 0:n passager
Vol d' un billet donné.
Ensemble des billets d' un vol donné;

>.
Vol <=> Compagnie :
Le lien 1:1 ; 1:n planning
Compagnie programmatrice d'un vol donné,
Ensemble des vols programmés par une compagnie donnée.

Vol <=> Avion :


Le lien 1:1 ; 0:n appareil
Avion effectuant un vol donné;
Ensemble des vols effectués par un avion donné.

Avion <=> Type :


Le lien 1:1 ; 1:n type
Modèle d' un avion donné,
Ensemble des avions d' un modèle donné.

Compagnie <=> Navigants :


Le lien identifiant (1:1) ; 1:n emploi
Compagnie employeur d’un navigant donné
Ensemble des navigants employés par une compagnie donnée

Compagnie <=>Avion:
Le lien 1:1 ; 1:n proprietaire
Compagnie propriétaite d’un avion donné
Ensemble des avions appartenant à une compagnie donnée

1. Liste des passagers (nom et prénom) du vol n° 819.

>;
2. Nom et prénom du personnel navigant de qualification ‘Pilote’ appartenant à la compagnie
‘Air France’.

3. Nom et prénom du personnel navigant ayant voyagé le 3-AVR-1994 avec un passager de nom
Mouse et de prénom Mickey.

><
4. Capacité en nombre de place de l'
avion ayant décollé de Paris le 19-DEC-1994 avec un
commandant de bord de nom Dubois.

>=
Avec la base Biblio

Nom et prénom d’un étudiant de n° donné

Titre des livres edité par l’éditeur de code GRA et dont le prix est supérieur à 50

Titre des livres edité par l’éditeur de nom Grasset

>0
Liste des livres empruntés par les étudiants

Noms et prénoms des auteurs édités par l’éditeur de nom Grasset

Nom et prénom des étudiants qui ont lu (emprunté !) Proust

>>
Nom et prénom des étudiant qui ont empruntés Proust et qui sont inscrit dans la section de libellé "2ieme année
sciences economiques" OU "Magistère 1iere année"

Nombre d’emprunts effectués par les étudiants

@ + 2 "

@ % 7" $ %$ " %
% &% #
# # #
# +8 $ % R % &"
% :

>/

Vous aimerez peut-être aussi