Vous êtes sur la page 1sur 158

Cours ACCESS

Page 1 sur 47

1. Les systmes de Gestion de Bases de Donnes --------------------------------------------------------------------------2
1.1 LA BASE DE DONNES ------------------------------------------------------------------------------------------------------2
1.2 LE SYSTME DE GESTION DE BASES DE DONNES--------------------------------------------------------------2
2. Lorganisation des donnes dans la base de donnes------------------------------------------------------------------3
2.1 PRSENTATION DE LEXEMPLE------------------------------------------------------------------------------------------3
2.2 LORGANISATION DES DONNES DANS UN SGBD ---------------------------------------------------------------3
2.3 DIVISER POUR MIEUX RGNER-------------------------------------------------------------------------------------------4
2.4 UTILISER PLUSIEURS TABLES--------------------------------------------------------------------------------------------5
2.5 IL EXISTE TROIS TYPES DE RELATIONS ENTRE LES TABLES :----------------------------------------------7
2.6 LES INDEX ----------------------------------------------------------------------------------------------------------------------12
3. Application----------------------------------------------------------------------------------------------------------------------------13
CREATION DUNE BASE DE DONNEES AVEC ACCESS---------------------------------------------------17
3.1 CRATION DUNE TABLE--------------------------------------------------------------------------------------------------19
3.2 LES TYPES DE DONNES--------------------------------------------------------------------------------------------------20
3.3 LES PROPRITS DES CHAMPS ----------------------------------------------------------------------------------------22
3.4 LE FORMAT D'AFFICHAGE------------------------------------------------------------------------------------------------24
Pour les champs texte et mmo--------------------------------------------------------------------------------------24
Pour les champs Numriques et Montaires ---------------------------------------------------------------------24
Pour les champs de type Date / Heure-----------------------------------------------------------------------------26
Format daffichage des dates / heures dans Windows ---------------------------------------------------------28
Pour les champs de type OUI/NON ---------------------------------------------------------------------------------29
3.5 LE MASQUE DE SAISIE -----------------------------------------------------------------------------------------------------29
3.6 LES LISTES DE CHOIX ------------------------------------------------------------------------------------------------------30
3.7 TRI PARMI LES ENREGISTREMENTS ----------------------------------------------------------------------------------42
3.8 FILTRER DES ENREGISTREMENTS ------------------------------------------------------------------------------------43
Le filtre sur un seul critre :--------------------------------------------------------------------------------------------43
Filtre sur plusieurs critres---------------------------------------------------------------------------------------------44
3.9 RECHERCHER DES ENREGISTREMENTS----------------------------------------------------------------------------45

Cours ACCESS
Page 2 sur 47
Cours Microsoft ACCESS

1. Les systmes de Gestion de Bases de Donnes

1.1 La base de donnes

Une base de donnes est un ensemble structur de donnes enregistres sur des supports accessibles par
lordinateur pour satisfaire simultanment plusieurs utilisateurs de faon slective et en un temps opportun.
Elle doit avoir un certain nombre de caractristiques :

?? Donnes structures : les informations contenues dans une base de donnes sont rparties en
enregistrements , chaque enregistrement ayant une structure bien dfinie
?? Donnes non redondantes : Une mme information ne sera pas rpte plusieurs fois dans la base de
donnes.
?? Donnes cohrentes : Il ne doit pas tre permis denregistrer dans une base des informations
incohrentes entre elles
?? Donnes accessibles directement selon de multiples critres
?? Indpendance des programmes et des donnes : La base de donnes doit tre indpendante des
programmes qui y ont accs, on doit pouvoir utiliser un autre programme pour traiter diffremment ces
donnes sans avoir toucher ces donnes
?? Scurit des donnes stockes : la base de donnes doit permettre un systme de scurit permettant de
grer les droits daccs aux informations par les utilisateurs.


1.2 Le Systme de Gestion de Bases de Donnes

Un Systme de Gestion de Bases de Donnes (S.G.B.D.) reprsente un ensemble coordonn de logiciels qui
permet de dcrire, manipuler, traiter les ensembles de donnes formant la base. Il doit galement assurer la
scurit et la confidentialit des donnes dans un environnement o de nombreux utilisateurs ayant des
besoins varis peuvent interagir simultanment sur ces donnes.

Il doit pouvoir tre utilis par des non-informaticiens. Il doit assurer la dfinition des structures de stockage
et des structures de donnes et le suivi de leur volutions ; cest ce quon appelle ladministration des
donnes. Il doit pouvoir au maximum vrifier la cohrence des donnes. Le SGBD sert donc dinterface
entre les programmes dapplication des utilisateurs dune part, et la base de donnes dautre part.

Microsoft Access est un SGBD dont nous allons tudier le fonctionnement.

Cours ACCESS
Page 3 sur 47


2. Lorganisation des donnes dans la base de donnes


2.1 Prsentation de lexemple

Avant de pouvoir exploiter les donnes contenues dans la base, il va falloir les modliser, par modliser, je
veux dire trouver le meilleur moyen de reprsenter le monde rel en structurant la base de donnes de
manire pouvoir l exploiter la plus simplement par la suite.


2.2 Lorganisation des donnes dans un SGBD

Dans Access, comme dans les autres SGBD, les informations doivent tre segmentes en donnes qui sont
stockes dans des tables. Une table est donc un ensemble de donnes, organises en lignes et en colonnes.
On peut stocker dans une table nimporte quel type dinformation (texte, chiffres, graphisme, son, etc...)

Chaque table est divise en enregistrements, les enregistrements tant lensemble des donnes relatives la
mme information. Prenons lexemple dun carnet dadresses. Pour ce carnet dadresses, nous allons
utiliser une table contacts qui contiendra toutes les informations concernant chaque contact, chaque
enregistrement contiendra les informations relatives un (et un seul) contact (nom, adresse, tlphone, date
de naissance, etc.).

Comme on vient de le voir, chaque enregistrement contient un ensemble dinformations (nom, adresse,
tlphone) qui ont elles-mme diviser lenregistrement en plusieurs parties, chaque partie sappelle un
champ. Le champ contient une partie des informations de chaque enregistrement.






















Organisation de la base de donnes



Base de donnes
Table 1 Table 3 Table 2
Enregistrement 1 Enregistrement 2
Champ 1 Champ 2 Champ 3
Cours ACCESS
Page 4 sur 47

Si on reprend notre exemple de carnet dadresse, nous allons avoir une table qui peut ressembler a :




Nom Adresse Tlphone
Deuf John Rue Barbe 75001 Paris 01.02.03.04.05
Covert Harry Rue Minant 59000 Lille 02.03.04.05.06
Dalors Homre Rue Tilant 75003 Paris 03.04.05.06.07


Quelques dfinitions :

?? La base de donnes : Cest lensemble des tables utilises pour grer linformation
?? La table : cest un ensemble de donnes organises en ranges et en colonnes
?? Le champ (ou colonne) : Cest lunit dinformation dans une table. Une table est constitue de
diffrents champs
?? Lenregistrement (ou la ligne) : Cest lensemble des donnes relatif la mme information (le 1
er

enregistrement de la table contient les informations relatives au contact John Deuf )




2.3 Diviser pour mieux rgner

Il faut toujours segmenter linformation en lments les plus petits possibles. On aurait trs bien pu crer
une table contact avec un seul champ par enregistrement qui contiendrait toutes les informations en mme
temps. Mais une des rgles dor dans la cration de la structure dune base de donnes est de diviser le plus
possible linformation pour pouvoir la traiter par la suite le plus simplement et le plus efficacement
possible.

Le SGBD, pour retrouver les donnes quon lui demande, travaille avec le contenu des champs, il lui sera
donc difficile, dans la table Contacts telle quelle est de retrouver les contacts habitant Lille, la ville se
trouvant mlange au reste de ladresse, de mme, on ne pourra pas rcuprer le nom seul de chaque
contact, celui-ci se trouvant dans le mme champ que le prnom.

Comme on ne peut pas toujours prvoir, lors de la cration de la structure de la table, de lusage qui en sera
fait plus tard, il faut diviser le plus possible les donnes, sachant quil sera toujours compliqu (et risqu) de
modifier la structure de la table par la suite lorsquelle sera remplie.

Une meilleure organisation de la table serait la suivante :

Nom Prnom Rue Code Postal Ville Tlphone
Deuf John Rue Barbe 75001 Paris 01.02.03.04.05
Covert Harry Rue Minant 59000 Lille 02.03.04.05.06
Dalors Homre Rue Tilant 75003 Paris 03.04.05.06.07

Lorganis ation de la table est optimale, elle est dcompose en lments aussi petits que possible, la ville
est clairement spare de ladresse et le nom du prnom.

Champ
Enregistrement
Cours ACCESS
Page 5 sur 47


2.4 Utiliser plusieurs tables

Prenons lexemple de la gestion dune collection de disque. On pourrait tre tent de crer une seule table
contenant les informations suivantes :


Collection
Nom Auteur
Prnom Auteur
Titre Album
Anne
Genre
Support

Et nous naurions pas spcialement tort, toutes les informations relatives un album sy trouvent. Pourquoi
faire plus compliqu ?

Nanmoins, nous allons voir quil est plus judicieux de crer ici deux tables :

Auteurs
Nom Auteur
Prnom Auteur
Date de naissance
Adresse





Pourquoi ?

On va regrouper ensemble dans une mme table toutes les informations relatives au mme sujet . On
voit bien ici quon peut regrouper ensemble les donnes concernant uniquement lidentit de lauteur et,
dans une autre table, les informations relatives uniquement lalbum (par exemple, lanne de sortie dun
album na pas de rapport direct avec lidentit de lauteur, on la trouvera dans une autre table).

Un bon moyen pour trouver les tables utilises est de partir de la situation existante :

Un auteur fait des albums, a un auteur peut correspondre plusieurs albums

On en dduit directement une table auteurs et une table albums .

Ce qui, au passage, nous permet denrichir les informations sur les auteurs, on peut en profiter pour par
exemple ajouter la date de naissance ou son adresse, ce qui aurait t pnible dans la 1
re
version, en effet, il
aurait fallu, pour chaque album dun auteur, ressaisir chaque coup sa date de naissance et son adresse
(sans compter les erreurs de frappe dun album lautre), l les informations ne sont saisies quune fois, ce
qui est dabord moins fatiguant (et a, cest le plus important) et ensuite, vite les fautes de frappes.
Albums
Titre Album
Anne
Genre
Support
et
Cours ACCESS
Page 6 sur 47

Bon, cest bien, maintenant on a deux tables, mais du coup, on ne sait plus qui a fait quoi, les informations
sont parpilles. Il va donc falloir trouver un moyen pour savoir exactement quel auteur correspond
chaque album. Pour cela on va ajouter dans la table auteur un champ qui va identifier de faon unique
chaque enregistrement, ce champ didentification unique est appel clef primaire.

A quoi sert cette clef ? A pouvoir retrouver de faon non quivoque nimporte quel enregistrement dans la
table Auteurs , on ne peut en effet utiliser le nom ou le prnom comme clef primaire car deux auteurs
peuvent avoir le mme nom (rare mais pas impossible).

Le numro de scurit sociale est un bon exemple de champ clef primaire car il identifie de manire unique
un individu. Mme si deux individus ont le mme nom et le mme prnom, ils ne peuvent avoir le mme
numro de scurit sociale.


La table Auteurs ressemble alors ceci (la clef primaire est en gras)

Auteurs
N Auteur
Nom
Prnom
Date de naissance
Adresse

Et pour pouvoir associer un album un auteur, il va falloir ajouter un champ dans la table Albums , ce
champ contient le n de lauteur de lalbum

Albums
N Auteur
Titre Album
Anne
Genre
Support

On voit ici que cette organisation rpond une des exigences des bases de donnes, savoir la non
redondance des informations, dans la premire organisation, le nom et le prnom de lauteur taient rpts
autant de fois quils avait fait dalbums, ici il ne sera prsent quune seule fois. Lorsquon voudra afficher
les caractristiques dun album, Access, grce au numro de lauteur prsent dans lenregistrement de la
table Albums ira chercher automatiquement les informations le concernant dans la table Auteurs .
Cette organisation a un norme avantage, le jour ou on veut modifier le nom ou le prnom dun auteur,
cette modification sera rpercute automatiquement sur les albums quil aura fait.

Clef primaire ralise partir de plusieurs champs

Lorsquon est sr que le contenu dune combinaison de champs ne se rptera pas dans une table, on peut
utiliser cette combinaison de champs comme clef primaire. On aurait pu, la place dun n dauteur, utiliser
la combinaison nom + prnom + date de naissance , parce quil est rare que deux auteurs diffrents aient
le mme nom et le mme prnom et la mme date de naissance. Mais ce type de combinaison complexe est
difficile maintenir (il est plus simple de taper un numro quune combinaison complexe de noms et de
date, sans parler des erreurs de frappes) et en plus prendrait plus de place dans la base de donnes (on ne
voit pas trop lintrt de dcouper les informations en deux tables si cest pour retrouver dans le n de
lauteur utilis dans la table Albums quasiment toutes les informations contenues dans la table
Auteurs !). Et pour terminer, ce genre de clef primaire complexe fonctionne mal dans Access.

Cours ACCESS
Page 7 sur 47


Grce a cette clef, on va pouvoir mettre les deux tables en relation.

tablir une relation entre les tables de la base de donnes va permettre de runir (pour les exploiter
ensemble, les analyser, ... ) les informations rparties dans diffrentes tables. La liaison se fait entre les
tables partir de la clef primaire, ici, on obtiendra la liste des albums dun auteur grce la liaison entre la
table Auteur et la table Album sur la clef primaire n auteur.



2.5 Il existe trois types de relations entre les tables :

La relation de type un plusieurs (1 n)

Un enregistrement dune table est en relation avec plusieurs enregistrements dune autre table.









Exemple : a un auteur correspond un ou plusieurs albums (plusieurs flches partent du mme auteur), a
chaque album ne correspond quun seul auteur.


La relation entre les deux tables se prsente sous cette forme :









Auteurs
Enregistrement 1
Enregistrement 2

Albums
Enregistrement 1
Enregistrement 2
Enregistrement 3

Auteurs
N Auteur
Nom
Prnom

Albums
N Auteur
Titre Album
Anne
Genre
Support

1 n
Cours ACCESS
Page 8 sur 47


La relation plusieurs plusieurs ( n m )


Un enregistrement de la table primaire peut tre en relation avec plusieurs enregistrements de la table
relie et inversement, un enregistrement de la table relie peut tre en relation avec plusieurs
enregistrements de la table primaire. Pour grer ce type de relation, il faut la scinder en deux relations :
une relation un plusieurs et une relation plusieurs un .

Exemple : On aurait pu avoir le cas o un album a plusieurs auteurs, l, a ne marche plus, car telle que
la table Albums est structure, un album ne peut correspondre quun auteur. Si on veut permettre
qu un album correspondent plusieurs auteurs (on a alors une relation n m), deux solutions soffrent
nous :

1. La plus simple et la plus inlgante (les trucs les plus simples sont souvent inlgants) : ajouter
quelques champs auteurs supplmentaires dans la table album pour arriver quelque chose de ce
genre, histoire de conserver une relation 1 n :


Albums
N Auteur
N Auteur 2
N Auteur 3
Titre Album
Anne
Genre
Support

Ce genre de plaisanterie est viter tout prix, en effet, si il ny a quun seul auteur, les champs n
auteur 2 et n auteur 3 ne vont rien contenir, et on va perdre de la place dans la base de donnes, et
que va-t-il se passer si il y a quatre auteurs ? ? vous rpondrez quon peut prvoir quatre champs, ce
quoi je vous rpondrez quil peut y avoir 5 auteurs, etc


2. Il va donc falloir (on y coupe pas) crer une troisime table qui va servir dintermdiaire entre la
table auteurs et la table albums :











Auteurs
N Auteur
Nom
Prnom

Albums
N Album
Titre Album
Anne
Genre
Support

Auteurs- albums
N Auteur
N Album

1 n
n 1
Cours ACCESS
Page 9 sur 47
Jen entends dj hurler !

Quelles sont les modifications ?

Nous sommes bien daccord quavec un seul numro dauteur dans la table albums nous ne
pouvions pas avoir plusieurs auteurs pour le mme album. La solution 1 tant proscrire (sauf dans
le cas o on tait sr quil y aurait toujours 3 et seulement 3 auteurs), la troisime table est la seule
solution.

Comment ? et bien, chaque album correspond n enregistrements dans la nouvelle table Auteurs-
albums , chaque enregistrement renvoyant sur un seul enregistrement de la table auteurs . Votre
esprit curieux aura not quon a, pour les besoins de la cration de cette nouvelle table, cre une clef
primaire dans la table albums .

Pourquoi ? Pour faire correspondre un enregistrement de la table Auteurs-albums avec la table
Albums , il faut le faire sur la clef primaire, et comme on navait pas de clef primaire dans
Albums , il a bien fallu en crer une. Aucun des champs prsents ne pouvait tre utilis comme
clef primaire (la clef primaire, je le rpte, doit identifier de faon UNIQUE un enregistrement) :
deux albums peuvent avoir le mme titre (rare mais pas impossible), peuvent tre sortis la mme
anne, tre du mme genre, etc, on aurait pu utiliser une clef primaire complexe avec un couple
(titre + anne), plutt rare que ce couple se retrouve deux fois, mais pour les raisons vues plus haut,
on vitera dutiliser ce type de clef.
Cours ACCESS
Page 10 sur 47

Par exemple, on va avoir dans ces tables :

Auteurs

N Auteur Nom Prnom
1 Crow Sheryl
2 KSChoice
3 Sbastien Patrick
4 Bezu

Albums

N Album Titre Album Anne Genre Support
1 Cocoon Crash 1998 Good CD
2 The Globe Sessions 1998 Good CD
3 Tuesday Night Music Club 1993 Good CD
4 Top NAZ Compil 1920 Debile-Blaireau CD


Auteurs-Albums

N Auteur N Album
1 2
1 3
2 1
3 4
4 4


Avec cette mthode, on peut affecter sans aucun problme n auteurs m albums. (ici Sheryl Crow a
deux albums, KS Choice un seul, et lalbum Top NAZ Compil a deux auteurs que je ne citerai pas)


Enfin, il existe un troisime type de relation, jamais utilis : la relation de type un un : un
enregistrement dune table est en relation avec un seul enregistrement dune autre table et inversement.
Ce type de relation ne doit pas se produire car les donnes de la table relie nont aucune raison de se
trouver l, comme elles ne correspondent qu un seule enregistrement de la 1
re
table, elles devraient
tre dplaces dans cette table.

Encore un peu de thorie avant de samuser avec Accs.
Cours ACCESS
Page 11 sur 47
2.6 Amliorations


On peut encore amliorer le schma de nos tables. En effet, pour la mme raison qui nous avait fait sparer
en deux tables Albums et Auteurs notre table de dpart pour viter avoir a ressais ir les informations
concernant un mme auteur pour chacun de ses albums, il est ici possible deffectuer nouveau une division
de la table Albums .

En effet, pour chaque album, on va indiquer le genre (rock, pop, reggae, rap etc) et le support (CD, vinyl,
K7, DAT, minidisc, etc), ces informations vont tre redondantes et pourraient tre optimises de la faon
suivante :

1) On cre une table genre et une table support


Genre
N Genre
Nom Genre

Support
N Support
Nom support

2) On modifie la table albums

Albums
N Auteur
N Auteur 2
N Auteur 3
Titre Album
Anne
N Genre
N Support

Maintenant, au lieu dindiquer explicitement pour chaque album son support et son genre, on indiquera un
n de genre et un n de support . Lintrt est triple : gain de place en mmoire (stocker un numro prend
moins de place que stocker une chane de caractres), gain de vitesse (entrer un numro est plus rapide que
taper le mot complet), optimisation de la structure (on pourra changer le nom dun support, ce changement
affectera instantanment lensemble des albums).

Cours ACCESS
Page 12 sur 47

2.7 Les index

Pour optimiser les temps de recherche dans les tables, Access (et dailleurs tous les SGBD) ont besoin
dindex. Lindex permet Access de retrouver plus rapidement les enregistrements concerns ; il acclre
aussi les oprations de tri.

Comment ? Les index fonctionnent avec une table comme la table des matires avec un livre. Lorsquon
indexe un champ, Access stocke hors de la table les valeurs de ce champ. Lorsquon effectue une recherche
sur ce champ, plutt que de le chercher dans la table, Access va faire sa recherche dans lindex, une fois
quil aura trouv, il affichera le contenu de lenregistrement associ cet index.

Petit crobard :

Supposons que la table Albums soit indexe sur le titre de lalbum





















Lorsquon cherchera un enregistrement de la table albums partir du titre de lalbum, Access parcourra
lindex et affichera lenregistrement correspondant lindex quil aura trouv.

Un index peut tre compos dun ou de plusieurs champs, on aurait pu indexer la table albums sur un index
titre + anne par exemple (si a peut servir quelque chose), de mme, on peut utiliser plusieurs index
pour une table, par exemple, on aurait pu indexer la table album sur les champs Titre, Genre et Support.

Pourquoi alors ne pas tout indexer ? Lide peut sembler bonne, cela acclrerait les recherches et les tris
mais ralentirait toutes les mises jour de la table, en effet, chaque fois quun champ index est modifi
dans la table, il faut le modifier galement dans lindex, ce qui peut coter trs cher en temps. On utilisera
donc les index avec parcimonie et uniquement si ils savrent utiles.

Index

Cocoon
Crash
The Globe
Sessions
Tuesday
Night
Top Naz
Table Albums

1
Cocoon Crash
1998
Good
CD
2
The Globe Sessions
1998
Good
CD
3
Tuesday Night
1993
Good
Support 3
Enregistrement 1




Enregistrement 2




Enregistrement 3
Cours ACCESS
Page 13 sur 47
3. Application

Maintenant que vous avez tout compris au film, nous allons nous pencher sur un autre cas de figure. Supposons
quon veuille grer un magasin avec Access. Crez donc les tables et les relations pour notre magasin, au cas o
certains ignoreraient le fonctionnement dun magasin, voici comment a marche :

?? Un client commande des produits
?? Un fournisseur livre des produits
?? Le stock contient des produits

Et voil une solution qui semble honnte :

(Les clefs primaires sont en gras, les indexes sont souligns)

Le choix des index est totalement subjectif, il sera surtout fait en fonction des besoins ultrieurs. Ce nest pas
grave si on na pas choisi les bons index, il est toujours possible de les modifier ultrieurement.

Une table clients

Clients
N Client
Titre
Nom
Prnom
Adresse
Code Postal
Ville
Observations

Une table produits

Produits
Code produit
Dsignation
Prix unitaire
Taux TVA
Stock

Une table Commandes qui va indiquer ce qua command le client

Commandes
N Commande
N Client
Date de la commande
Commande rgle

On est daccord, une commande peut avoir plusieurs lignes (plus dun produit command par commande, ca vaut
mieux), pour cela, on va avoir une table lignes de commande qui va relier la commande aux produits.

Pourquoi navoir pas mis a directement dans la table commande ? on retombe sur notre problme de tout
lheure : parce quon ne sait pas par avance le nombre de lignes quon peut avoir dans une commande.

O peut voir quun produit peut se retrouver dans n commandes, et que une commande peut faire rfrence m
articles, on a donc entre les tables commandes et articles , une relation n m (plusieurs plusieurs)
quAccs ne peut grer (ni dailleurs aucun autre SGBD), il faut donc transformer cette relation en deux autres
relations 1-n et n-1 en utilisant une table supplmentaire, do lapparition de cette table.
Cours ACCESS
Page 14 sur 47

Lignes commande
N Commande
Code produit
Quantit

Pour les fournisseurs, on a quelque chose de trs ressemblant

Une table fournisseurs

Fournisseurs
N Fournisseur
Titre
Nom
Prnom
Rue
Code Postal
Ville
Tlphone
Fax
Observations

Mme problme que prcdemment, un fournisseur peut livrer plusieurs produits et le mme produit peut tre
livr par plusieurs fournisseur, donc relation n-m, donc cration dune table intermdiaire

Fournisseurs-produits
N Fournisseur
Code Produit


Et voil le travail dartiste, les relations entre tout ce beau monde donnent ceci

























Clients
N Client
Titre
Nom
Prnom
Adresse
Code Postal
Ville
Observations

Produits
Code produit
Dsignation
Prix unitaire
Taux TVA
Stock

Commandes
N Commande
N Client
Date de la commande
Commande rgle

Lignes-commande
N Commande
Code produit
Quantit

Fournisseurs
N Fournisseur
Titre
Nom
Prnom
Rue
Code Postal
Ville
Tlphone
Fax
Observations
Fournisseurs-produits
N Fournisseur
Code Produit


1 n
n 1
n 1
1 n
Cours ACCESS
Page 15 sur 47
On aurait pu dire quun produit pouvait tre livr par un seul fournisseur, dans ce cas, la table intermdiaire
Fournisseurs-Produits aurait t inutile, pour savoir quel tait le fournisseur dun produit, il suffisait dajouter
un champ n fournisseur dans la table produit. Il aurait contenu, pour chaque produit, le n de fournisseur le
livrant.

Dernier exemple pour la route

On veut modliser le problme dune partie de la gestion de la scolarit dun tablissement.
On connat les rgles suivantes :

?? Les enseignements sont dispenss sous forme de cours
?? Un tudiant peut sinscrire plusieurs cours
?? Un enseignant est rattach un ou plusieurs tablissements et peut enseigner plusieurs cours
?? Un cours peut tre enseign par plusieurs enseignants
?? Certains enseignants peuvent tre responsables des autres

A vous de jouer... Donnez les diffrentes tables qui vont tre utilises et les relations entre elles (on sintresse
pas spcialement au contenu exact des tables)

Les tables qui vont tre utilises sont :

Cours
N cours
Nom
...

tudiants
N tudiant
Nom
Prnom
...

Inscriptions
N tudiant
N cours
Note semestre
...

Enseignants
N enseignant
Responsable
Nom
Prnom
...

Enseignants - cours
N enseignant
N cours

tablissements
N tablissement
Nom
Adresse
...

Rattachements
N enseignant
N tablissement
Cours ACCESS
Page 16 sur 47

Les relations vont tre :


(fait avec Access !)

Cours ACCESS
Page 17 sur 47
CREATION DUNE BASE DE DONNEES AVEC ACCESS

Nous allons crer la base de donnes Magasin qui va contenir les tables dont nous avons vu la structure plus
haut.

3.1 Cration de la base de donnes


Cliquer sur "Nouvelle base de donnes" et entrer magasin.mdb comme nom de la base.



Cours ACCESS
Page 18 sur 47

La fentre Base de Donnes saffiche, elle contient tous les objets qui peuvent composer une base
Access :


Les Tables : Chaque table de la base va contenir les donnes se rapportant un sujet particulier,
la table clients va contenir les informations sur les clients. Cest lobjet
fondamental de la base de donnes, toute requte, formulaire ou tat va tre bas
sur une ou plusieurs tables.

Les Requtes : Les requtes vont tre utilises pour obtenir des donnes contenues dans une ou
plusieurs tables partir dune question. Par exemple, une requte va pouvoir nous
afficher la liste des clients habitant Paris.

Les Formulaires : Le formulaire est utilis pour faciliter la saisie et la modification des donnes
dune table, par exemple, le formulaire "client" va permettre dentrer de faon
conviviale les informations concernant un client. On peut les saisir sans
formulaire, ce que nous verrons, mais cette mthode est moins conviviale.

Les tats : Les tats permettent dimprimer des donnes contenues dans des tables selon une
prsentation dfinie en y intgrant ventuellement des calculs.

Les Macros : Les macro commandes permettent dautomatiser une suite doprations rptitives.

Les Modules : Les modules sont des programmes crits en Visual Basic for Application (VBA)
pour raliser des oprations qui seraient trop complexes en utilisant les seules
fonctionnalits dAccess.

Cours ACCESS
Page 19 sur 47

3.1 Cration dune table

Cliquer sur Nouveau


Access propose 5 mthodes pour crer une table :

?? Mode feuilles de donnes : ce mode permet de saisir directement des informations dans la table
sans se proccuper du nom ou du format des champs, la dfinition du nom et du format sera faite
plus tard.

?? Mode cration : On utilisera cette mthode le plus souvent, elle permet de crer les noms et la
structure de chaque champ de la table.

?? Assistant Table : Access propose diffrent modles de tables prdfinis (carnet dadresses, factures,
etc...) et cre la table, vous devrez la personnaliser ensuite pour quelle rponde vos besoins.

?? Importer la table : Si les donnes de votre table sont dj contenues dans une autre table, dans un
fichier ou dans une autre base de donnes, vous pouvez utiliser cette mthode pour importer vos
donnes dans une nouvelle table.

?? Attacher une table : Cette option sert attacher une table avec une autre table contenue dans une
autre base de donnes, nous ne lutiliserons pas.

Nous utiliserons ici le mode cration :

La cration de la table seffectue en remplissant les trois colonnes Nom du champ , Type de
donnes et Description

Chaque ligne de ce tableau contient les informations de chaque champ :

?? Le nom de chaque champ de la table (de 1 64 caractres)
?? Le type de donnes (voir plus bas) choisir parmi 9 types proposs par Access
?? La description du champ (255 caractres maximum)

Cours ACCESS
Page 20 sur 47
3.2 Les types de donnes


Chaque champ peut contenir des donnes de diffrents types : le nom du client va contenir des
caractres alphabtiques, le code postal va contenir des chiffres, la date de livraison une date, un champ
prix va contenir des valeurs montaires.

Il faut choisir, pour chaque champ de la table, le type de donnes le plus appropri, en effet, rien
ninterdit de choisir comme type de donnes pour un champ contenant une date ou un code postal un
type texte ou pour champ contenant un prix un type numrique , mais autant utiliser les types les
plus appropris !


Les diffrents types sont :

??Texte : Pour un champ destin contenir des caractres alphanumriques (lettres et/ou
chiffres), attention, le champ de type texte ne peut contenir plus de 255 caractres, on
lutilise pour un nom, une adresse, etc

??Mmo : Mme utilisation que le type texte, mais le champ de type mmo peut contenir jusque
65535 caractres (64 Ko). Utilis pour une description longue par exemp le.

??Numrique : Le champ ne pourra contenir que des nombres avec ou sans dcimales. (un code
postal, un n didentification par exemple)

??Date/Heure : Le champ ne pourra contenir que des dates ou des heures (Access vrifie la validit
des dates ou des heures saisies)

??Montaire : Valeurs prsentes sous format montaire (exemple : 1 23,45F)
Cours ACCESS
Page 21 sur 47

??NumroAuto Valeur numrique incrmente automatiquement lors de la saisie de chaque
enregistrement. Si vous choisissez ce type de champ, vous ne pourrez rien saisir
dedans, cest Access qui y placera un nombre automatiquement chaque fois que
vous crerez un nouvel enregistrement. On lutilisera lorsquon veut tre sur que le
contenu de ce champ ne se retrouvera pas dans un autre enregistrement de la table,
par exemple pour le numro de client : chaque nouveau client aura un numro unique
automatiquement affect par Access, c'est un champ de ce type qui sera le plus
souvent utilis pour tre une clef primaire.

??Oui/Non : Seules deux donnes sont autorises dans ce champ : Oui et Non (on utilisera ce type
de donnes par exemple avec un champ rgl qui indiquera si une facture a t
rgle ou non)

??Objet OLE : OLE (Object Linked and Embbeded) est une technologie utilise par Windows, elle
permet dinsrer dans une application des objets provenant dautres applications, on
utilisera un champ de ce type pour insrer dans la table une image, un son, un fichier
Word, etc...

??Lien Un champ de ce type contiendra une adresse Internet sur laquelle on pourra cliquer
Hypertexte directement.

La liste de choix nest pas vraiment un type de donnes, nous ltudierons plus tard.

Une fois la table Clients correctement renseigne, on devrait avoir quelque chose qui ressemble
a :


Cours ACCESS
Page 22 sur 47

3.3 Les proprits des champs

Comme vous pouvez le constater, chaque champ a des proprits qui dpendent de son type de donnes,
ces proprits vont dterminer la faon dont les donnes quil contient vont tre affiches ou comment
les donnes vont tre saisies dans ce champ. Ces proprits sont affiches dans longlet Gnral en
bas de la fentre. Longlet Gnral affiche chaque proprit du champ et, ct, dans des champs
modifiables, la valeur de cette proprit.

Ces proprits varient selon le type de donnes (par exemple, un champ numrique aura une proprit
dcimales qui indiquent le nombre de chiffres aprs la virgule que ne peut avoir videmment un
champ de type texte)

Proprits des champs de type Texte et Mmo
Taille du champ
Nombre de caractres maximum qui peuvent tre saisis
Valeur par dfaut
Texte qui sera contenu par dfaut dans ce champ
Valide si
Expression pour valider la saisie, exemple : <> machin , interdira la saisie
du mot machin dans ce champ
Message si erreur
Message derreur qui va tre affich si lexpression saisie nest pas valide, dans
notre exemple, on pourrait mettre ici saisie de machin interdite
Null I nterdit
Si oui, il faudra obligatoirement saisir une valeur dans ce champ
Chane vide
autorise
La chane vide est "", on peut l'utiliser lorsqu'on n'a rien entrer dans un
champ obligatoire, si cette proprit est non, il faudra obligatoirement saisir du
texte dans ce champ
I ndexe
Le champ est un index avec ou sans doublons, si l'index n'a pas de doublons, il
ne sera pas possible de saisir deux fois le mme contenu pour ce champ dans la
table
Format
Va dfinir comment le contenu du champ va tre affich (voir plus loin)
Masque de saisie
Oblige saisir le contenu du champ selon un format prcis (par exemple un
numro de tlphone), on verra a plus loin

Cours ACCESS
Page 23 sur 47

Tous les autres types de donnes ont des proprits similaires, certains ont des proprits
supplmentaires :

Proprits des champs de type numrique
Taille du champ
Dfinit la valeur maximale qui va pouvoir tre contenue dans ce champ. Il
faudra faire attention et bien penser l'avance quelle sera la valeur maximale
permise dans ce champ pour pouvoir ajuster au mieux cette proprit :

Octet : de 0 255
Entier : de 32767 +32768
Long : de 2147483648 +2147483649
Rel Simple : de 3.48
E
38 +3.40
E
38
Rel Double : de 1.79
E
308 + 4.96
E
324

Plus on descend, plus le champ occupera de la place en mmoire et sur le
disque dur (le Rel Double prend 8 fois plus de place que l'octet), pensez-y si la
table contient des milliers de lignes...
Dcimales
Nombres de chiffres aprs la virgule


Proprits des champs de type NumroAuto
Nouvelles valeurs
Indique quelle sera la prochaine valeur contenue dans un champ de type
NumroAuto : avec Incrment, la valeur sera gale la valeur cre dans le
prcdent enregistrement+1, avec Alatoire, Accs remplira ce champ avec
une valeur tire au hasard (mais qui ne se retrouvera pas dans un autre
enregistrement).

Cours ACCESS
Page 24 sur 47


3.4 Le format d'affichage

Nous avons vu plus haut qu'on peut modifier la faon dont les donnes contenues dans les champs
peuvent tre affiches ou forcer leur saisie selon un format prcis.

La faon dont les donnes sont affiches se fait par l'intermdiaire de la proprit "Format d'affichage".

Attention, la faon dont les donnes sont affiches dans un champ ne modifie en rien le contenu de ce
champ dans la table. Par exemple, si vous forcez afficher un '1' avant le contenu d'un champ, si ce
champ contient '234', la valeur affiche sera '1234' mais le contenu du champ dans la table sera
toujours '234'. La proprit 'format d'affichage' n'influe que sur la faon dont les donnes d'un champ
vont tre affiches.

Pour modifier le format d'affichage, on utilise les codes suivants (quand ils marchent...) :

Codes du format d'affichage
"texte" Affiche le texte "texte" dans le champ
! Justifie droite le contenu du champ
* c Remplace les espaces par le caractre c
[couleur] Affiche le contenu du champ dans la couleur "couleur"

Il y a des formats d'affichages plus spcifiques certains types de donnes :


Pour les champs texte et mmo

Formats d'affichage spcifiques aux champs Texte et Mmo
@ Va afficher un espace si on a rien saisi
< Va afficher le texte en minuscules
> Va afficher le texte en majuscules


Pour les champs Numriques et Montaires

Formats d'affichage spcifiques aux champs Numriques et
Montaires
Nombre gnral Affiche le nombre tel qu'il a t saisi
Montaire
Nombre avec sparateur de milliers + 2 chiffres aprs la
virgule + symbole montaire
Fixe Affiche au moins un chiffre + 2 chiffres aprs la virgule
Standard
Nombre avec sparateur de milliers + 2 chiffres aprs la
virgule
Pourcentage Multiplie le nombre par 100 et ajoute le symbole %
Scientifique Nombre au format dcimal avec exposant

Cours ACCESS
Page 25 sur 47
On peut dfinir son propre format d'affichage pour les champs numriques ou montaires si le format
que l'on dsire ne fait pas partie des formats proposs ci-dessus.
Pour cela, on utilise un format d'affichage spcial, ce format est dfini par une chane de caractres qui a
le format suivant (vous tapez cette chane de caractres dans le champ 'format' de la proprit du
champ) :

; ; ;
> 0 < 0 = 0 NULL

La premire partie (avant le premier symbole ";") va dfinir comment va tre l'affichage si le contenu du
champ est suprieur 0, la deuxime partie, si le contenu du champ est infrieur 0, la troisime partie
si le contenu du champ = 0 et la dernire partie si le contenu du champ est vide.

Chaque partie est une combinaison des symboles suivants :

Symbole Signification
, Sparateur de milliers
. Sparateur dcimal
0 Un chiffre ou zro
# Un chiffre ou rien
% Pourcentage (* 100) + symbole %
E- Affichage scientifique, exposant positif non sign
E+ Affichage scientifique, exposant positif sign

Par exemple :

$#,##0.00[vert];($#,##0.00)[rouge];"Zro";"Vide"

Que va-t-il se passer avec ce format d'affichage ?

?? Si le nombre est suprieur 0, il sera affich en vert avec au moins un chiffre avant la virgule et
deux aprs la virgule.
?? Si il est infrieur zro, il sera affich en rouge, entre parenthses avec au moins un chiffre avant la
virgule et deux aprs la virgule.
?? Si il est gal zro, il sera affich "Zro".
?? Si le champ est vide, il sera affich "Vide".

Notez que les symboles # et 0 symbolisent chaque chiffre du nombre qui doit tre affich.
Cours ACCESS
Page 26 sur 47

Pour les champs de type Date / Heure

Formats d'affichage spcifiques aux champs Date / Heure
Date, gnral
Par dfaut, affiche la date sous le format JJ/MM/AA HH:MM:SS (si il n'y a
pas d'heure, affiche seulement la date)
Date, Complet
Affiche la date complte comme prvue dans le panneau de configuration de
Windows
Par exemple : lundi 1 janvier 1999
Date, Rduit Affiche : 1-jan-99
Date, Abrg
Affiche la date abrge comme prvue dans le panneau de configuration de
Windows
Par exemple : 1/1/99
Heure,
Complet
Affiche l'heure comme prvue dans le panneau de configuration de Windows
Par exemple : 17:34:22
Heure, Rduit Exemple : 5:34 PM
Heure, Abrg Exemple : 17:34

Comme pour les champs de type numriques ou date, on peut dfinir son propre format d'affichage en
utilisant une combinaison des symboles suivants :


Symbole Signification
: Sparateur d'heure
/ Sparateur de date
c Identique au format "Date, Gnral"
j Jour du mois (1 31)
jj Jour du mois sur deux chiffres (01 31)
jjj Trois premires lettres du jour (dim sam)
jjjj Nom entier du jour de la semaine (dimanche samedi)
jjjjj Identique au format "Date, Abrg"
jjjjjj Identique au format "Date, Complet"
e Jour de la semaine (1 7)
ee Semaine de l'anne (1 53)
m Mois de l'anne (1 12)
Cours ACCESS
Page 27 sur 47
mm Mois de l'anne sur 2 chiffres (01 12)
mmm Trois premires lettres du mois (jan dc)
mmmm Nom entier du mois (janvier dcembre)
t Trimestre (1 4)
A Jour de l'anne (1 366)
aa Deniers chiffres de l'anne (00 99)
aaaa Anne complte (0100 9999)
h Heure (0 23)
hh Heure sur 2 chiffres (00 23)
n Minutes (0 59)
nn Minutes sur 2 chiffres (00 59)
s Secondes (1 59)
ss Secondes sur 2 chiffres (00 59)
Ttttt Identique au format "Heure, Complet"
AM/ PM Heure sur 12 heures + AM ou PM
am/pm Heure sur 12 heures + am ou pm
A/ P Heure sur 12 heures + A ou P
a/ m Heure sur 12 heures + a ou p
AMPM
Heure sur 12 heures + indicateur matin/aprs-midi dfini dans le
panneau de configuration

Cours ACCESS
Page 28 sur 47

Format daffichage des dates / heures dans Windows

Pour dfinir le format d'affichage par dfaut dans Windows, allez dans le panneau de configuration et
double cliquez sur l'icne "paramtres rgionaux" (une plante habituellement) :


Il y a deux onglets : Date et Heure qui dfinissent comment vont s'afficher la date et l'heure dans tous
les logiciels Windows.
Cours ACCESS
Page 29 sur 47

Pour les champs de type OUI / NON

Access propose pour ce type de champ, trois types d'affichage par dfaut : la place de OUI ou NON,
on peut afficher "Vrai" ou "Faux" ou alors "Actif" ou "Inactif", si on veut afficher un autre message, il
faut dans le champ format de la proprit du champ taper la commande suivante :

;"texte 1";"texte 2"

"texte 1" sera affich la place de Oui et "texte 2" la place de Non.

On peut, bien sur, utiliser des codes d'affichages supplmentaires, par exemple :

;"OK"[vert];"NON"[Rouge]

affichera OK en vert la place de Oui et NON en rouge la place de Non.

N'oubliez pas que la ligne commence par le symbole ";"



3.5 Le Masque de saisie

Le masque de saisie permet de faciliter la saisie dans un champ en forant l'utilisateur entrer les
donnes selon un format dtermin, les informations stockes dans la table auront le format dfini dans
le masque de saisie contrairement au format d'affichage qui affectait seulement la faon dont les
donnes contenues dans un champ allaient tre affiches.

Le masque de saisie, comme le format d'affichage est constitu d'une combinaison de caractres :

Symbole Signification
0 Chiffre de 0 9 obligatoire
9 Chiffre ou espace facultatif
# Chiffre ou espace ou + ou -
L Lettre de A Z obligatoire
? Lettre de A Z non obligatoire
A Lettre ou chiffre obligatoire
a Lettre ou chiffre facultatif
& Caractre quelconque obligatoire
C Caractre quelconque facultatif
< Passe en minuscules
> Passe en majuscules
! Saisie partir de la droite

Par exemple, si on veut saisir 5 chiffres obligatoirement pour un code postal, on utilisera : 00000, si on
veut saisir une suite de 3 chiffres et de 3 lettres : 000LLL, si on veut saisir un numro de tlphone :
00-00-00-00-00, ou un nom de famille dont la premire lettre est toujours en majuscules :
>L<????????????? (prvoir autant de ? que le nom peut comporter de lettres)
Cours ACCESS
Page 30 sur 47
3.6 Les Listes de choix

Nous avons vu prcdemment que parmi les types de donnes est propos un type de donnes particulier :
la liste de choix, la liste de choix n'est pas proprement parler un type de donnes particulier, c'est un
moyen de simplifier la saisie de donnes dans une table en proposant l'utilisateur de cliquer sur un
lment propos dans une liste, le champ de la table sera rempli avec l'lment slectionn dans la liste.

Pour pouvoir tester cela, nous allons crer la table "Commandes"



Elle doit ressembler a.

Nous allons maintenant retourner dans la table client et modifier le type de donnes du champ "Titre", Le
champ "Titre" va contenir le titre du client : Monsieur, Madame, Mademoiselle. Au lieu de saisir chaque
fois le mot en entier, nous allons crer une liste de choix qui proposera ces trois titres, il suffira de cliquer
sur l'un d'entre eux pour remplir automatiquement le champ.
Cours ACCESS
Page 31 sur 47

Aprs avoir choisi le type "Liste de Choix" pour le champ "Titre", la fentre suivante s'affiche


Il y a deux faons de crer une liste de choix : soit a partir du contenu d'une autre table (ce que nous verrons
aprs), soit partir d'une liste que l'on va taper soi-mme une fois pour toutes, c'est ce que nous allons choisir.
(Cliquez ensuite sur Suivant)



On va taper dans la colonne Col1 la liste des titres possibles et cliquer sur Suivant une fois termin.




Cours ACCESS
Page 32 sur 47

On nomme ici la liste de choix (peu importe le nom choisi) et on clique sur "Terminer"

Maintenant, pour voir le rsultat, nous allons saisir des donnes dans la table "Clients", dans la fentre o se
trouve la liste des tables, on clique sur "Ouvrir", on arrive alors sur un tableau qui ressemble a :


Il y a une ligne par enregistrement, et une colonne par champ, on se positionne sur le champ dsir en cliquant
dessus et on saisi directement les donnes.


Et que se passe-t-il lorsqu'on clique sur "Titre" ? La liste de choix apparat, on peut choisir ici un des titres
proposs en cliquant dessus directement.
Cours ACCESS
Page 33 sur 47

On peut voir que "Monsieur" a t entr directement dans le champ "Titre".

On va ainsi crer plusieurs clients :


Une fois ces clients saisis, nous allons aller modifier le type de donnes du champ "N Client" de la table
commande pour y mettre une liste de choix.
Pourquoi ? Une commande contient le numro du client qui l'a pass, lorsque l'on saisi une commande et qu'on a
que le nom du client, il faut se souvenir de son numro pour le taper, la liste de choix va ici proposer la liste de
tous les clients se trouvant dans la table "Clients", il suffira de cliquer sur le nom de l'un d'entre eux pour que son
numro soit automatiquement entr dans le champ "N Client" de la table "Commande".
Cours ACCESS
Page 34 sur 47

Voici comment faire :




On change le type de donnes du champ "N Client" dans la table "Commande" et on choisit "Liste de Choix".
Cette fois -ci, nous n'allons pas saisir tous les lments de la liste, a naurait pas de sens, il faudrait remodifier
cette liste chaque fois quon ajoute un nouveau client. Nous allons dire Access de construire sa liste de choix
en allant chercher les lments de cette liste dans une autre table, pour a on clique juste sur "Suivant".

Access nous affiche les autres tables de la base :


On choisit "Clients" (!) et on clique sur Suivant

Cours ACCESS
Page 35 sur 47

Access nous demande ici quels vont tre les champs de cette table qui vont tre affichs dans la liste, nous
n'avons besoin que du numro du client, de son nom et de sa ville (au cas o il y aurait deux clients
homonymes). On slectionne gauche les champs que l'on dsire voir apparatre dans la liste, et on clique sur
">" pour les ajouter, sur "<" pour les retirer, ">>" et "<<" ajoutent et retirent tous les champs.




Access affiche un exemple du contenu de la liste. Vous pouvez ici dimensionner la taille des colonnes.

Cours ACCESS
Page 36 sur 47


Nous avons choisi d'afficher trois champs de la table "Clients" dans notre liste de choix, Access nous demande
lequel de ces trois champ va servir initialiser le champ "N Client" de la table "Commande", il est clair que
nous voulons que le champ "N Client" de la table "Commande" soit initialis avec le n de client du client que
nous aurons slectionn dans la liste, on choisit donc "n Client" et on clique sur Suivant, on nomme ensuite la
liste, et on peut commencer saisir des commandes :





Que se passe-t-il lorsqu'on se positionne sur le n de client ?
Access va lire toute la table "Clients", et crer une liste de choix partir de cette table. Cette liste contient les
champs que nous lui avons indiqu. Il suffit de slectionner un client dans la liste, et comme nous lui avons dit
d'initialiser le champ N Client de la table "Commande" avec la premire colonne de la liste de choix, son
numro sera automatiquement copi.


Cours ACCESS
Page 37 sur 47


C'est beau non ?
Cours ACCESS
Page 38 sur 47
3.6 La saisie des enregistrements

Jusqu' prsent, nous avons saisi rapidement des enregistrements dans les tables, attardons nous sur la saisie et
les recherches / filtres .



Pour se dplacer parmi les enregistrements de la table, on utilise les icnes flchs en bas gauche de la fentre
de saisie:













Pour supprimer un enregistrement, on clique gauche de la ligne




et on appuie sur la touche "Suppr", Access vous demande alors une confirmation.
Crer un nouvel enregistrement
Aller sur le dernier enregistrement
Aller sur l'enregistrement suivant
Aller sur le 1
er
enregistrement
Aller sur
l'enregistrement
prcdent
Cours ACCESS
Page 39 sur 47
Deux petits trucs avant d'en finir avec la saisie de donnes dans les tables :

On peut cacher une colonne, pour a, on va dans le menu "Format", et on clique sur l'option "Afficher les
colonnes..."



La liste des champs (colonnes) de la table s'affiche, vous slectionnez celles que vous voulez voir apparatre,
celles que vous n'avez pas slectionn disparatront de l'affichage quand vous cliquerez sur "Fermer".

Attention, ca les fait juste disparatre de l'affichage pour la saisie, en aucun cas, le champ en question va tre
supprim de la structure de la table.
Cours ACCESS
Page 40 sur 47

Autre truc interessant, on peut "figer" une colonne, quoi a sert ? Si pendant la saisie nous voulons avoir en
permanence le numro client , nous allons slectionner la colonne en question en cliquant sur son titre :



Une fois la colonne slectionne, on va dans le menu "Format" et on clique sur "Figer les colonnes".
Que se passe-t-il maintenant ? Quand on va dplacer l'ascenseur en bas pour modifier un des champs de
l'enregistrement, la colonne "N Client" sera toujours visible :



Cours ACCESS
Page 41 sur 47
Si la colonne n'tait pas fige, on aurait eu :



La colonne "N Client" a boug quand on a dplac l'ascenseur, lorsqu'elle tait fige, elle tait bloque.
Pour autoriser le dplacement de toutes les colonnes et annuler l'option "Figer les colonnes", dans le menu
"Format", cliquez sur l'option "Librer les colonnes".

Cours ACCESS
Page 42 sur 47
3.7 Tri parmi les enregistrements

Pour trier la table sur un champ, on se positionne sur le champ en question (peu importe l'enregistrement) et on
utilise un des deux icnes de la barre d'outils :


Celui de gauche permet le tri alphabtique croissant et celui de droite le tri alphabtique dcroissant.

Exemple :



Ceci est l'tat de notre table aprs l'avoir tri de faon croissante sur le champ "Nom"
Cours ACCESS
Page 43 sur 47

3.8 Filtrer des enregistrements

Les filtres permettent de limiter, de faon temporaire, les enregistrements affichs dans la table. On peut filtrer
selon deux mthodes :

Le filtre sur un seul critre :

Par exemple, on ne veut afficher que les clients qui habitent Paris.
Pour cela, on se positionne sur l'enregistrement d'un client habitant Paris, et on slectionne le mot
"Paris" dans le champ "Ville":



Puis on clique sur l'icne du filtre dans la bote outils :





Ne s'affichent prsent que les client habitant Paris. On peut aussi limiter le filtre une partie d'un
mot, par exemple, on aurait pu slectionner seulement la lettre "P" du mot "Paris", ne se seraient alors
affichs que les clients dont le nom de la ville commence par "P".

Pour faire rapparatre tous les enregistrements, on clique sur l'icne
Cours ACCESS
Page 44 sur 47
Filtre sur plusieurs critres

On clique sur l'icne :



Un enregistrement vide s'affiche.

Supposons que l'on veuille afficher les clients qui s'appellent "Machin" ou qui habitent Saint-Quentin.



On va cliquer sur "Machin", si on voulait afficher les clients qui s'appellent "Machin" et dont le prnom
est "Robert", on cliquerait sur "Robert" dans la colonne "Prnom".

Vous avez remarqu que, en bas, se trouvent deux onglets :



En cliquant sur l'onglet "Ou", vous obtenez un nouvel enregistrement vide dans lequel on va pouvoir
saisir les critres de notre deuxime condition, le but tant d'avoir les clients qui s'appellent "Machin"
OU qui habitent Saint-Quentin, dans le deuxime onglet, on va slectionner "Saint-Quentin" dans le
champ ville :



Au passage, notez qu'un troisime onglet est apparu au cas o on voudrait une troisime condition.

Une fois entre la deuxime condition, on clique sur :
Cours ACCESS
Page 45 sur 47
Et on obtient :



Soit la liste des clients dont le nom est soit "Machin" soit la ville est "Saint-Quentin".

Vous noterez au passage qu'on peut sauver son filtre multi critre sur disque en cliquant sur l'icne
disquette dans la fentre de filtre.


3.9 Rechercher des enregistrements

Pour faire une recherche, cliquez sur l'icne :



Rechercher
on indique la valeur chercher


Sens
Indique dans quel sens va se faire la recherche :
?? Tout : dans toute la table
?? Bas : partir de l'enregistrement courant jusque la fin de la table
?? Haut : partir du dbut de la table jusque l'enregistrement courant.


O
Sur quoi va se faire la recherche
?? Champ entier : La valeur cherche doit tre le contenu exact du champ
?? Dbut de champ : La valeur cherche est le dbut du champ
?? N'importe o : La valeur cherche peut se trouver n'importe o dans le champ

Respecter la
casse
Doit-on diffrencier les majuscules des minuscules ?


Rechercher les
champs comme
Formats :
Activez cette option si vous souhaitez qu'Access retrouve les donnes telles qu'elles sont
affiches dans la table (en utilisant la proprit "Format" du champ) ou telles qu'elles sont
stockes (c'est--dire telles qu'elles ont t saisies).
Par exemple : pour le code postal, on a dfini un format d'affichage : 00000 pour que si le
code postal commence par 0 (comme 02100), il soit affich correctement et pas sous la
forme 2100. Si on active l'option "Rechercher champs comme formats", on pourra
rechercher le code postal 02100, sinon, il faudra chercher le code postal 2100.
Champ en cours
Indique si la recherche doit s'effectuer uniquement dans le champ en cours ou dans tous
les champs de la table

Cours ACCESS
Page 46 sur 47
Par exemple, pour rechercher le client "Delune" :



On clique sur "Rechercher"


Access se positionne sur le premier enregistrement dont le contenu du champ "Nom" est "Delune"

Pour trouver le suivant, on clique sur "Suivant"



En l'occurence ici, il n'y en a pas d'autres, Access renvoie ce message.
Cours ACCESS
Page 47 sur 47

On peut faire des recherches approximatives, pour cela on utilise des caractres gnriques :

Caractre Signification
* Remplace une chane de valeur quelconque
? Remplace un seul caractre
# Remplace un chiffre unique
[ ] Recherche des caractres parmi plusieurs
! Exclu certains caractres de la recherche

Exemple :

La chane Permet de retrouver Mais ne retrouve pas
*rue
112 rue
Boulevard Machin

??rue
5 rue
8 rue
112 rue
##rue 10 rue La rue
DUPON[TD]
DUPONT
DUPOND
DUPONS
DUPON![TD] DUPONS
DUPOND
DUPONT

Prochain chapitre : les formulaires ...


Cours ACCESS Les requtes


Page 1 sur 17








1. Introduction................................................................................................. 2

2. Cration d'une requte.................................................................................. 2

3. Dfinition des critres de slection................................................................... 5
3.1 Oprateurs ............................................................................................. 5
3.2 Les Fonctions .......................................................................................... 6
3.3 Plusieurs critres portant sur des champs diffrents....................................... 7
3.4 Requte paramtre ................................................................................ 8

4. Les requtes multitables................................................................................ 9

5. Les fonctions de regroupement...................................................................... 10
5.1 Les oprations....................................................................................... 11
5.2 Quelques exemples ................................................................................ 12

6. Les requtes d'analyse croise...................................................................... 13

7. Les requtes ACTION................................................................................... 14
7.1 Les requtes Cration............................................................................. 14
7.2 Les requtes Ajout ................................................................................. 15
7.3 Les requtes Mise J our......................................................................... 16
7.4 Les requtes Suppression........................................................................ 17
Cours ACCESS Les requtes


Page 2 sur 17
LES REQUETES


1. I ntroduction

Les requtes vont servir afficher uniquement certaines donnes contenues dans les tables selon certains
critres. Elles peuvent aussi faire des calculs sur vos donnes, ainsi que crer des sources de donnes pour
les formulaires, les tats ou mme d'autres requtes (on peut faire une requte sur le rsultat d'une autre
requte). Elles servent encore modifier des tables existantes ou en crer des nouvelles.

Il existe diffrents types de requtes que nous allons dtailler aprs :

?? La requte slection : C'est celle qu'on utilisera le plus souvent. Elle permet de slectionner des
enregistrements, de faire des calculs et des regroupements. Elles ressemblent beaucoup aux filtres, mais
permettent, en plus, de travailler sur plusieurs tables simultanment.
?? La requte d'Analyse croise : Cette requte prsente ses rsultats sous forme de tableau (de type
Excel). On l'utilisera pour comparer des valeurs, dgager des tendances.
?? La requte de Cration de table : Cette requte cre une table partir des donnes qu'elle a extraites
dans une ou plusieurs autres tables.
?? La requte Mise J our : Cette requte modifie le contenu d'un ou plusieurs champs d'une ou
plusieurs tables. C'est le moyen le plus efficace pour mettre jour un grand nombre d'enregistrements
en une seule opration.
?? La requte Aj out : Cette requte ajoute les donnes qu'elle a extraites la fin d'une table dj
existante.
?? La requte Suppression : Cette requte supprime un ou plusieurs enregistrements dans une ou
plusieurs tables.

Les trois derniers types de requtes ne seront pas tudis :

?? La requte SQL direct
?? La requte de dfinition de donnes
?? La requte UNION


2. Cration d'une requte

Dans la fentre principale d'Access, cliquez sur l'onglet "Requtes", puis sur le bouton "Nouveau".



Cours ACCESS Les requtes


Page 3 sur 17
Access nous propose 5 faons de crer une requte :

?? Mode cration : nous allons crer la requte de A Z par nous-mmes
?? Assistant de Requte simple : Cre une requte simple sur une ou plusieurs tables, on pourra, dans
cette requte simple, faire des calculs, des regroupements.
?? Assistant de Requte d'analyse croise : Aide la cration d'une requte d'analyse croise
?? Assistant de Requte trouver les doublons : Localise les enregistrements doublons dans une table
ou une requte.
?? Assistant de Requte de non-correspondance : Localise les enregistrements d'une table auxquels
ne correspond aucun autre enregistrement d'une autre table. On peut, par exemple, utiliser un tel type de
requte pour localiser les clients qui n'ont pas pass de commande.


Comme nous ne reculons pas devant l'effort, nous allons crer les requtes par nous mme, nous cliquons
donc sur Mode Cration, puis, sur OK :



Access nous affiche la liste des tables de la base. Nous choisissons ici les tables sur lesquelles vont porter la
requte. Nous allons prendre pour exemple la requte "liste des clients habitant la ville
de Paris". La requte va donc porter sur la table "Clients", on la slectionne, et on clique sur "Ajouter",
comme il n'y a aucune autre table ajouter, on clique sur "Fermer".

Notez qu'on peut aussi faire porter la requte sur le rsultat d'une autre requte, dans ce cas, on choisira la
requte dans l'onglet "Requte".



Dans la partie suprieure de la fentre se trouvent la ou les tables avec la listes de leur champs, c'est sur ces
tables que vont porter les requtes. Dans la partie infrieure, se trouve la description de la requte.
Cours ACCESS Les requtes


Page 4 sur 17


Voici notre requte :

Nous avons un tableau compos de colonnes et de lignes, dans chaque colonne, on indique les champs qui
vont apparatre dans le rsultat de la requte ou qui vont servir dans la requte, ici on veut la liste des clients
habitant Saint-Quentin, on veut donc voir apparatre le champ Nom et le champ Prnom, le critre de la
requte va se faire sur le champ ville, on ajoute donc aussi ce champ.

Pour ajouter un champ, on peut, soit le slectionner dans la table et l'amener avec la souris sur une colonne,
soit on clique sur la ligne "Champ", la liste de tous les champs s'affiche alors et on en slectionne un dans la
liste. Un des champs propos sappelle '*', ce champ signifie "tous les champs de la table", si on choisi ce
champ, tous les champs de la table apparaitront dans le rsultat de la requte, en plus des autres champs que
vous aurez choisis.

La ligne "Table" sert selectionner la table laquelle appartient le champ slectionn, dans notre cas, il n'y
a qu'une table, le choix est vite fait.

La colonne "Tri" indique de quelle faon vont tre tris les champs dans le rsultat de la requte : il y a trois
sortes de tri : Croissant (de A Z), Dcroissant (de Z A) et non tri. On a choisi ici de trier le rsultat de la
requte par nom et par prnom de faon croissante. Le tri se fait toujours de gauche droite : le rsultat de la
requte sera d'abord tri par nom, puis par prnom.

La colonne "Afficher" indique si le champ doit tre affich ou non, ici on veut afficher le nom et le prnom
de chaque client habitant Saint-Quentin, mais on a pas besoin d'afficher, pour chaque client, la ville dans
laquelle il habite, puisqu'il s'agira toujours de Saint-Quentin, on a donc dselectionn l'affichage du champ
"Ville".

Enfin la colonne "Critres" va indiquer le critre de la requte, on veut la liste des clients habitant Sain-
Quentin, le critre est donc : le champ ville doit tre gal Saint-Quentin, d'o le critre = "Saint-Quentin".

Pour xecuter la requte, on clique sur l'icne :

Access affiche le rsultat :



Le rsultat de la requte s'affiche sous la forme d'une table que l'on peut modifier comme si il s'agissait
d'une table normale, on peut ajouter des enregistrements, les modifier, faire des filtres, des t ris, etc...
Cours ACCESS Les requtes


Page 5 sur 17

Attention : Les rsultats des requtes, mme si ils sont prsents sous forme de tables ne sont pas de
vritables tables quaurait gnr la requte. Ils ne sont qu'une "vue" faite partir des tables qui ont servi
faire la requte. Autrement dit, si vous modifiez quelque chose dans le rsultat de la requte, la modification
se repercutera dans la table qui a servi faire la requte, si on change ici le nom du client, la modification
sera reporte dans la table Clients, si on ajoute un client au rsultat de la requte, un nouvel enregistrement
va tre cre dans la table Clients, et en plus, cet enregistrement sera incomplt car seuls deux champs
auront pu tre saisis dans le rsultat de la requte (les champs nom & prnom).


3. Dfinition des critres de slection


3.1 Oprateurs


On peut utiliser dans les requtes les oprateurs suivants :

Oprateur Signification
= Egal
<> Diffrent
< Infrieur
> Suprieur
<= Infrieur ou gal
>= Suprieur ou gal

Access met notre disposition d'autres oprateurs :

Oprateur Signification Exemple
Entre Slectionne les enregistrements pour
lesquels la valeur d'un champ est
comprise dans un intervalle de
valeurs.
Entre "A" et "C"
Entre 10 et 20
Entre #01/01/99# et #31/12/99#
Dans Slectionne les enregistrements pour
lesquels la valeur d'un champ est
comprise dans une liste.
Dans ("Paris";"Saint-Quentin")
Est Slectionne les enregistrements pour
lesquels un champ est vide ou non
Est NULL
Est pas NULL
Comme Slectionne les enregistrements
contenant une donne approximative.
Comme "rue*"
Pas Slectionne les enregistrements ne
correspondant pas au critre
Pas Entre "A" et "C"

Cours ACCESS Les requtes


Page 6 sur 17

3.2 Les Fonctions

On peut intgrer des fonctions dans les critres de slection. Access met notre disposition un trs grand
nombre de fonctions (pour en avoir la liste complte, consultez l'aide intgre Access). Ce sont les mmes
fonctions que celles qui sont utiliss dans les contrles des formulaires (et dailleurs dans tous les logiciels
de la gamme Microsoft Office).

Par exemple, parmi ces fonctions, on trouve la fonction Mois ( ), qui on passe une date en paramtre, cette
fonction renvoie le mois de cette date, par exemple Mois (#10/2/98#) renvoie 2. Une autre fonction, Date ( )
renvoie la date du jour. On peut utiliser ces deux fonctions dans des critres de slection :

Par exemple, pour obtenir la liste des commandes du mois d'octobre :



Notez que pour faire rfrence au champ "Date de la commande" dans la fonction Mois ( ), on a crit le
champ entre crochets [ ]. On utilise les crochets lorsquon travaille avec un champ dont le nom comporte
des espaces. Par extension et par mesure de prcaution, on les utilisera avec tout type de champ.


Ou pour obtenir la liste des commandes passes il y a moins d'un mois :



Il existe un trs grand nombre de fonctions, pour en avoir la liste et la syntaxe, consultez l'aide intgre
Access.

Cours ACCESS Les requtes


Page 7 sur 17

3.3 Plusieurs critres portant sur des champs diffrents

On peut avoir plusieurs critres de slection, ces critres tant spars entre eux par des OU ou des ET, par
exemple : "liste des clients habitant Saint-Quentin OU Paris", "Liste des
clients s'appelant Dupont ET vivant Paris".

1- Liste des clients s'appelant Dupont et vivant Saint-Quentin



La requte ressemble la prcdente, sauf que l, il y a deux critres : le premier Nom = "Dupont" ET le
deuxime Ville = "Paris". Vous noterez au passage qu'il n'est pas ncessaire d'afficher le contenu du champ
"ville" puisqu'on sait que ce sera toujours Paris. Vous me direz que c'est la mme chose avec "Nom", certes,
mais c'est mieux d'avoir une liste de nom + prnom qu'une seule liste de prnom.

2- Liste des clients habitant Saint-Quentin OU Paris



Quelle est la diffrence ?

Les deux critres ne sont plus sur la mme ligne. Ils sont sur deux lignes spares. Le premier est sur la
ligne "Critres", le second sur la ligne "Ou". Si on avait voulu ajouter un troisime critre (Liste des clients
habitant Saint-Quentin OU Paris OU Lille), on aurait ajouter le critre = "Lille" sur une troisime ligne et
ainsi de suite.
Cours ACCESS Les requtes


Page 8 sur 17

En rgle gnrale :

?? Si deux critres sont spars par des ET, on les place sur la mme ligne.
?? Si deux critres sont spars par des OU, on les place sur des lignes diffrentes.


3.4 Requte paramtre

Pour l'instant, les critres de chaque requte que nous avons fait taient indiqus explicitement dans la
requte. Supposons maintenant que nous voulions faire une requte du type :

Liste de tous les clients qui habitent dans une ville mais quon veuille
entrer nous mme la ville.

On ne connat pas par avance la ville en question, et on ne va pas prparer autant de requtes qu'il peut y
avoir de villes (on n'est pas sorti de l'auberge), la solution la plus simple est alors de demander l'utilisateur
(l'utilisateur, c'est celui qui va utiliser votre requte plus tard) d'entrer la ville, et de faire la requte en
fonction de ce qu'il a entr.

Pour faire a, on procde ainsi :



Au lieu d'indiquer une ville, on a mis =[Entrez la ville]. Que va-t-il se passer lorsqu'on va excuter la
requte?

Habituellement, pour Access, tout ce qui est indiqu entre crochets est le nom d'un champ, si on avait mis
par exemple = [Nom], il aurait cherch les clients qui habitent une ville qui s'appelle comme leur nom. Or
ici, [Entrez la ville] n'est pas un nom de champ, Access ne sait donc pas ce que c'est, et il demande
l'utilisateur d'entrer la valeur de ce champ inconnu :



L'utilisateur va entrer ici la ville (notez que le message affich est ce qui tait indiqu entre crochets dans la
requte). Maintenant, chaque fois que Access va rencontrer dans la requte [Entrez la ville], il va le
remplacer par ce qu' saisi l'utilisateur. Si l'utilisateur a saisi Paris, Access va remplacer dans son critre
=[Entrez la ville] par = "Paris".
Cours ACCESS Les requtes


Page 9 sur 17
4. Les requtes multitables

Pour l'instant, nos requtes ne portaient que sur une seule table, il est possible de faire des requtes qui
portent sur plusieurs tables simultanment. Dans ce cas, les requtes peuvent tre trs complexes.

Par exemple, si nous voulons la liste des clients ayant command le produit n 1 :



Avec le bouton : , on affiche la liste des tables de la base.

On va choisir ici toutes les tables entrant en jeu pour pouvoir faire la requte. Ici on veut la liste des clients,
il faut donc la table clients. "ayant command", il faut donc la table commandes, "le produit n1", il faut
donc la table produits. Il faut aussi faire intervenir la table "Lignes-commandes".
Pourquoi ? parce que c'est elle qui fait la liaison entre la table commande et la table produits. De faon
gnrale, lorsqu'on fait une requte portant sur plusieurs tables, il faut respecter deux rgles :

?? Toutes les tables intervenant dans la requtes doivent tre relies entre elles, il ne doit pas y avoir de
tables isoles, sinon, Access va essayer de trouver lui-mme les relations entre ces tables isoles et
parfois le rsultat peut tre folkorique.

?? Il ne doit pas y avoir de tables n'ayant rien faire dans la requte, sinon, Access va se baser sur les
relations entre ces tables n'ayant rien voir avec la choucroute et celles ayant voir et va donner des
rsultats errons.

En rsum : toutes les tables ncessaires, mais pas plus.

Vous pouvez noter que, une fois les bonnes tables installes avec les bonnes relations entre elles, la requte
est fort simple, il suffit d'indiquer produits=1, et Access, grce aux relations, va retrouver la liste des clients
ayant command ce produit.

Cours ACCESS Les requtes


Page 10 sur 17
5. Les fonctions de regroupement


Jusqu' prsent, nos requtes nous permettaient de rpondre des questions du type : "Liste des clients
habitant Paris", "Liste des produits commands par le client 1". Grce aux fonctions de regroupement, nous
allons pouvoir rpondre des questions du type : "Combien de clients habitent Paris ?" ou
"Pour combien command chaque client ?".

Pour cela, cliquez sur le bouton :



Une nouvelle ligne "Opration" apparat dans la requte, c'est grce elle que nous allons faire nos
oprations.

1- Combien de clients habitent Paris



Qu'y-a-t-il de diffrent ?

Nous avons deux champs : nous allons compter le nombre de clients, chaque client a un numro, on insre
donc dans la requte le numro de client, c'est le nombre de ces numros que nous allons compter, il faut
qu'on compte les clients habitant Paris, d'o le deuxime champ Ville.

La diffrence est sur la ligne Opration :

Elle indique comment va se faire l'opration, si nous voulons compter, on va choisir l'opration "compte".
Dans tous les champs o il y a un critre de slection (ici Ville = "Paris"), on choisira l'opration o. Le
rsultat de la requte sera une table avec un unique champ, non modifiable, qui indiquera le nombre de
clients habitant Paris.

Cours ACCESS Les requtes


Page 11 sur 17

2- Montant command par chaque client



Ca se corse !

Ici, on veut, par client, la somme de ses commandes. A partir du moment o on veut un rsultat par
catgorie (une somme par client, un nombre de clients par ville, etc), il y a regroupement, ici on veut la
somme des commandes regroupes par clients, c'est pour a qu'on a choisi comme opration pour numro de
client "Regroupement".

Pourquoi a-t-on ajout le champ "nom" ? Simplement pour ne pas avoir une liste de numros avec un
montant correspondant. Pourquoi dans ce cas, n'a-t-on pas regroup les clients par leur nom au lieu de le
faire par numro et nom ? parce que plusieurs clients peuvent avoir le mme nom et qu'on ne veut pas
cumuler le montant des commandes par clients homonymes, on regroupe donc les clients par numro et
nom.

Enfin, le troisime champ : on veut la somme du montant des commandes : qu'est-ce qu'une commande ?
c'est une liste de prix unitaires * une quantit. A la place d'un champ, on indique donc qu'on veut les prix
unitaires * les quantits. La syntaxe est [nom de la table]![champ de la table], une commande, c'est donc
une liste de [produits]![prix unitaire] * [lignes_commandes]![quantit]. Et on veut la somme de toutes ces
commandes, on choisi donc l'opration "Somme".

5.1 Les oprations

En plus de la somme et de compte, il existe d'autres oprations possibles :

Opration Signification
Compte Compte le nombre de valeurs
Dernier Valeur du dernier enregistrement
Ecartype Ecart type
Max Valeur la plus leve
Min Valeur la plus faible
Moyenne Moyenne
Premier Valeur du permier enregistrement
Somme Total
Var Variance



Cours ACCESS Les requtes


Page 12 sur 17
5.2 Quelques exemples


Voici quelques exemples de requtes :

Nombre de clients nomms "Dupont" par ville




Liste des clients ayant command plus de 1000 F du produit 1



Cours ACCESS Les requtes


Page 13 sur 17
6. Les requtes d'analyse croise


Les requtes d'analyse croise permettent de rpondre des questions du type "qui command combien de
quoi ?". Elles retournent le rsultat sous forme d'un tableau comportant des champs en abscisse et en
ordonne, avec, dans chaque case la rponse notre question.

Exemple : Qui a command combien de quoi ?

Qui Qui
Quoi Combien Combien
Quoi Combien combien

L'en-tete "Qui" va contenir le nom des clients
L'en-tte "Quoi" va contenir la liste des produits
Et combien va donner, pour chaque client, le nombre de produits qu'il a command.

Comment procde-t-on ?

1. D'abord on cre une requte standard : pour cette requte nous avons besoin du nom dans la table
clients, du libell du produit dans la table produit et de la quantit command dans la table lignes-
commandes.
2. On transforme la requte en requte d'analyse croise en allant dans le menu "Requte" et en choisissant
"Analyse croise".
3. Une nouvelle ligne apparat dans la requte : la ligne "Analyse"
4. Dans cette ligne, on va indiquer si le champ qu'on a choisi va tre l'en-tte des colonnes, l'en-tte des
lignes ou la valeur contenue dans les cases du tableau.
5. L'Opration pour les en-ttes est toujours "Regroupement"
6. L'Opration pour les valeurs des cases dpend de ce qu'on cherche, ici on cherche le nombre de produits
achet, l'opration est donc "Somme"



Cours ACCESS Les requtes


Page 14 sur 17
7. Les requtes ACTI ON


Les requtes faites jusqu' prsent se contentent de retourner le rsultat d'une slection sous forme de table,
cette table, tant, selon le type de requte, modifiable. Il existe cependant d'autres types de requtes, les
requtes action, ces requtes vont permettre de :

?? Crer une table partir du rsultat d'une requte
?? Ajout des enregistrements une table partir des rsultats de la requte
?? Mettre Jour une table en fonction de certains critres
?? Supprimer des enregistrements rpondant aux critres de la requte


7.1 Les requtes Cration

Une requte cration cre une table partir des rsultats qu'elle produit partir d'une table existante.
Supposons que nous voulions crer une table "Commandes rgles" qui contiendrait la liste des commandes
dj rgles.

1. Crer la requte normalement : nous voulons la liste des commandes rgles :




2. On la transforme en requte Cration (Menu Requte / Requte Cration de table)

3. Access nous demande le nom de la table crer :



Attention, si vous slectionnez une table existante, la table va tre crase par cette opration
Cours ACCESS Les requtes


Page 15 sur 17

4. Excutez la requte avec l'icne point d'exclamation : la table va tre cre avec le rsultat de la requte.
Si vous vous voulez vrifier avant de crer la table quel sera le rsultat de la requte, cliquez sur l'icne:



Une fois que le rsultat sera conforme vos attentes, vous pourrez cliquer sur l'icne point
d'exclamation.


7.2 Les requtes Ajout

Une requte Ajout copie tout ou partie des enregistrements d'une table (la table source) la fin d'une autre
table (la table cible).

Toujours dans notre table "Commandes rgles", nous voulons ajouter les commandes qui ont t rgles
depuis la semaine dernire :

1. Cration de la requte normale :




2. On la transforme en requte Ajout (Menu Requte / Requte Ajout)

3. Access nous demande le nom de la table laquelle il faut ajouter le rsultat de la requte :



4. Comme prcdemment, avec les icnes Affichage et point d'exclamation, vrifiez et validez votre
requte.

Cours ACCESS Les requtes


Page 16 sur 17

Attention :

?? Les enregistrements sont COPIES de la table source vers la table cible et non pas dplacs.
?? Les deux tables doivent avoir des noms de champs identiques (et les mmes types de donnes), les deux
structures ne doivent pas ncessairement tre identiques.
?? Si la table source comporte plus de champs que la table cible, les champs supplmentaires sont ignors
?? Si la table source comporte moins de champs que la table cible, les champs dont les noms sont
identiques sont copis, les autres sont laisss vides.
?? Access ne copie QUE les champs que vous avez dclars dans la requte (d'ou le champ *)


7.3 Les requtes Mise J our


Les requtes mise jour permettent de modifier rapidement tous les enregistrements d'une table ou un
groupe d'entre eux :

Supposons que l'on veuille augmenter de 10% le prix des produits dont le prix actuel est infrieur 1000 F.

1. On cre une requte, et dans le menu Requte, on clique sur "Requte Mise Jour"

2. Un champ "Mise jour" apparat dans la requte, c'est l qu'on va indiquer la modification qui va avoir
lieu :



Dans la case Mise Jour, on a indiqu, qu' la place du prix unitaire, nous voulions [prix_unitaire]*1.1
(soit une augmentation de 10%), ceci pour les produits dont le prix est infrieur 1000 (critre).
Cours ACCESS Les requtes


Page 17 sur 17


7.4 Les requtes Suppression


Les requtes suppression vous permettent de supprimer un groupe d'enregistrements qui rpondent un
critre donn. Supposons que l'on veuille supprimer de la table commande toutes les commandes
rgles :

1. On cre une requte standard, puis dans le menu Requte, on clique sur Requte Suppression :



2. On excute la requte ou on vrifie avant que le rsultat est conforme ce que l'on attend.


Attention :

Vrifiez bien le rsultat avant d'excuter la requte, il n'est pas possible de revenir en arrire aprs
avoir effac des enregistrements.










Cours ACCESS
Page 1 sur 15


1. Qu'est-ce que SQL ?............................................................................................................... 2

2. La maintenance des bases de donnes...................................................................................... 2

2.1 La commande CREATE TABLE.......................................................................................................................... 3

2.2 La commande ALTER TABLE ............................................................................................................................ 4

2.3 La commande CREATE INDEX.......................................................................................................................... 4

3. Les manipulations des bases de donnes .................................................................................. 5

3.1 La commande INSERT........................................................................................................................................... 5

3.1.1 Prsentation & syntaxe....................................................................................................................................... 5
3.1.2 Insrer tout ou une partie d'un enregistrement ................................................................................................... 6
3.1.3 Insrer plusieurs enregistrements ou plusieurs parties d'enregistrements.......................................................... 7

3.2 La commande UPDATE......................................................................................................................................... 7

3.3 La commande DELETE......................................................................................................................................... 8

3.4 La commande SELECT .......................................................................................................................................... 9

3.4.1 Prsentation & Syntaxe ...................................................................................................................................... 9
3.4.2 Les oprateurs de condition ............................................................................................................................... 9
3.4.3 Oprateurs logiques.......................................................................................................................................... 10
3.4.4 Clauses IN et BETWEEN................................................................................................................................ 11
3.4.5 La clause LIKE................................................................................................................................................ 11
3.4.6 Les jointures ..................................................................................................................................................... 12
3.4.7 Supprimer les doubles avec DISTINCT.......................................................................................................... 12
3.4.8 Les fonctions d'ensemble................................................................................................................................. 13
3.4.9 La clause GROUP BY..................................................................................................................................... 13
3.4.10 Les sous-requtes ............................................................................................................................................. 14
3.4.11 Les UNIONs.................................................................................................................................................... 15

4. Les commandes de contrle des bases de donnes ...................................................................15
Cours ACCESS
Page 2 sur 15

SQL

Jusqu' prsent, nous avons vu comment crer une requte en utilisant la fentre requte d'ACCESS. Il existe une
autre faon de faire les requtes : en passant directement par le langage SQL. D'ailleurs, ACCESS utilise aussi ce
langage pour faire ses requtes, il traduit ce que vous avez entr en SQL, puis excute la requte SQL.

1. Qu'est-ce que SQL ?


SQL est un langage de manipulation de bases de donnes mis au point dans les annes 70 par IBM. Il permet,
pour rsumer, trois types de manipulations sur les bases de donnes :

?? La maintenance des tables : cration, suppression, modification de la structure des tables.
?? Les manipulations des bases de donnes : Slection, modification, suppression d'enregistrements.
?? La gestion des droits d'accs aux tables : Contrle des donnes : droits d'accs, validation des modifications.

L'intrt de SQL est que c'est un langage de manipulation de bases de donnes standard, vous pourrez l'utiliser
sur n'importe quelle base de donnes, mme si, priori, vous ne connaissez pas son utilisation. Ainsi, avec SQL,
vous pouvez grer une base de donnes Access, mais aussi Paradox, dBase, SQL Server, Oracle ou Informix par
exemple (les bases de donnes les plus utilises).

Attention : Le langage SQL a souvent t implment de faon diffrente. Les commandes de base sont toujours
les mmes mais ont parfois des variantes ou des extensions. La version de SQL implmente dans Access peut
parfois tre un peu diffrente de la version ANSI qui est la version standardise.


2. La maintenance des bases de donnes

La premire srie de commandes sert la maintenance de la base de donnes : cration des tables et des indexes,
modification de la structure d'une table ou suppression d'une table ou d'un index.

Attention : La maintenance des bases de donnes dpend troitement de la base de donnes utilise, notamment
en ce qui concerne les types de donnes, vrifiez donc toujours les types de donnes supports par votre SGBD
avant de crer une table avec SQL. Il se peut qu'il en supporte plus que ceux indiqus plus bas.

SQL dispose pour cela des instructions suivantes :

?? ALTER TABLE
?? CREATE TABLE
?? CREATE INDEX
Cours ACCESS
Page 3 sur 15

2.1 La commande CREATE TABLE


La commande CREATE TABLE permet de crer une table dans la base de donnes courante.
Sa syntaxe est la suivante :

CREATE TABLE table
(champ type CONSTRAINT champ proprits, ... );

Paramtre Signification
Champ Nom du champ
Type Type de donnes, dans la plupart des versions de SQL, vous aurez droit
aux types de donnes suivants :

?? Char(x) : chane de caractres, x est le nombre maximum de
caractres autoriss dans le champ.
?? Integer : Nombre entier, positif ou ngatif
?? Decimal (x,y) : Nombre dcimal, x est le nombre maximum
de chiffres et y le nombre maximum de chiffres aprs la virgule.
Decimal ne fonctionne pas avec Access, il ne supporte que le type
'float' (flottant), le type float ne permet pas d'indiquer le nombre de
chiffres aprs ou avant la virgule
?? Date : Une date et/ou heure
?? Logical Deux valeurs possibles : oui / non

proprits Proprits du champ :

?? NULL ou NOT NULL : autorise ou non que le champ puisse tre
vide.
?? UNIQUE : indique que deux enregistrements ne pourront avoir la
mme valeur dans ce champ.
?? PRIMARY KEY : indique que ce champ est la clef primaire
?? CHECK (condition) : quivaut la proprit "ValideSi"
d'Access, va forcer SQL a faire une vrification de la condition avant
de valider la saisie, exemple : CHECK (prix > 100) interdira la saisie
dans ce champ si la valeur contenue dans le champ prix est infrieure
100.
CHECK ne fonctionne pas avec Access.
?? DEFAULT = valeur, place une valeur par dfaut dans le champ
(ne fonctionne pas avec Access)
DEFAULT ne fonctionne pas avec Access



Exemple : Crer la nouvelle table "table_test" contenant deux champs : un champ avec un entier qui
doit toujours tre saisi et un champ contenant une chane de 5 caractres :






CREATE TABLE table_test (champ1 integer CONSTRAINT champ1 NOT
NULL, champ2 char(5));

Cours ACCESS
Page 4 sur 15



2.2 La commande ALTER TABLE


La commande ALTER TABLE permet de modifier la structure d'une table, sa syntaxe est la suivante :

2.2.1 ALTER TABLE table
Action (spcifications du champ);

ALTER TABLE permet trois actions, ces actions sont :

?? ADD Ajoute un champ a une table
?? DROP Supprime un champ d'une table
?? MODIFY Modifie les caractristiques d'un champ

Aprs l'action, on indique, entre parenthses, les spcifications du champ de la mme faon que pour la
commande CREATE TABLE. On ne peut faire qu'une action la fois (ajout, suppression ou
modification dans la mme commande).

Exemple :

Ajout d'un champ Date :




Suppression du champ2 :





2.3 La commande CREATE I NDEX


La commande CREATE INDEX permet de crer un index sur une table, sa syntaxe est :

CREATE UNIQUE INDEX nom_index
ON table (liste de champs);

Pour vous souvenir ce qu'est un index, retournez voir le chapitre 1.

Nom_index est le nom de l'index, table est le nom de la table.

Nous avons vu dans le chapitre 1 qu'un index peut tre compos d'un ou de plusieurs champs, la liste de
ces champs est indique entre parenthses aprs le nom de la table.
Enfin, la clause UNIQUE indique SQL si l'index cr va tre unique ou s'il peut contenir plusieurs fois
la mme valeur dans la table, s'il peut contenir plusieurs fois la mme valeur, il ne faudra pas ajouter la
clause UNIQUE.

Exemple : cration d'un index sur le champ1





ALTER TABLE table_test ADD champ3 Date;

ALTER TABLE table_test DROP champ2;
CREATE UNIQUE INDEX index1 ON table_test (champ1);

Cours ACCESS
Page 5 sur 15


3. Les manipulations des bases de donnes

Une fois les tables cres, on peut commencer y insrer des donnes, les mettre jour, les supprimer ou y faire
des requtes. Toutes ces oprations sont des oprations de manipulation des bases de donnes.

Pour effectuer ces manipulations, SQL dis pose de 5 instructions :

?? INSERT
?? UPDATE
?? DELETE
?? SELECT
?? CREATE VIEW (non utilis dans Access)


3.1 La commande I NSERT


3.1.1 Prsentation & syntaxe


La commande INSERT est utilise pour ajouter des enregistrements ou des parties d'enregistrements
dans des tables. Elle est utilise gnralement sous deux formes :

1
re
forme

INSERT
INTO table (champ1,champ2,...)
VALUES ('valeur1','valeur2',...);

Cette forme est utilise lorsqu'on veut insrer un seul enregistrement ou une partie d'un seul
enregistrement. On crera un nouvel enregistrement dont le contenu du champ1 sera valeur1, le contenu
du champ2 sera valeur2, etc...

2
me
forme

INSERT
INTO table (champ1,champ2,...)
(requte);

Dans cette seconde forme, le rsultat de la requte va tre insr dans les champs indiqus de la table.
Cette mthode est utilise lorsque plusieurs enregistrements sont ajouts simultanment.

Dans les deux cas, les valeurs insres doivent correspondre au type de donnes du champ dans lequel
l'insertion va tre faite, on ne peut pas, par exemple demander l'insertion d'une chane de caractres dans
un champ de type numrique ou montaire. Les chanes de caractres doivent tre places entre
apostrophes ( ' ), les champs numriques ou vides (NULL) ne doivent pas tre placs entre apostrophes.

Cours ACCESS
Page 6 sur 15

3.1.2 I nsrer tout ou une partie d'un enregistrement


Si des valeurs doivent tre insres dans tous les champs de l'enregistrement de la table, la liste des
noms des champs n'a pas besoin d'tre explicitement indique dans la commande. Les valeurs des
champs insrer doivent cependant apparatre dans le mme ordre que les noms des champs lors de la
cration de la table, sans oublier un seul champ.
Faites attention en utilisant cette syntaxe, si la structure de la table change plus tard, la commande qui
tait bonne risque de ne plus fonctionner correctement. Il vaut mieux toujours indiquer explicitement le
nom des champs sur lesquels on veut agir.

La syntaxe est alors :

INSERT
INTO table
VALUES ('valeur1','valeur2','valeur3',...);

Par exemple, dans notre table Client, si nous voulons insrer un nouveau client, nous allons entrer :






La commande ci-dessus va insrer un enregistrement dans la table 'clients' avec les informations
suivantes : Le client 100, dont le titre est 'M.', dont le nom est 'Dupond', dont le prnom est 'Jean',
l'adresse est 'Rue de la paix', le code postal est 75000 et la ville est 'Paris'.

Notez que le numro de client, qui est un champ de type 'NumroAuto' a t indiqu explicitement. Lors
d'une cration d'un enregistrement avec une commande SQL, le numro automatique n'est pas toujours
gnr automatiquement, vrifiez les possibilits offertes par votre SGBD.

Notez aussi l'utilisation de NULL : Si on insre moins de valeurs de champ qu'il y a de champs dans la
table, soit on crit explicitement le nom des champs insrer, soit on insre la valeur NULL dans le
champ o il n'y a rien mettre, condition que la proprit du champ "NULL interdit" soit NON,
sinon, il y aura une erreur lors de la cration de l'enregistrement.

La syntaxe est : INSERT
INTO table (champ1, champ3)
VALUES ('valeur1','valeur 3');

Ou INSERT
INTO table
VALUES ('valeur1',NULL,'valeur3');

Dans notre exemple, le champ 'Observations' sa proprit "NULL interdit" NON, on n'est donc pas
oblig de saisir des observations, ce qui est le cas ici, on entre donc NULL, ce qui signifie Access que
le champ est vide.
INSERT
INTO Clients
VALUES (100,'Mr','Dupond','Jean','rue de la paix',75000,
,'Paris',NULL);
Cours ACCESS
Page 7 sur 15


3.1.3 I nsrer plusieurs enregistrements ou plusieurs parties d'enregistrements

On peut insrer simultanment plusieurs enregistrements ou parties d'enregistrements dans une table.
Dans ce cas, les donnes insres vont tre rcupres dans une ou plusieurs autres tables.
Par exemple, si nous voulons placer dans une table nomme "Clients_stq" les clients habitant Saint-
Quentin, nous allons procder ainsi :

1) Crer une table "Clients_stq" avec Access, nous allons supposer que cette table comporte 3
champs: le nom, le prnom et l'adresse.

2) Taper la commande :

INSERT
INTO Clients_stq(nom,prenom,adresse)
(SELECT nom,prenom,adresse
FROM Clients
WHERE ville='Saint-Quentin')

La partie entre ( ) est une requte SQL, nous verrons cela en dtail plus bas, elle va slectionner les
champs nom, prnom et adresse de la table Client pour les enregistrements dont la ville est "Saint-
Quentin". Le rsultat de cette requte va tre insr dans la table Clients_stq.

La commande INSERT INTO avec requte ne dplace pas les enregistrements de la table "Clients"
vers la table "Clients_stq", elle se contente de faire une copie. Pour effacer les enregistrements de la
table Clients, nous utiliserons la commande DELETE.



3.2 La commande UPDATE


La commande UPDATE est utilise pour changer des valeurs dans des champs d'une table.
Sa syntaxe est :

UPDATE table
SET champ1 = nouvelle_valeur1,
champ2 = nouvelle_valeur2,
champ3 = nouvelle_valeur3
WHERE condition;

La clause SET indique quels champs de la table vont tre mis jour et avec quelles valeurs ils vont
l'tre. Les champs non spcifis aprs la clause SET ne seront pas modifis.

Par exemple, si nous voulons, dans la table produit, modifier le prix d'un produit dont le nom est
"prod1", nous taperons :







UPDATE produits
SET prix_unitaire = 1000
WHERE libelle = 'prod1';

Cours ACCESS
Page 8 sur 15
La commande UPDATE affecte tous les enregistrements qui rpondent la condition donne dans la
clause WHERE. Si la clause WHERE est absente, tous les enregistrements de la table seront affects.

Par exemple, si nous tapons :

UPDATE produits
SET prix_unitaire = 1000;

Le prix unitaire de TOUS les produits de la table produit va tre modifi.

Tout comme la commande INSERT, la commande UPDATE peut contenir une requte. Dans ce cas la
syntaxe est la suivante :

UPDATE table
SET champ1 = nouvelle_valeur1,
champ2 = nouvelle_valeur2,
champ3 = nouvelle_valeur3
WHERE condition =
(requte);

La requte est une requte faite avec la commande SELECT.


3.3 La commande DELETE

Pour supprimer des enregistrements d'une table, utilisez la commande DELETE. La syntaxe est la
suivante :

DELETE
FROM table
WHERE condition;

On ne peut pas supprimer seulement le contenu de quelques champs des enregistrements. La commande
DELETE supprime des enregistrements entiers, c'est pour cela qu'il n'est pas ncessaire d'indiquer ici
des noms de champs. La condition spcifie aprs WHERE va dterminer quels sont les enregistrements
supprimer.

Par exemple, pour supprimer tous les clients dont la ville est Saint-Quentin :






Pour supprimer tous les enregistrements d'une table, n'indiquez pas de clause WHERE :

DELETE FROM table;

Cette variante de la commande DELETE ne supprime pas la table, elle supprime seulement les
enregistrements contenus dans cette table et laisse une table vide.

On peut aussi, comme prcdemment utiliser une requte qui servira dterminer la condition de la
suppression. La syntaxe est la suivante :

DELETE
FROM table
WHERE condition =
( requte );

DELETE
FROM Clients
WHERE ville='Saint-Quentin';

Cours ACCESS
Page 9 sur 15
3.4 La commande SELECT


3.4.1 Prsentation & Syntaxe

La commande SELECT est la commande la plus complexe de SQL. Cette commande va servir faire
des requtes pour rcuprer des donnes dans les tables. Elle peut tre associe une des commandes de
manipulation de tables vues avant pour spcifier une condition.

Sa syntaxe est :

SELECT champ1, champ2, champ3, ...
FROM table;

S'il y a plus d'un champ spcifi aprs SELECT, les champs doivent tre spars par des virgules.
Les champs sont retourns dans l'ordre spcifi aprs la clause SELECT, et non pas dans l'ordre qu'ils
ont t crs dans la table.

Par exemple :

Pour slectionner les champs "prnom" et "nom" de tous les enregistrements de la table Clients :





Va renvoyer les prnom et nom de tous les clients de la table Clients.

Si on veut rcuprer tous les champs des enregistrements slectionns, la syntaxe est la suivante :

SELECT *
FROM table;

Les clauses SELECT et FROM doivent obligatoirement apparatre au dbut de chaque requte, on peut,
ensuite, indiquer des critres de slection avec la clause WHERE :

SELECT *
FROM table
WHERE condition;

Par exemple, pour slectionner tous les Clients de la table "Clients" dont le code postal est 75000 :







3.4.2 Les oprateurs de condition

On peut utiliser les oprateurs suivants dans les conditions :

Oprateur Signification
= Egal
<> Diffrent (parfois not aussi != )
< Infrieur
> Suprieur
<= Infrieur ou gal
>= Suprieur ou gal
SELECT prnom,nom
FROM clients

SELECT *
FROM Clients
WHERE code_postal = 75000;

Cours ACCESS
Page 10 sur 15

Pour slectionner tous les articles dont le prix est suprieur 100 F :







3.4.3 Oprateurs logiques

Il est possible de combiner plusieurs conditions avec des oprateurs logiques :

L'oprateur AND runit deux ou plusieurs conditions et slectionne un enregistrement seulement si cet
enregistrement satisfait TOUTES les conditions listes. (C'est--dire que toutes les conditions spares
par AND sont vraies). Par exemple, pour slectionner tous les clients nomms 'Dupond' qui habitent
Saint-Quentin :








L'oprateur OR runit deux conditions mais slectionne un enregistrement si UNE des conditions listes
est satisfaite. Par exemple, pour slectionner tous les clients nomms 'Dupond' ou 'Durant' :








AND et OR peuvent tre combins :






Nous slectionnons ici les clients nomms "Dupond" qui habitent soit Saint-Quentin, soit Paris.
Pourquoi avons-nous plac des parenthses ? Pour rsumer, on peut dire que l'oprateur AND a une plus
grande priorit que l'oprateur OR. Ce qui signifie que SQL va d'abord slectionner les conditions
spares par des AND, puis celles spares par des OR, si on avait omis les parenthses ici, SQL aurait
cherch les clients nomms "Dupond" vivant Saint-Quentin ou les clients habitant Paris, ce qui n'est
pas le but recherch. Pour gnraliser, mettez toujours des parenthses pour bien sparer vos conditions.
SELECT *
FROM Clients
WHERE prix_unitaire > 100;

SELECT *
FROM Clients
WHERE nom = 'Dupond' AND ville = 'Saint-Quentin';

SELECT *
FROM Clients
WHERE nom = 'Dupond' OR nom = 'Durant';

SELECT *
FROM Clients
WHERE nom = 'Dupond' AND (ville = 'Saint-Quentin' OR ville =
'Paris');

Cours ACCESS
Page 11 sur 15


3.4.4 Clauses I N et BETWEEN


Pour slectionner des enregistrements dont la valeur d'un champ peut tre comprise dans une liste ou
entre deux valeurs, on utilise les clauses IN et BETWEEN.

Par exemple : Pour slectionner les clients vivant Saint-Quentin ou Paris :






Ou pour slectionner les produits dont le prix est compris entre 100 et 1000 F :







Pour slectionner les produits dont le prix n'est pas dans cet intervalle :







De la mme faon, NOT IN slectionne les enregistrements exclus de la liste spcifie aprs IN.

Notez que NOT a une priorit plus grande que AND :
NOT Condition1 AND Condition2 slectionnera les enregistrements ne satisfaisant pas la condition1 et
satisfaisant la condition2, alors que NOT (Condition1 AND Condition2) slectionnera les
enregistrements ne satisfaisant pas les deux conditions 1 et 2. Une fois de plus, n'hsitez pas mettre
des parenthses !


3.4.5 La clause LI KE

La clause LIKE permet de faire des recherches approximatives sur le contenu d'un champ. Par exemple,
pour slectionner les clients dont le nom commence par la lettre D :







Tout comme dans les requtes Access, le symbole * remplace un ensemble de caractres, pour
reprsenter tous les noms commenant par S, on utilisera 'S*', tous ceux se terminant par S, on utilisera
'*S', et tous ceux comportant la lettre S : '*S*'. Le symbole ? ne remplace qu'un seul caractre. Si on a
deux clients nomms Dupond et Dupont, on utilisera 'Dupon?'.

Attention : certaines versions de SQL n'utilisent pas les caractres * et ? mais d'autres caractres
spcifiques, certaines versions utilisent notamment le caractre % la place de *. Consultez donc la
documentation de votre SGBD.

SELECT *
FROM Clients
WHERE ville IN ('Saint-Quentin', 'Paris');

SELECT *
FROM Produits
WHERE prix_unitaire BETWEEN 100 AND 1000;

SELECT *
FROM Produits
WHERE prix_unitaire NOT BETWEEN 100 AND 1000;

SELECT *
FROM Clients
WHERE nom LIKE 'S*';

Cours ACCESS
Page 12 sur 15
3.4.6 Les jointures

La jointure va nous permettre de slectionner des informations dans plusieurs tables grce aux relations
existant entre ces tables. Il va nanmoins falloir indiquer comment se fait la relation entre ces tables.

Par exemple : rcuprer le nom et le prnom du client ayant pass la commande n1 :






La clause WHERE indique que le numro de commande doit tre gal 1 et que la jointure va se faire
sur le numro de client : une fois que SQL va trouver la commande n 1 dans la table commande, il va
prendre le numro de client contenu dans l'enregistrement et avec ce numro, aller chercher dans la
table Clients le nom et le prnom correspondants ce numro.

Notez que lorsqu'on utilise plusieurs tables, il faut faire attention que deux tables n'aient pas de champs
ayant le mme nom, si c'est le cas, et pour les diffrencier, on utilise, comme dans l'exemple, la
notation: table.nom_du_champ. Si on est sur que le nom ne se retrouvera pas dans plusieurs tables, on
peut l'utiliser sans le prfixer avec le nom de la table.

3.4.7 Supprimer les doubles avec DI STI NCT

Supposons que nous voulions la liste des clients ayant achet quelque chose. Nous voulons que chaque
client ayant achet quelque chose ne soit affich qu'une seule fois nous ne voulons pas savoir ce qu'a
achet chaque client nous voulons juste connatre les clients qui ont achet quelque chose. Pour cela,
nous allons devoir dire SQL de supprimer les doubles du rsultat de la slection pour n'afficher les
clients qu'une seule fois. Pour cela, nous allons utiliser la clause DISTINCT.

Nous allons d'abord faire une jointure entre les tables Clients et Commande, et ajouter la clause
DISTINCT sur le champ ou la rptition peut se produire :






Si on excute cette requte directement, SQL va nous renvoyer une liste des numros, prnom et nom
correspondants aux noms et prnoms des clients ayant pass chaque commande, il est clair qu'un client
ayant pass plusieurs commandes va se retrouver plusieurs fois dans cette liste.







En indiquant la clause DISTINCT avant le champ num_client, on indique SQL qu'on ne veut pas voir
apparatre plusieurs fois un client ayant ce numro dans la slection renvoye.

On peut mme rendre le rsultat de la slection plus agrable la lecture en utilisant la clause
ORDERBY :






La slection renvoye va tre classe alphabtiquement d'abord sur le nom, puis sur le prnom.
SELECT nom, prnom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client AND num_commande = 1;

SELECT Client.num_client,nom, prnom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client;

SELECT DISTINCT Clients.num_client,nom, prnom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client AND num_commande = 1;

SELECT nom, prnom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client AND num_commande = 1
ORDER BY nom,prnom;

Cours ACCESS
Page 13 sur 15

3.4.8 Les fonctions d'ensemble

SQL a cinq fonctions importantes : SUM, AVG, MAX, MIN et COUNT. On les appelle fonctions
d'ensemble parce qu'elles rsument le rsultat d'une requte plutt que de renvoyer une liste
d'enregistrements.

Fonction Signification
SUM ()
Donne le total d'un champ de tous les enregistrements satisfaisant la condition de la
requte. Le champ doit bien sur tre de type numrique
AVG ()
donne la moyenne d'un champ de tous les enregistrements satisfaisant la condition de
la requte
MAX ()
donne la valeur la plus leve d'un champ de tous les enregistrements satisfaisant la
condition de la requte
MIN ()
Donne la valeur la plus petite d'un champ de tous les enregistrements satisfaisant la
condition de la requte.
COUNT (*) Renvoie le nombre d'enregistrements satisfaisant la requte.

Exemples :




Va retourner le prix le plus petit de la table Produit, le prix le plus lev et le prix moyen.






Va retourner le nombre de produits dont le libell commence par la lettre 'P'.

3.4.9 La clause GROUP BY


Une des utilisations les plus courantes de la clause GROUP BY est son association avec une fonction
d'ensemble (le plus souvent COUNT, pour compter le nombre d'enregistrements dans chaque groupe).
Par exemple, si nous voulons la liste des vendeurs, avec pour chaque vendeur le nombre de ventes qu'il
a fait :






On peut ajouter une condition la requte, par exemple, la liste des vendeurs avec leur nombre de vente
pour le mois de janvier.






On utilisera pour cela la clause HAVING.

SELECT
MIN(prix_unitaire),MAX(prix_unitaire),AVG(prix_unitaire)
SELECT COUNT (*)
FROM Produits
WHERE libelle LIKE 'P*';
SELECT num_vendeur,COUNT (*)
FROM Commandes
GROUP BY num_vendeur;

SELECT num_vendeur,COUNT (*)
FROM Commandes
GROUP BY num_vendeur
HAVING mois(date)=1;

Cours ACCESS
Page 14 sur 15
3.4.10 Les sous- requtes


On peut imbriquer autant de requtes que l'on veut. La condition aprs la clause WHERE peut porter sur
le rsultat d'une autre requte (ou sous-requte).

Supposons les tables suivantes :

Vente
Num_acheteur
Num_produit
Prix

Acheteurs
Num_acheteur
Nom
Prnom

Cette table contient, pour chaque acheteur, le produit qu'il a achet et le prix d'achat.

Nous voulons la liste des acheteurs ayant achet des articles chers. Nous considrerons qu'un article
cher est un article dont le prix est suprieur la moyenne du prix des produits achets + 100 francs.








Vous pouvez constater que condition de la requte est base sur le rsultat d'une autre requte. Dans cet
exemple, chaque fois qu'un acheteur aura achet un article cher, son numro apparatra, pour viter
cela, on utilise la clause DISTINCT num_acheteur pour liminer les doubles.


Autre exemple avec ces deux tables : nous savons qu'il y a une erreur sur l'orthographe du nom de
l'acheteur du produit n 1, il devrait s'appeler 'Dupont' :









N'oubliez pas cette rgle propos des sous-requtes : Lorsque vous faites une sous-requte dans la
clause WHERE, la clause SELECT de cette sous-requte doit avoir un nombre et des types de champs
correspondants ceux se trouvant aprs la clause WHERE de la requte principale. Autrement dit, si
vous avez "WHERE champ = ( SELECT ... );", le rsultat du SELECT doit tre un seul champ puisqu'il
n'y a qu'un seul champ aprs le WHERE, ET leur type doit correspondre (les deux doivent tre
numriques ou tre des chanes de caractres, etc.), sinon, la requte ne renverra rien ou sortira avec
une erreur selon les systmes.

SELECT Num_acheteur
FROM Vente
WHERE prix >
( SELECT AVG (prix) + 100
FROM Vente);

UPDATE Acheteurs
SET nom = 'Dupont'
WHERE num_acheteur =
(SELECT num_acheteur
FROM Ventes
WHERE num_article = 1);

Cours ACCESS
Page 15 sur 15

3.4.11 Les UNI ONs

Lorsqu'on veut que les rsultats de plusieurs requtes soient combins entre eux, on utilise la clause
UNION. UNION va fusionner les rsultats des requtes.

Par exemple, supposons que nous ayons une table pour les clients habitant Saint-Quentin (cette table
s'appellera clients_stq) et une table pour les clients habitant Paris (clients_Paris). Pour obtenir les
numros des clients des deux tables, on tapera :








Notez que SQL requiert que le type des champs slectionns dans les clauses SELECT corresponde,
colonne par colonne (le premier champ du premier SELECT doit avoir le mme type que le premier
champ du deuxime SELECT, etc...). Notez aussi que SQL supprime automatiquement les doubles
lorsque UNION est utilis, l o il aurait fallu utiliser la clause DISTINCT pour une requte simple.


4. Les commandes de contrle des bases de donnes

Ces commandes ne seront pas dtailles car elles ne sont pas implmentes (ou qu'en partie) dans
Access, nanmoins, deux d'entre elles sont trs souvent utilises dans d'autres systmes : les commandes
COMIT et ROLLBACK.

La commande COMIT valide toutes les modifications faites depuis le dernier COMIT, partir du
moment o la commande COMIT a t entre, tout ce qui a t fait sur la base est valid et ne peut plus
tre modifi. La commande ROLLBACK efface toutes les modifications qui ont t faites sur la base
depuis le dernier COMIT. C'est pour cela qu'il faut penser faire un COMIT des modifications
rgulirement.

















Certains systmes, comme Access, font un COMIT automatique aprs chaque action, aucun retour en
arrire n'est donc possible.


SELECT num_client
FROM clients_stq
UNION
SELECT num_client
FROM clients_paris;
Dmarrage de la session
Modifications de la base
de donnes
COMIT
Modifications valides
Modifications de la base
de donnes
ROLLBACK
Modifications non
valids, retour au
dernier COMIT
Cours ACCESS les Formulaires / Sous-Formulaires
Page 1 sur 45



Prsentation....................................................................................................2

1. Crer un formulaire partir dune table ......................................................3

2. Les contrles : .........................................................................................10
2.1 Le contrle "Intitul" .......................................................................11
2.2 Le contrle "Zone de Texte".............................................................12
2.3 Le contrle Groupe doptions .....................................................14
2.4 Les contrles Traits et Rectangle ...........................................17
2.5 Les contrles Zone de Liste et Zone de Liste Modifiable ........18
2.6 Le contrle Bouton de commande................................................23
2.7 Le contrles Sous-Formulaire .....................................................30
Cours ACCESS les Formulaires / Sous-Formulaires
Page 2 sur 45
Prsentation


Le formulaire va nous permettre dafficher et de modifier le contenu dune table de faon bien
plus agrable que le mode feuille de donnes qui ne permet quun affichage en lignes et
colonnes.

De plus, le mode feuille de donnes ne permet laffichage et la modification
dinformations ne provenant que dune seule table, le formulaire va nous permettre de
manipuler au mme endroit des informations provenant de plusieurs tables simultanment :
par exemple, dans notre exemple de base de donnes magasin, nous pourrons avoir un
formulaire qui affichera dans la mme fentre toutes les informations concernant une
commande : informations gnrales sur la commande (provenant de la table commande ,
informations sur le client ayant pass cette commande (provenant de la table clients et le
dtail de cette commande (provenant des tables lignes-commande et produits ) alors
que prcdemment, ces donnes taient clates sur plusieurs feuilles de donnes.

Les informations saisies ou modifies dans le formulaire seront modifies dans les tables
partir desquelles le formulaire a t cr.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 3 sur 45

1. Crer un formulaire partir dune table

Nous allons crer le formulaire associ la table clients . Pour crer un formulaire, on se
place dans la fentre principale dAccess et on clique sur longlet formulaire , puis sur le
bouton nouveau



Il existe plusieurs mthodes pour gnrer un formulaire, nous nous intresserons seulement
aux deux premires mthodes :

?? Mode cration : on va tout faire seul la main sans aucune aide dAccess
?? Assistant Formulaire : Access va nous guider pas pas dans la ralisation de notre
formulaire
?? Formulaires I nstantans : Ces trois mthodes vont gnrer rapidement un formulaire
partir dune table sans nous poser de questions, son aspect sera rudimentaire et ne nous
donnera pas de grandes possibilits de personnalisations.

Nous allons utiliser la mthode Assistant Formulaire .

Dans la partie infrieure de la fentre, nous allons choisir la table partir de laquelle le
formulaire va tre gnr : les informations provenant de cette table seront affiches dans le
formulaire, les modifications ou ajouts que nous ferons dans le formulaire seront rpercutes
dans cette table :



Nous choisissons ici la table clients et on clique sur OK

Cours ACCESS les Formulaires / Sous-Formulaires
Page 4 sur 45



Nous allons choisir ici quels sont les champs de la table que nous voulons voir dans le
formulaire, si nous voulons tre en mesure de modifier tous les champs de chaque
enregistrement de la table, il faudra tous les choisir, si, par exemple, notre formulaire ne doit
servir qua afficher certaines informations, on choisira uniquement les champs pertinents.

Attention : Dans un formulaire, on va pouvoir, comme dans la feuille de donnes, ajouter des
enregistrements dans la table, les champs non prsents dans le formulaire ne seront pas
initialiss (ils resteront vides) lors de lajout. (Le seul moyen alors pour remplir ces champs
sera daller dans la feuille de donnes).

Pour choisir les champs ajouter ou enlever dans le formulaire, on va utiliser les boutons :

?? > : Ajouter le champ dans le formulaire
?? >> : Ajouter tous les champs dans le formulaire
?? < : Supprimer un champ du formulaire
?? << : Supprimer tous les champs du formulaire

Nous allons ajouter tous les champs du formulaire, cliquez ensuite sur suivant
Cours ACCESS les Formulaires / Sous-Formulaires
Page 5 sur 45



On choisit ici la faon dafficher les champs choisis dans le formulaire, il y a quatre faons
dafficher les champs :

?? Colonne simple : Le formulaire va afficher les champs sous la forme : nom du champ :
contenu du champ . Le formulaire va afficher les champs dun enregistrement la fois.

?? Tabulaire : Le formulaire va afficher les champs choisis sous la forme dun tableau : en
haut du formulaire vont tre affichs les noms des champs, et, en dessous sous forme de
tableau, le contenu, avec un enregistrement par ligne. Cette faon dafficher les donnes
ressemble la feuille de donnes.


?? Feuille de donnes : Cest la mme chose que la feuille de donnes utilises pour saisir
des informations dans une table, la seule diffrence est que ne sont affichs ici que les
champs slectionns dans ltape prcdente.

?? J ustifi : Va afficher les champs choisis les un la suite des autres, ce nest pas trs beau
(enfin cest une question de got).

Nous utiliserons le plus souvent (voire tout le temps) le mode Colonne simple ou le mode
Tabulaire . Nous choisissons ici le mode Colonne Simple , puis on clique sur
Suivant
Cours ACCESS les Formulaires / Sous-Formulaires
Page 6 sur 45


On choisit ici le "dcor" que l'on va donner au formulaire, il existe une dizaine de dcors
prdfinis, bien sur, on pourra, par la suite, modifier un dcor choisi ici. Choisissez celui qui
vous plat le plus.


Enfin, on va nommer son formulaire, c'est sous ce nom qu'il apparatra dans l'onglet
"Formulaires" de la fentre principale d'Access, puis cliquez sur "Terminer", le formulaire est
cr.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 7 sur 45



Access nous propose alors de commencer tout de suite la saisie dans notre nouveau
formulaire.

Vous pouvez voir ici le formulaire tel qu'il est une fois cr : Il utilise les champs choisis dans
la table slectionne, il affiche les champs sous forme de "Colonne simple" (un couple nom
du champ - contenu du champ par ligne) et utilise le dcor choisi.
Les informations qui vont tre saisies ou modifies dans ce formulaire le seront dans la table
qui est associe ce formulaire.

Pour se dplacer parmi les enregistrements dans le formulaire, on utilise les icnes flchs en
bas du formulaire :















Les diffrents contrles

Pour modifier l'aspect et le contenu du formulaire, on clique soit sur le bouton "Modifier"
dans l'onglet "Formulaires" de la fentre principale d'Access, soit sur l'icne


Aller sur le 1
er
enregistrement
Aller sur
l'enregistrement
prcdent
Enregistrement
courant
Aller sur
l'enregistrement
suivant
Aller sur le
dernier
enregistrement
Crer un nouvel
enregistrement
Cours ACCESS les Formulaires / Sous-Formulaires
Page 8 sur 45

On passe alors en mode modification :


Le formulaire est affich en mode modification ( gauche) et une bote outils s'affiche (
droite), la bote outils peut apparatre sous forme de barre d'icne en dessous du menu de la
fentre.

Le formulaire est constitu de plusieurs parties : L'en-tte, le dtail et le pied. Dans le cas d'un
formulaire de type "Colonnes Simples" (comme c'est le cas ici), l'en-tte et le pied n'ont
aucune importance, ils sont utiles lorsque le formulaire est affich sous forme de tableau (type
Tabulaire ou Feuille de Donnes), dans ce cas, l'en-tte va contenir le titre des colonnes, le
dtail va dfinir la faon dont vont tre affiches les informations dans chaque ligne du
tableau (nous verrons a plus tard) et le pied pourra contenir des informations
supplmentaires, comme par exemple, aprs avoir affich un tableau de nombres, il pourra
afficher la somme de ces nombres.

Tout ce qui se trouve sur le formulaire s'appelle un contrle : un texte affich sur le
formulaire est un contrle, un champ d'un enregistrement est un contrle, une image place
sur le formulaire est un contrle : tout ce qui est affich dans le formulaire est un contrle. La
bote outils gauche affiche tous les contrles possibles que l'on peut placer sur un
formulaire. Ils sont assez nombreux et permettent d'afficher tous les types d'informations
possibles (mme du son ou de la vido !).
Cours ACCESS les Formulaires / Sous-Formulaires
Page 9 sur 45


Ces contrles peuvent tre diviss en trois catgories :

?? Les contrles indpendants : Ils n'ont aucune relation avec la table qui est lie au
formulaire (n'oubliez pas que chaque formulaire manipule des informations provenant
d'une table de la base). Par exemple une image place sur le formulaire n'a pas de relation
avec la table, c'est un contrle indpendant, du texte affich sur le formulaire (on pourrait
par exemple placer un titre "Formulaire Clients" en haut du formulaire), ce texte ne
provient pas de la table, il n'a aucun rapport avec elle, c'est donc un contrle indpendant.

?? Les contrles dpendants : Les contrles dpendants sont lis la table lie au
formulaire, ils vont afficher le contenu d'un champ, toute modification dans ce contrle ira
modifier le champ auquel il est li dans la table :

Dans notre exemple, le contrle droite est dpendant du champ "nom" de la table
"Clients", il affichera, pour l'enregistrement courant, le contenu du champ "nom". Toute
modification dans ce contrle ira modifier le contenu du champ "nom" de la table "Client"
pour l'enregistrement en cours.

Notez que le contrle gauche est un contrle indpendant, il se contente d'afficher le
texte "nom", tandis que celui de droite est dpendant et va chercher son contenu dans le
champ de la table dont le nom est affich (champ "nom"), nous verrons plus bas comment
rendre un contrle dpendant.


?? Les contrles calculs : Les contrles calculs ne vont pas chercher les informations
qu'ils vont afficher dans un champ de la table li au formulaire mais partir du contenu
d'autres contrle du formulaire, par exemple un contrle dans le formulaire li la table
"Produit" pourra afficher le prix TTC partir des contrles affichant les prix hors taxe et
la TVA.

Cours ACCESS les Formulaires / Sous-Formulaires
Page 10 sur 45

2. Les contrles :

Voici la liste des contrles que nous pourrons utiliser, les contrles non documents servent,
de faon gnrale, insrer dans un formulaire des "objets" provenant d'autres applications
Windows, comme par exemple un fichier sonore Wav, une vido AVI, un fichier au format
Word, une page HTML, etc.


Groupe d'options
Rectangle
Bouton d'option
Liste Modifiable
Bouton Commande
Sous-Formulaire
Zone de Liste
Image
Case cocher
Bouton Bascule
Zone de Texte
Intitul
Onglet
Trait


Cours ACCESS les Formulaires / Sous-Formulaires
Page 11 sur 45

Pour tous les contrles placs sur le formulaire, en cliquant dessus avec le bouton droit, on
obtient le menu suivant :





Ce menu permet de modifier l'aspect (couleur, choix de la police, effets, etc.) ou le
comportement (format d'affichage, masque de saisie, etc.) du contrle, l'option "Proprits"
du menu permet l'affichage et la modification de toutes les caractristiques du contrle. Les
proprits varient selon le type de contrle.

2.1 Le contrle "Intitul"


Il va tre utilis pour afficher du texte "statique", c'est dire qui ne variera pas d'un
enregistrement l'autre, c'est donc un contrle indpendant, qui servira typiquement afficher
par exemple le titre du formulaire, ou le nom d'un champ dont le contenu sera affich ct
dans un contrle dpendant. Dans notre formulaire, tous les noms des champs affichs
gauche sont des contrles "Intitul", ce sont des textes statiques ne dpendant de rien, on peut
modifier ce qui est affich sans affecter quoi que ce soit dans la table associe au formulaire.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 12 sur 45

2.2 Le contrle "Zone de Texte"

Ce contrle est l'un des contrles les plus utiliss dans les formulaires, on va, dans ce
contrle, pouvoir saisir des donnes. Typiquement, ce contrle est soit un contrle dpendant,
soit un contrle calcul.

Pourquoi ? On peut, dans ce contrle, saisir des informations, il serait alors judicieux que les
informations saisies puissent servir quelque chose, si le contrle n'est li aucun champ de
la table associe au formulaire, les informations que l'on va taper vont se perdre dans la nature
ds qu'on sera pass sur l'enregistrement suivant. En revanche, si le contrle est li un
champ de la table, les informations entres dans ce contrle seront places dans le champ li
au contrle.



Tout ce qui sera entr dans un contrle dpendant affectera le contenu du champ auquel il est
li. Bien sur, rien ninterdit de lier un mme champ sur plusieurs contrles dans le mme
formulaire (ce qui na pas, priori, dintrt).

Dans notre formulaire, tous les contrles dans lesquels on va saisir des informations sur les
clients sont des contrles dpendants lis des champs de la table. Le nom du champ auquel
est li le contrle est dailleurs crit dans ce contrle.

Pour relier un contrle un champ, procdez ainsi :

1. Cliquez dans la bote outils sur le contrle zone de texte
2. Placez le contrle sur le formulaire et dimensionnez-le
3. Access cre en fait DEUX contrles : il suppose, juste titre, que lon va lier ce
contrle avec un champ, il cre donc un contrle Intitul quon vu avant qui
contient le texte Texte xx (o xx est un nombre quelconque) et notre fameux
contrle Zone de Texte qui contient la mention indpendant .
4. On va supposer ici qu on veut lier ce contrle au champ Nom de notre table
Clients (mme si il se trouve dj sur le formulaire, cest juste un exemple)
5. A la place de Texte xx , on va taper Nom : (histoire de savoir ce quil va
falloir saisir dans le contrle d ct)
Table
Champ 1
Formulaire
Zone de texte lie au
champ 1
Champ 2 Zone de texte lie au
champ 2
Cours ACCESS les Formulaires / Sous-Formulaires
Page 13 sur 45

6. Vous avez pu noter la mention indpendant , ce qui signifie que, pour linstant, le
contrle Zone de Texte cr nest li rien, on peut taper du texte dedans mais le
texte ne sera sauv nulle part. Pour dire Access quon veut sauver ce texte dans le
champ Nom de la table Clients, on clique avec le bouton droit sur le contrle et on
clique sur Proprits :




Ici se trouvent toutes les proprits qui vont dfinir laspect et le comportement de
notre contrle, il y en a beaucoup et je ne vais pas les dtailler. Celle qui nous intresse
particulirement et la proprit Source Contrle de longlet Donnes . Cest ici
qu on indique Access do viennent les informations qui vont tre affiches dans le
contrle.

Il y a une flche qui descend droite, si on clique dessus, tous les champs de la (ou
des) table(s) lis au formulaire vont safficher, on choisi dedans le champ Nom , et
on ferme la fentre de proprits.


Cours ACCESS les Formulaires / Sous-Formulaires
Page 14 sur 45

7. Le contrle nest plus indpendant, la place de la mention Indpendant , il est
affich Nom , cest--dire le nom du champ avec lequel il va tre li. A partir de
maintenant, lors de laffichage dun enregistrement dans le formulaire, le nom du
client sera affich dans ce contrle, et toute modification de son contenu sera
rpercute dans la table.

2.3 Le contrle Groupe doptions

Le contrle Groupe doption va servir a faire un choix limit entre plusieurs options et
daffecter loption choisie un champ dune table. Par exemple, supposons maintenant que
nous ajoutions un champ vendeur la table Commandes pour savoir qui a effectu une
vente. Nous allons supposer que notre magasin trois vendeurs nomms Dupond (vendeur 1),
Durant (vendeur 2) et Martin (vendeur 3). Nous allons dabord ajouter le champ
num_vendeur la table Commandes , puis sur le formulaire Commandes lie
cette table, nous ajoutons un contrle Groupe doptions



Nous entrons ici les diffrents noms des vendeurs et nous cliquons sur Suivant

Cours ACCESS les Formulaires / Sous-Formulaires
Page 15 sur 45


Nous pouvons choisir ici le vendeur qui sera toujours propos par dfaut, nous pouvons
galement ne choisir aucun vendeur par dfaut.



Nous avons vu que chaque vendeur un numro, cest ce numro, et nom le nom du vendeur
qui va tre sauv dans le champ num_vendeur de la table Commande , on indique ici,
pour chaque vendeur, son numro.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 16 sur 45



On indique enfin Access en choisissant dans le menu quel est le champ de la table qui va
contenir le numro correspondant au vendeur quon a choisi.



On choisit laspect de notre groupe doptions
Cours ACCESS les Formulaires / Sous-Formulaires
Page 17 sur 45



On le nomme, et cest termin :




Vous pouvez voir en bas le groupe doptions avec les trois vendeurs proposs, en en
choisissant un, on sauve dans le champ li ce groupe (num_vendeur), le numro associ au
vendeur choisi.

2.4 Les contrles Traits et Rectangle

Ces deux types de contrles permettent de tracer des traits ou des rectangles sur le formulaire
pour encadrer ou souligner.

Cours ACCESS les Formulaires / Sous-Formulaires
Page 18 sur 45

2.5 Les contrles Zone de Liste et Zone de Liste Modifiable

Vous vous souvenez de lassistant Liste de choix dans les tables qui permettait, au lieu de
saisir une valeur, de pouvoir choisir dans une liste. Ce type de menu existe galement dans les
formulaires, on va pouvoir, grce ces deux types de contrles, pouvoir, par exemple dans le
formulaire Commande , choisir parmi la liste des clients au lieu de saisir son numro.

Pour cela, on procde ainsi :

1. Ouvrir le formulaire Commande en modification
2. Choisir le formulaire Zone de Liste dans la bote outils
3. Le placer sur le formulaire



Il y a trois faon de gnrer cette zone de liste, comme pour la feuille de donnes, nous
voulons afficher une liste des clients existants dans la table client, pour cela, on
slectionne la 1
re
option Je veux que la zone de liste recherche les valeurs dans une
table (en loccurrence, la table clients), et on clique sur suivant
Cours ACCESS les Formulaires / Sous-Formulaires
Page 19 sur 45

4.



Access nous affiche les tables existantes : On choisi la table Clients

5.



On choisit ici les champs qui seront affichs dans la zone de liste, nous pouvons juger que
seuls les nom et ville sont ncessaires
Cours ACCESS les Formulaires / Sous-Formulaires
Page 20 sur 45

6.



Access nous affiche quoi va ressembler notre zone de liste.

Notez que loption Colonne cl cache est coche, quest-ce que cela signifie ?

Nous sommes daccord que le but de lopration est de choisir parmi une liste un client et
daffecter son numro au champ n client de la table Commande afin dviter
davoir taper ce numro. Or, nous avons choisi uniquement les champs Nom & Ville de
la table Client , et pas le numro. Access a remarqu que le numro du client est la clef
de la table Client , il en dduit que cest donc le seul moyen didentifier de faon
unique un client, il va donc ajouter une colonne notre liste, cette colonne sera cache, et
cest le contenu de cette colonne cache qui sera affecte au champ n client de la
table Commande .
Cours ACCESS les Formulaires / Sous-Formulaires
Page 21 sur 45

7.



On va indiquer Access dans quel champ de la table lie au formulaire on veut stocker
cette valeur (ici n client)

8.



On nomme la zone de liste, et cest termin
Cours ACCESS les Formulaires / Sous-Formulaires
Page 22 sur 45




Vous voyez quau lieu de saisir un numro, nous avons une liste dans laquelle nous
pouvons choisir un client, le numro de ce client, prsent dans la colonne cache de la
zone de liste, sera affect au champ choisi plus haut (n client). Magique non ?

Le contrle Zone de liste modifiable agit exactement de la mme faon, il est diffrent
parce que cest un menu droulant (il faut cliquer sur une petite flche pour le faire
apparatre) au lieu dtre fixe. Essayez le








Cours ACCESS les Formulaires / Sous-Formulaires
Page 23 sur 45
2.6 Le contrle Bouton de commande

Ce contrle va permettre dexcuter simplement en cliquant dessus nimporte quelle action
dAccess. Toutes les actions possibles dAccess, normalement accessibles par les menus
droulant ou par la barre dicnes peuvent tre reproduites par lintermdiaire de ce contrle.
Pour comprendre son fonctionnement, nous allons crer un nouveau formulaire vide dans
lequel nous allons simplement poser un contrle Bouton de commande .

Ds que le contrle est pos sur le formulaire, lassistant suivant apparat :



Il y a deux colonnes dans cet assistant :

Le menu Catgories affiche les principales fonctions dAccess :

?? Dplacement entre enregistrements : Pour se positionner sur un enregistrement
prcis de la table.
?? Opration sur enregistrement : Ajouter, Supprimer, Copier, Imprimer un
enregistrement
?? Opration sur formulaire : Ouvrir un formulaire, le fermer, appliquer un filtre
dessus, limprimer
?? Oprations sur Etat : Imprimer, Sauver
?? Applications : Excuter une autre application comme Word ou Excel
?? Divers : Excuter une macro, Imprimer une table complte,

Comme vous pouvez le voir, toutes les actions possibles dAccess sont runies ici, il suffit
den choisir une et le fait de cliquer sur le contrle excutera cette action.
Nous allons prendre pour exemple louverture du formulaire Clients .
Cours ACCESS les Formulaires / Sous-Formulaires
Page 24 sur 45

Nous choisissons donc la Catgorie Opration sur Formulaire puis laction Ouvrir un
formulaire



Access nous demande alors quel formulaire nous voulons ouvrir.


(ne vous proccupez pas des noms des formulaires affichs ici, ils ne correspondent pas nos
exemples)

Cours ACCESS les Formulaires / Sous-Formulaires
Page 25 sur 45

On choisit Clients



Access nous propose deux choix, nous verrons le premier plus tard, nous lui demandons
dafficher tous les enregistrements dans le formulaire



On peut ici choisir ce qui va tre affich dans le contrle, par dfaut Access propose un icne,
on peut afficher la place un texte ou choisir un autre icne.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 26 sur 45



On nomme le contrle et cest termin.

Notre formulaire ressemble a



Quand on cliquera sur le bouton de commande cr, le formulaire Clients souvrira et
affichera tous les clients de la table Clients .
Cours ACCESS les Formulaires / Sous-Formulaires
Page 27 sur 45

Nous pouvons amliorer ce formulaire grce quelques contrles et en faire quelque chose de
plus intressant : Nous allons afficher tous les clients dans un contrle Zone de Liste , et
ajouter sur le formulaire un bouton de commande comme celui que nous venons de crer avec
cette fois, un petit plus : le formulaire qui va safficher quand on cliquera dessus naffichera
plus la totalit des clients mais seulement celui que nous aurons choisi dans la zone de liste.

Pour cela, on cre un nouveau formulaire vide ( directement en mode cration) et, comme
plus haut, on cre une zone de liste dedans :



Notez cette fois-ci que, comme le formulaire a t cre partir daucune table, Access ne
demande pas quel champ de la table nous voulons rattacher ce contrle. Il est donc
indpendant : il va se contenter dafficher le numro, le nom et le prnom des clients : le fait
den choisir un dans cette liste ne modifiera aucune table.

Nous posons ensuite un contrle Bouton de Commande sur le formulaire. Nous rptons
les tapes prcdentes, mais cette fois nous nous arrtons la question suivante :


Cours ACCESS les Formulaires / Sous-Formulaires
Page 28 sur 45

Nous avions, prcdemment, affich tous les enregistrements de la table Clients dans le
formulaire Clients . Nous voulons maintenant, afficher dans ce formulaire que le seul
client correspondant celui que nous avons choisi dans la liste.

La fentre suivante saffiche :



A gauche nous avons les contrles se trouvant sur notre formulaire : il ny en a quun, il sagit
dune zone de liste modifiable qui sappelle Modifiable3 (le nom choisi par Access
lorsquon a cr le contrle. Il peut tre diffrent).
A droite se trouvent tous les champs de la table associe au formulaire que nous voulons
ouvrir.

Suivez bien le mouvement :

Lorsque nous avons cre notre contrle Zone de Liste contenant la liste des clients, nous
avons choisi de faire apparatre dans cette liste le numro du client, son nom et son prnom.
Access ayant not que le numro est la clef de la table Clients , il ne laffichera pas (voir
page 19). Il ne laffichera pas mais il sera toujours prsent dans la liste mais il sera cach.

Bon, quand on choisit une des lignes du menu de la zone de liste, Access fait lopration
suivante : il regarde sur quelle ligne on a cliqu, il trouve une ligne numro, de client +
nom + prnom , le numro tant cach. Il ne soccupe alors que de la premire colonne (en
loccurrence la colonne cache) : pour Access maintenant, le fait d avoir cliqu sur cette
ligne correspond au fait davoir cliqu sur le numro seulement. Si vous naviez pas mis la
colonne numro de client, il aurait pris la premire colonne (nom) et le fait de cliquer sur
toute la ligne aurait correspondu au fait de cliquer sur le nom. OK ? Si vous naviez pas
compris la page 19, jespre que maintenant cest plus clair.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 29 sur 45

Bien, maintenant, il faut dire Access comment il va faire le lien entre ce quon a cliqu dans
la liste et la table Client , on choisit donc gauche notre contrle (on a pas trop le choix) et
droite le champ nclient (numro de client) et on clique sur <-> .

Pourquoi ? comme on vient de le voir, le fait de cliquer sur un lment de la liste, correspond
au fait de cliquer sur le numro, on va lui dire avec cette opration : Affiche dans le
formulaire les enregistrements dont le champ nclient est gal ce quon vient de cliquer
dans la liste .

On choisit ensuite licne et on doit se retrouver avec quelque chose comme a :



Quand on va ouvrir le formulaire, on va voir ceci :



La liste des clients saffiche (le nom & le prnom, le numro tant cach)

Une fois quon a choisi un, on clique sur le bouton de commande et comme par magie, le
formulaire client souvre avec seulement les informations concernant le client choisi dans la
liste.

Ceci nest quun petit exemple de ce que lon peut raliser avec le contrle bouton de
commande , vous pouvez essayer dautres commandes.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 30 sur 45
2.7 Le contrles Sous-Formulaire


Grce ce contrle, nous allons pouvoir afficher des formulaires imbriqus dans dautres, par
exemple pour afficher une liste denregistrement correspondant un seul enregistrement :
pour une commande donne, on pourra, dans le mme formulaire, afficher toutes les lignes de
cette commande.

Le but de la manuvre va tre de raliser un formulaire complexe que lon va nommer
facture . Il contiendra toutes les informations relatives une commande : en en-tte le
numro de la commande, sa date, les informations sur le client, et en dessous le dtail de cette
commande, avec en bas le montant total de la commande.

Pour cela, on cre le formulaire facture . Ce formulaire va tre len-tte de notre formulaire
final : il va contenir les informations sur la commande et sur le client qui la pass. On va
donc aller chercher des informations dans deux tables : Clients et Commandes .



Comme on la vu, le formulaire va tre gnr partir de deux tables, on ne choisit donc rien
dans le menu Choisissez la table .
Cours ACCESS les Formulaires / Sous-Formulaires
Page 31 sur 45



Cest ici quon va choisir les tables : En haut gauche se trouvent les tables de la base, en
dessous les champs de la table choisie plus haut et gauche les champs que nous allons
utiliser dans notre formulaire.

Pour notre en-tte, nous avons besoin des informations suivantes : n de la commande, n du
client qui a pass cette commande, la date de la commande, ces informations provenant de la
table Commande et le nom, le prnom et la ville du client qui a pass cette commande, ces
informations provenant de la table Clients .

A partir de maintenant, nous supposerons que les relations ont t bien ralises entre les
tables, cest une condition ncessaire au bon droulement de la suite des oprations. Si les
relations ne sont pas faites ou mal faites, Access va tenter de relier comme il peut les
tables entre elles, et cest la source de problmes
Cours ACCESS les Formulaires / Sous-Formulaires
Page 32 sur 45



Les relations tant correctement faites, Access, dans une crise dintelligence remarque qua
partir des champs choisis prcdemment, on peut faire deux choses : soit afficher les donnes
par clients, cest dire que, avec les champs choisis, on peut afficher un client et en dessous
afficher toutes les commandes quil a pass. Soit afficher les donnes par commande, cest
dire que pour une commande choisie, on va afficher les informations concernant le client qui
a fait cette commande. A droite saffiche la faon dont les donnes seront affiches en
fonction du mode quon aura choisi.

Jespre que votre esprit afft aura remarqu que la deuxime proposition est la bonne, nous
la choisissons donc.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 33 sur 45

Les tapes suivantes sont classiques : choix de la disposition, de la dcoration et du nom, on
arrive la fin quelque chose comme a :



Bon, tape 1 termine. Nous allons maintenant crer un nouveau formulaire, ce formulaire va
tre une sorte de super formulaire ligne-commandes . Dans notre formulaire ligne
commande, nous avons seulement le numro de la commande, le numro du produit et la
quantit.

Nous allons crer un formulaire super ligne-commande qui va contenir sur chaque ligne :
le numro de la commande, le numro du produit, sa quantit (tout cela provenant de la table
lignes-commande ), mais en plus le nom du produit, son prix unitaire, son taux de TVA
(tout cela provenant de la table produits ) et pour corser laffaire, nous ajouterons le calcul
du montant TTC de la ligne, et hop !
Cours ACCESS les Formulaires / Sous-Formulaires
Page 34 sur 45

Comme pour notre prcdent formulaire, nous allons utiliser deux tables :



Nous choisissons les champs numro de commande, numro de produit et quantit de la table
ligne-commande et les champs libell, prix unitaire et tva de la table Produits .



Cours ACCESS les Formulaires / Sous-Formulaires
Page 35 sur 45
Une fois de plus, Access fait preuve d intelligence ! Il se rend compte quavec les champs
que nous avons choisi, nous pouvons afficher les donnes sous deux formes : soit par produit,
dans ce cas il va afficher toutes les lignes de commandes o ce produit est prsent, pourquoi
pas ? mais a ne nous intresse pas spcialement, soit par ligne de commande, et il va dans ce
cas, afficher les informations sur le produit prsent dans cette ligne de commande. Voil qui
est beaucoup plus intressant.



Cette fois-ci, nous allons afficher le formulaire sous forme Tabulaire . Comme ce
formulaire va contenir la liste des lignes dune commande, cest la meilleure faon dafficher
une liste.

A la fin, on obtient un formulaire qui a cette forme :



Cours ACCESS les Formulaires / Sous-Formulaires
Page 36 sur 45

Dans len-tte se trouvent les titres des colonnes, et dans le dtail, les lignes du formulaire.
Une fois ouvert, il aura cet aspect :




Nous sommes bien daccord, ce formulaire affiche le dtail de toutes les commandes. Comme
on peut le voir dans la 1
re
colonne, il concerne plusieurs commandes.

Bien, maintenant, nous allons ajouter un contrle dans ce formulaire pour calculer le montant
TTC de chaque ligne :

Zone de texte
Intitul

Cours ACCESS les Formulaires / Sous-Formulaires
Page 37 sur 45

Nous avons ajout deux contrles : un contrle Intitul pour afficher len-tte de le
colonne, et un contrle Zone de Texte dans lequel on va calculer le montant TTC.
Pour calculer le montant TTC, on affiche les proprits du contrle et dans la proprit
Source de longlet Donnes , on tape la formule de calcul :



La formule de calcul est :

( [prix unitaire] + ( [prix unitaire] * [tva] / 100 ) ) * [quantite]

Si on affiche maintenant le formulaire, on obtient :


Ca marche !
Cours ACCESS les Formulaires / Sous-Formulaires
Page 38 sur 45

Plus fort, maintenant, nous allons afficher le montant total command. Nous sommes toujours
d'accord, le montant total va tre le montant total pour toutes les commandes, notre formulaire
pour linstant ne fait pas de distinction entre les commandes.


Vous avez pu remarquer que le formulaire a en plus de len-tte et du dtail, une partie Pied
de formulaire . Cette partie ne sera affiche que en bas du formulaire, une fois toutes les
lignes affiches. Comme prcdemment, nous mettons dans cette partie du formulaire un
contrle Zone de Texte dans lequel nous allons faire le calcul de la somme.



Que contient la formule ? La mme que tout lheure, mais nous avons ajout le mot-clef
somme avant : Access va calculer la somme de toutes les lignes ici.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 39 sur 45



Et voil le travail : en bas du formulaire apparat la somme totale.

Arriv ici, nous avons notre formulaire facture qui contient les informations gnrales sur
la commande et le formulaire super ligne commande qui contient les dtails de toutes les
commandes. Il serait bien de pouvoir insrer ce formulaire dans le premier et de lui faire
afficher seulement les lignes commandes correspondant la commande choisie.

Pour cela, on va rouvrir notre formulaire facture et poser dessus un contrle Sous-
Formulaire . Lassistant suivant saffiche alors :



Access nous demande partir de quoi il va afficher ce sous-formulaire ? dune table ou dun
formulaire existant dj ? Nous choisissons la deuxime solution et nous choisissons notre
formulaire super lignes commande .
Cours ACCESS les Formulaires / Sous-Formulaires
Page 40 sur 45



Cest ici que tout se fait. Il va falloir indiquer Access quel est le rapport entre le formulaire
et le sous formulaire quil contient. Si on se contentait dinsrer le sous formulaire tel quel
dans le formulaire, il continuerait afficher tout le temps la totalit des lignes commandes
quelle que soit la commande affiche dans le formulaire principal.

Nous voulons quil affiche dans le sous-formulaire les lignes commande correspondant la
commande affiche dans le formulaire principal.
Quel est le rapport entre les deux ? Comment faire une relation entre les deux ? Simplement :
le formulaire contient le numro de la commande en cours, le sous-formulaire contient pour
chaque ligne de commande affiche le numro de la commande concerne. Il va donc falloir
dire Access que les lignes affiches dans le sous formulaire vont tre celles dont le numro
de commande est celui qui est affich dans le formulaire.

Pour cela, on indique dans la colonne de gauche quel est le champ qui contient le numro de
commande dans le formulaire principal et quel est le champ qui contient aussi un numro de
commande dans le sous-formulaire.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 41 sur 45



A la place du sous-formulaire, il y a un rectangle blanc. Ce qui implique que toute
modification dans ce sous-formulaire ne pourra se faire ici, il faudra la faire directement dans
le formulaire super ligne commandes . Dans Access 2000, on peut directement modifier le
sous formulaire partir dici, il ny a plus de rectangle blanc mais directement le formulaire.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 42 sur 45

Maintenant, lorsque vous ouvrez le formulaire principal :


Vous avez, pour une commande donne en haut, son contenu exact et son montant. Vous
noterez que le numro de commande est rpt pour chaque ligne, vous pouvez, comme il est
inutile maintenant puisque dj prsent dans len-tte, le supprimer du formulaire.

Cours ACCESS les Formulaires / Sous-Formulaires
Page 43 sur 45

Voil pour les sous-formulaires. Il existe une mthode plus simple pour faire ce que nous
venons de faire. Il suffit pour cela, dabord de bien relier les tables entre elles, ensuite
lorsquon cre le premier formulaire de mettre toutes les champs de toutes les tables
concernes dans le mme formulaire : n de commande, n de client, date venant de la table
Commande , nom, prnom, adresse venant de la table Client , n de commande, n de
produit, quantit venant de la table Lignes-commande et libell, prix unitaire et tva
venant de la table Produits.

Access affiche alors :



Et l, magie ! Access a devin tout seul ce que nous voulions faire (grce quand mme aux
relations), et nous propose de faire tout seul ce que nous avons fait avant. Vous remarquez
que lexemple quil nous propose droite ressemble trangement ce que nous avons fait
la main .
Cours ACCESS les Formulaires / Sous-Formulaires
Page 44 sur 45



Il nous propose le format daffichage



Ici on nomme le formulaire, vous pouvez noter quil a cre tout seul le sous formulaire et
quil en profite pour nous demander son nom.
Cours ACCESS les Formulaires / Sous-Formulaires
Page 45 sur 45




Et voil le travail ! En cinq secondes, il a fait ce qui nous a pris beaucoup de temps !
Il nous faudra simplement ajouter ensuite dans le sous formulaire le calcul des montant TTC
et le montant total.

Comme quoi, si les relations sont bien faites, Access fait les trois quart du boulot tout seul.

Ici se termine lhistoire des formulaires. Il reste dautres contrles comme les boutons
bascule, les images, les objets OLE, etc Nous ne les utiliserons pas souvent.

Cours ACCESS Les ETATS
Page 1 sur 21




1. Cration d'un tat................................................................................................................. 2

2. Cration d'un tat Instantan Colonnes............................................................................... 3

3. Cration d'un tat Instantan Tableau.................................................................................. 4

4. Cration d'un tat avec plusieurs tables.............................................................................. 9

5. Modifier la structure d'un tat..............................................................................................11

6. Insertion d'un sous-tat.......................................................................................................16
Cours ACCESS Les ETATS
Page 2 sur 21
LES ETATS

Les tats vont permettre l'impression d'enregistrements selon une prsentation qui aura t dfinie pralablement.
La cration d'un tat ressemble fortement la cration d'un formulaire.

1. Cration d'un tat


Pour crer un tat, dans la fentre principale d'Access, cliquez sur l'onglet "Etats", puis sur "Nouveau" :






Il y a plusieurs mthodes pour crer un tat :

?? Mode cration : on cre tout de A Z, on n'utilisera pas cette mthode

?? Assistant Etat : Access va nous guider pas pas dans la cration d'un tat complexe

?? Etat Instantan : Colonnes : Access va gnrer automatiquement un tat partir du contenu d'une
table, la prsentation se fera comme dans un formulaire, sous forme de colonnes : gauche on aura le
nom du champ et droite, son contenu.

?? Etat Instantan : Tableau : Access va gnrer automatiquement un tat partir du contenu d'une
table mais sous forme de tableau, on aura en haut de la page le nom des champs et en dessous, le
contenu pour chaque enregistrement, comme dans la prsentation d'une table

?? Assistant Graphique : Pour crer un graphique, nous verrons cela plus tard

?? Assistant Etiquette : Pour crer automatiquement des tiquettes partir du contenu d'une table, nous
ne verrons pas cette option.
Cours ACCESS Les ETATS
Page 3 sur 21

2. Cration d'un tat Instantan Colonnes


Nous allons crer un tat rapidement partir de la table Clients :



Notez qu'on choisi la table dans le menu du bas.

Access nous gnre automatiquement l'tat suivant (en mode prvisualisation)



On a en haut le titre de la table, gauche le nom du champ et droite le contenu, chaque enregistrement est
spar par un trait.
Cours ACCESS Les ETATS
Page 4 sur 21
3. Cration d'un tat Instantan Tableau




Et Access gnre l'tat suivant :



En haut, le nom de la table, suivi du nom des champs et sur chaque ligne, le contenu des champs pour
chaque enregistrement.





Cours ACCESS Les ETATS
Page 5 sur 21
1. Cration d'un tat partir de l'assistant


Nous utiliserons dsormais cette mthode pour crer un tat, les deux mthodes prcdentes tant trop
restrictives.



Comme prcdemment, on choisit partir de quelle table va tre cr l'tat, si on veut crer un tat partir
de plusieurs tables, on ne met rien ici, on renseignera la provenance des donnes dans l'cran suivant :



Comme pour la cration d'un formulaire, on choisit gauche les champs que l'on veut voir apparatre dans
l'tat, notez que si vous voulez afficher des champs provenant de plusieurs tables, vous choisirez dans le
menu "Table/requtes" une nouvelle table, les champs correspondants s'afficheront en dessous. Comme
dans les formu laires, pour ajouter un champ, on utilise l'icne ">", pour les ajouter tous, on utilise l'icne
">>" et dans l'autre sens pour les retirer, cliquez ensuite sur "Suivant >".

Notez que la source de l'tat n'est pas ncessairement une table, on peut trs bien gnrer un tat partir
d'une requte. Le fonctionnement reste le mme sauf qu'au lieu d'aller chercher des informations dans une
table, Access ira les chercher dans la table rsultant de la requte.

Cours ACCESS Les ETATS
Page 6 sur 21



Ici, on va indiquer comment se fait le regroupement.

A quoi sert le regroupement ?

Par exemple, ici, on veut crer un tat qui va afficher tous nos clients, on a choisit comme regroupement le
champ "Ville", ce qui signifie que dans l'tat qui va tre gnr, Access va afficher d'abord le nom de la
ville, puis tous les clients habitant cette ville, puis la ville suivante et les clients et ainsi de suite. On peut
choisir plusieurs niveaux de regroupement, on aurait pu ajouter un niveau supplmentaire avec par exemple
le nom, dans ce cas, Access affichera d'abord la ville, puis le nom, puis tous les clients portant ce nom dans
cette ville, puis le nom suivant, puis la ville suivante, etc :



On va se contenter de faire un regroupement par Ville, un regroupement pas nom n'a pas, en soi, tellement
de sens.
Cours ACCESS Les ETATS
Page 7 sur 21
On clique sur Suivant :



On va dterminer ici si on dsire que les lignes de l'tat soient tries et comment elles vont l'tre :
On peut trier chaque ligne de dtail (la ligne de dtail est la ligne qui sera affiche pour chaque
enregistrement) selon quatre critres, ces quatres critres sont des champs. On va choisir sur quels champs
vont se faire ces tris, les lignes seront ainsi d'abord tries par nom, puis par prnom, etc.

Notez que l'on peut trier soit par ordre alphabtique normal (par dfaut) ou l'envers (de Z A) en cliquant
sur l'icne (AZ) plac droite du champ.

On clique ensuite sur "Suivant >"




On choisit ici le modle de prsentation de l'tat.

Cours ACCESS Les ETATS
Page 8 sur 21
Et enfin le style de l'tat :



On nomme l'tat, et Access va le gnrer automatiquement :




Comme vous le constatez, les clients, classs par nom, prnom et adresse, sont regroups par Ville.

Cours ACCESS Les ETATS
Page 9 sur 21
4. Cration d'un tat avec plusieurs tables


Jusqu' prsent, nos tats n'affichaient que le contenu d'une table, nous allons crer un tat qui va afficher la
liste des clients, avec, pour chaque client, la liste des commandes qu'il a pass.

Attention, pour que ceci fonctionne, vous devez avoir cre correctement les relations entre les tables, sinon,
Access risque de se perdre

Comme avant, on cre un tat grce l'assistant :



La diffrence est qu'ici, on va chercher des donnes appartenant deux tables : Nclient, Nom et Ville
proviennent de la table "Clients", N Commande, Commande rgle et Vendeur proviennent de la table
"Commandes".





Cours ACCESS Les ETATS
Page 10 sur 21

Et l, on voit que si on a bien fait les relations entre les tables, Access est intelligent, il a vu qu' un client
peut correspondre plusieurs commandes, il nous propose donc de gnrer un tat qui va soit afficher tous les
clients, avec, pour chaque client les commandes correspondantes, ou toutes les commandes, avec, pour
chaque commande, le client qui l'a pass.

Ce qui nous intresse n'est pas d'avoir la liste des commandes, car un client peut avoir pass plusieurs
commandes, on retrouvera donc son nom plusieurs fois dans l'tat, on va donc regrouper par client.



On peut ajouter ici un nouveau niveau de regroupement, je veux par exemple, pour chaque client la liste des
commandes, mais en plus, je veux avoir cette liste groupe par vendeur.



Ici, on va indiquer comment va se faire le tri, on va trier sur le Date (pourquoi pas), on aura donc un tat qui
va afficher pour chaque client, les commandes qu'il a pass, tries par date et regroupes par vendeur.
Cours ACCESS Les ETATS
Page 11 sur 21

On choisit ensuite la prsentation et on donne un nom l'tat et Access gnre :



Comme on peut le constater, on a ici le client, suivi de la liste de ses commandes, regroupes par Vendeur.


5. Modifier la structure d'un tat


A prsent, nous allons modifier l'tat, nous allons ajouter, pour chaque client, une ligne qui va indiquer
combien il a pass de commandes :

On clique sur l'tat que l'on vient de crer et sur le bouton "Modifier" dans la fentre principale d'Access :



Cours ACCESS Les ETATS
Page 12 sur 21
Comme on peut le constater, il y a plusieurs parties dans un tat :

?? L'en-tete de l'tat : c'est ce qui va tre imprim au dbut de l'tat, ce ne sera imprim qu'une seule
fois.
?? L'en-tete de page : c'est ce qui sera imprim au dbut de chaque page (un titre par exemple).
?? L'en-tete de groupe : c'est ce qui va tre imprim au dbut de chaque groupe, ici l'tat est group par
client, en en-tte du groupe client, on va donc imprimer les informations sur le client, il y a un sous-
groupe dans le groupe client, c'est le groupe "Vendeur", on va donc imprimer dans l'en-tete de ce sous
groupe les informations sur les vendeurs.
?? Le dtail : c'est ici que vont tre imprimes chaque ligne de l'tat, en l'occurrence ici les commandes
?? Le pied de page : c'est ce qui sera imprim en bas de chaque page (souvent la date et la numrotation
des pages)
?? Le pied d'tat : c'est ce qui sera imprim une seule fois la fin de l'tat.


A chaque en-tte peut correspondre un pied, ici les pieds pour les groupes Clients et Vendeur ne sont pas
affichs, mais si ils l'taient, la fin de chaque groupement, le contenu du pied de groupe s'imprimerait, par
exemple, aprs chaque client, avant d'imprimer l'en-tete pour le client suivant, Access imprimerait le pied
pour le client, idem pour le groupe vendeur, avant d'imprimer l'en-tete du prochain vendeur, Access
imprimerait le pied du groupe vendeur.

L'impression se fait ainsi :





En tte de l'tat
En tte de page
En tte de groupe (client 1)
En tte de groupe (Vendeur 1)
Dtail (commandes)
Pied de groupe (Fin du vendeur 1)
En tte de groupe (Vendeur 2)
Dtail (commandes)
Pied de groupe (Fin du vendeur 2)
Pied de groupe (Fin du Client 1)
En tte de groupe (client 2)

Pied de groupe (Fin du Client 2)
Pied de Page
Pied d'tat
Cours ACCESS Les ETATS
Page 13 sur 21


On va afficher le nombre de commandes passes dans le pied du groupe client, ce qui est logique : la fin
d'un client, on affiche le nombre de commandes qu'il a pass :

Le pied du groupe client n'existe pas, il va falloir l'afficher, pour cela on clique sur l'icne :



Access affiche alors :



Qu'avons-nous dans cette fentre ?

En haut, la liste des champs sur lesquelles sont groupes ou tries les informations dans l'tat, lorsque les
informations sont groupes sur un champ, le nom de ce champ est prcd d'un icne (ici l'tat est groups
sur les champs Nclient et Vendeur), lorsque le champ est uniquement utilis pour trier l'tat, il n'est prcd
d'aucun icne (le champ Date de Commande sert uniquement au tri, il n'a pas d'icne). On peut, dans cette
fenetre, ajouter un nouveau critre de tri ou un nouveau groupe.

Dans la partie infrieure se trouvent les proprits de chaque champ. Pour le champ Nclient, on peut voir
que, entres autres, la proprit "Pied de groupe" est "Non", ce qui signifie qu'il n'y aura pas de pied de
groupe pour ce groupe l, nous voulons qu'il y en ai un pour que nous puissions imprimer dans ce pied le
nombre de commandes passes pour ce client. Nous choisissons "Oui".

Cours ACCESS Les ETATS
Page 14 sur 21



On peut constater que le pied de groupe "Nclient" est apparu.

Dans ce pied, nous allons ajouter les informations que nous dsirons voir apparatre. Pour cela, nous
procdons comme avec les formulaires, nous allons utiliser un contrle "Zone de Texte" qui va nous
permettre d'afficher le rsultat d'un calcul (le calcul tant ici le nombre de commandes passes).



Nous avons notre contrle qui, pour l'instant n'est li rien (il est indpendant).

Nous allons indiquer Access que ce qui doit tre affich dans ce contrle est le nombre de commandes
passes pour ce client :



Pour cela nous utilisons la fonction "Compte" que nous avions vu dans les formulaires, cette fonction
compte le nombre de fois que le champ pass en paramtre va tre affich.

On obtient donc dans le pied de groupe :



Cours ACCESS Les ETATS
Page 15 sur 21
Lorsqu'on demande visualiser l'tat, on obtient :



Vous pouvez voir, qu'en dessous du dtail de chaque client, se trouve le nombre de commandes qu'il a pass.

Cours ACCESS Les ETATS
Page 16 sur 21

6. Insertion d'un sous-tat

Comme pour les formulaires, on peut insrer dans un tat un sous tat. Les donnes du sous tat seront
imprimes en fonction de celles contenues dans l'tat. Nous allons imprimer un bon de commande, le bon de
commande va contenir toutes les informations concernant cette commande : les coordonnes du client, et le
dtail de chaque ligne de la commande.

Pour varier les plaisirs, nous allons baser cet tat non plus sur une table comme prcdemment mais sur une
requte, cette requte va afficher, pour un numro de commande donn, les informations la concernant :
Date, rgle, n du vendeur, nom et coordonnes du client :




Je n'entre pas dans le dtail de la requte, (vous tes cens savoir comment on fait), sachez seulement que
pour pouvoir saisir le numro de commande, on place comme critre au champ "N Commande" le critre
"=[Entrez le numro de la commande].

Une fois la requte cre, on va crer un tat en le basant sur cette requte :



Cours ACCESS Les ETATS
Page 17 sur 21
On choisit tous les champs de la requte :



Cette fois -ci, on veut que l'tat affiche les renseignements par commande (on veut imprimer un bon de
commande) et non pas par client :



Cours ACCESS Les ETATS
Page 18 sur 21
On indique dans l'cran suivant qu'on ne veut pas de niveau de regroupement supplmentaire et on choisit le
format d'impression :



Choisissez la dcoration et donnez un nom votre tat, Access gnre l'tat et affiche :



Pourquoi ? simplement parce que comme l'tat est bas sur une requte, Access appelle d'abord la requte
pour construire l'tat, et cette boite de dialogue est gnre par la requete.
Cours ACCESS Les ETATS
Page 19 sur 21
Il gnre alors un tat tout simple :





Nous allons, comme avec le sous-formulaire, ajouter un sous tat l'tat actuel, ce sous tat va afficher, pour
la commande le dtail de chaque ligne de la commande :

Pour cela, on passe en mode modification de l'tat et on insre dans la partie "Dtail" de l'tat un contrle
sous-tat :

Access nous demande partir de quoi va tre gnr notre sous-tat, il va l'tre partir de tables.


Cours ACCESS Les ETATS
Page 20 sur 21

Access nous demande ensuite quels vont tre les champs qui vont tre affichs dans le sous-tat.



On retrouve ici ce qu'on avait fait dans les formulaires, on indique ici les champs et les tables d'o
proviennent les informations : num_prod, quantite et num_cde viennent de la table "lignes_commande" et
libelle et prix unitaire viennent de la table "Produits"

Notez que le champ num_prod (numro du produit) vient de la table "Lignes Commande" et non pas de la
table "Produits". Pourquoi ? Parce qu'on veut la liste des produits commands (donc prsents dans la table
Lignes Commandes"), si on avait choisi le numro de produit venant de la table "Produit", cela aurait voulu
dire qu'on voulait la liste de tous les produits prsents dans la table "Produits".

Il va falloir maintenant indiquer Access comment faire la relation entre l'tat et le sous-tat. De deux
choses l'une, soit les relations sont bien faites et Access va savoir seul comment faire la relation, soit elles
sont mal faites, ou Access ne voit pas comment faire et il va afficher la fentre suivante :



Cours ACCESS Les ETATS
Page 21 sur 21

Ici, on va simplement indiquer Access quel est le champ qui va tre commun l'tat et au sous-tat, c'est
partir de ce champ commun que le sous tat va pouvoir tre gnr. On veut afficher, pour chaque
commande le dtail de chaque ligne de la commande, ce dtail se trouve dans la table "Lignes_commande",
dans la table "Ligne_Commande" se trouve le champ "num_cde" qui indique quelle commande appartient
cette ligne de commande.

La "jointure" entre ces deux tables va donc se faire sur le numro de commande, d'un ct le champ "N
commande" dans la table "Commande" avec le champ "num_cde" dans la table "Lignes_commande" de
l'autre.

D'ailleurs, on peut voir ds qu'on a choisi ces champs, qu'Access nous affiche en franais la nature de cette
relation entre les tables.


Access gnre l'tat et affiche :



Vous pouvez constater que maintenant, pour la commande, s'affiche, en plus le sous tat contenant le dtail
de chaque commande.



Cours ACCESS Les Macro Commandes


Page 1 sur 13





1. Introduction.......................................................................................................................... 2

2. Cration d'une macro autonome .......................................................................................... 2

3. Excuter la macro pas pas................................................................................................. 5

4. Modifier une macro............................................................................................................... 5

5. Cration d'une macro associe un formulaire................................................................... 6

6. Excuter des actions en fonction de conditions................................................................... 7

7. Afficher un message............................................................................................................. 7

8. Dplacer le curseur .............................................................................................................. 8

9. Affectation de la macro l'vnement.................................................................................. 9

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

11. Mettre un bouton de commande dans un formulaire........................................................11

12. Ouvrir un formulaire et afficher un enregistrement ..........................................................12

13. Crer une boite de dialogue.............................................................................................13
Cours ACCESS Les Macro Commandes


Page 2 sur 13

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.
Cours ACCESS Les Macro Commandes


Page 3 sur 13

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).
Cours ACCESS Les Macro Commandes


Page 4 sur 13

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".

Cours ACCESS Les Macro Commandes


Page 5 sur 13

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. Ouvrir la macro en mode cration

2. 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.


Cours ACCESS Les Macro Commandes


Page 6 sur 13

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 La macro doit s'excuter
Sur Ouverture A l'ouverture du formulaire
Sur Fermeture A la fermeture du formulaire
Sur Activation Lorsque Access accde un enregistrement du formulaire
Sur Insertion Lorsqu'on prcise la valeur d'un champ d'un nouvel enregistrement
Sur Suppression Lorsqu'on va supprimer un enregistrement
Avant MAJ Aprs avoir quitt un enregistrement modifi et avant l'enregistrement des
modifications
Aprs MAJ 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 La macro doit s'excuter :
Sur Clic Quand on clique sur le contrle
Sur Double Clic Quand on double-clique sur un contrle
Sur Entre Avant d'accder un contrle
Sur Sortie Lorsqu'on quitte un contrle
Avant MAJ Aprs avoir quitt un contrle modifi et avant qu'Access ne fasse la mise
jour
Aprs MAJ 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.

Cours ACCESS Les Macro Commandes


Page 7 sur 13

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.

3. 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.


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


Cours ACCESS Les Macro Commandes


Page 8 sur 13


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 mettre 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.

Cours ACCESS Les Macro Commandes


Page 9 sur 13

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) :





Cours ACCESS Les Macro Commandes


Page 10 sur 13
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.



Cours ACCESS Les Macro Commandes


Page 11 sur 13

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.

Cours ACCESS Les Macro Commandes


Page 12 sur 13

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 l assistant 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+".
Cours ACCESS Les Macro Commandes


Page 13 sur 13
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.