Anda di halaman 1dari 123

Informatique

Bases de donnes

TD ACCESS
Travail Dirig : "Facturation
Facturation"

Marc SOUQUES
souques@ensat.fr
Version du 14 avril 2011

Ce document appartient : ____________________________

INSTITUT NATIONAL POLYTECHNIQUE


ECOLE NATIONALE SUPERIEURE AGRONOMIQUE DE TOULOUSE
Av de lAgrobiopole, BP 107, 31 326 Auzeville Tolosane

Tel : 05.34.32.39.00

- ACCESS 2007 2010 - Travail dirig Facturation

Table des Matires


CH1.

BASE DE DONNEES "FACTURATION".............................................................................................................5

1.
2.

C AHIER DES CHARGES POUR APPLICATION "FACTURATION" ........................................................................................5


MODELE P HYSIQUE AVEC SES LIENS SUR LE SGBD A CCESS ........................................................................................5

CH2.

LES TABLES DE BASE ..........................................................................................................................................6

1.
2.

7.

C ONCEPTION ET C ONSTRUCTION DE LA BASE DE DONNEES ......................................................................................... 6


C REER LES TABLES S IMPLES ........................................................................................................................................6
Crer la table Client ..............................................................................................................................................7
Crer la table Produit............................................................................................................................................8
C REER LES TABLES C OMPLEXES ..................................................................................................................................9
Deux rgles de base pour crer des tables .......................................................................................................... 10
Etude des Commandes......................................................................................................................................... 11
Crer la table CommandeEnTete ........................................................................................................................ 12
Crer la table CommandeLigneProduit .............................................................................................................. 14
Conventions de nommage dans les Tables .......................................................................................................... 16
Importer des donnes d'Excel dans Access.......................................................................................................... 16
Exporter des donnes d'Access vers Excel .......................................................................................................... 16
S ECURITE DE L'UTILISATION DE L'APPLICATION ......................................................................................................... 17
U TILISER LES TABLES EN MODE I NTERACTIF.............................................................................................................. 18
Rechercher des donnes ...................................................................................................................................... 18
Remplacer des donnes ....................................................................................................................................... 18
Tester les boutons ............................................................................................................................................ 18
D EFINIR LES RELATIONS ENTRE LES TABLES .............................................................................................................. 19
Importance des relations dans un SGBD Relationnel ......................................................................................... 21
Des rgles dans les relations ............................................................................................................................... 21
Tester l'Intgrit Rfrentielle des Relations ....................................................................................................... 22
R ESUME DES T ABLES ................................................................................................................................................. 23

CH3.

LES REQUETES DE BASE................................................................................................................................... 24

3.

4.
5.

6.

1.

A.
B.
A.
B.
C.
D.
E.
F.
G.
A.
B.
C.
A.
B.
C.

2.

R EQUETE SELECTION ................................................................................................................................................. 24


Requte simple sur une seule table ...................................................................................................................... 24
Requte multitable simple avec Relation ............................................................................................................. 27
Requte multitable avec calcul par enregistrement............................................................................................. 29
Erreur viter dans les requtes multitable. ....................................................................................................... 31
Les fonctions du langage VBA pour les Requtes................................................................................................ 32
Exercices faire .................................................................................................................................................. 35
Requte avec calcul sur "Regroupement" d'enregistrements .............................................................................. 36
Exercices faire .................................................................................................................................................. 36
R ESUME DES R EQUETES ............................................................................................................................................. 37

CH4.

LES FORMULAIRES DE BASE .......................................................................................................................... 38

A.
B.
C.
D.
E.
F.
G.
H.

1.

3.

F ORMULAIRE U NITAIRE BASE SUR UNE TABLE ........................................................................................................... 38


Crer un Formulaire Colonne simple.................................................................................................................. 38
Utiliser un formulaire .......................................................................................................................................... 38
Modifier un formulaire ........................................................................................................................................ 39
F ORMULAIRE T ABULAIRE BASE SUR UNE REQUETE.................................................................................................... 43
Crer la requte source du futur Formulaire ...................................................................................................... 43
Crer un formulaire Tabulaire bas sur la requte............................................................................................. 44
Ajouter des contrles ........................................................................................................................................... 44
Exercices faire .................................................................................................................................................. 45
R ESUME DES F ORMULAIRES....................................................................................................................................... 45

CH5.

LES TABLES AVEC LISTES DEROULANTES DE CHOIX POUR CLE ETRANGERE........................... 46

1.
2.

T ABLES ACTUELLES BASIQUES................................................................................................................................... 46


C HAMP C LE ETRANGERE AVEC LISTE DEROULANTE DE C HOIX .................................................................................. 46
A.
Modifier proprits Liste de choix des champs cls trangres .......................................................................... 47
B.
Exercice faire ................................................................................................................................................ 49

CH6.

BILAN DE L'APPLICATION ............................................................................................................................... 51

1.
2.
3.

D ES TABLES ............................................................................................................................................................... 51
D ES R EQUETES .......................................................................................................................................................... 51
D ES F ORMULAIRES .................................................................................................................................................... 51

A.
B.
C.
2.
A.
B.
C.
D.

Ensat - Informatique Applique - Marc Souques

Page 2

- ACCESS 2007 2010 - Travail dirig Facturation

CH7.

FACTURATION: EXTENSIONS A FAIRE SEUL ............................................................................................ 52

1.
A.
B.
2.

A.
B.

3.
A.
B.
C.
CH8.
1.

C AHIER DES CHARGES POUR LES TABLES ................................................................................................................... 52


Table simple......................................................................................................................................................... 52
Table complexe.................................................................................................................................................... 52
C AHIER DES CHARGES POUR LES REQUETES .............................................................................................................. 53
Requte simple ..................................................................................................................................................... 53
Requte multitable ............................................................................................................................................... 53
C AHIER DES CHARGES POUR LES FORMULAIRES ........................................................................................................ 55
Formulaire simple ............................................................................................................................................... 55
Formulaire Tabulaire bas sur une requte ........................................................................................................ 55
Formulaire "Produit" complter ...................................................................................................................... 55
L'ETAT .................................................................................................................................................................... 56

2.

C REER UN ETAT ......................................................................................................................................................... 56


Etat bas sur une table ........................................................................................................................................ 56
Etat bas sur une requte .................................................................................................................................... 57
R ESUME DES E TATS ................................................................................................................................................... 60

CH9.

LES FORMULAIRES COMPLEXES .................................................................................................................. 61

1.
2.

F ORMULAIRE AVEC S OUS-FORMULAIRE ..................................................................................................................... 61


F ORMULAIRE AVEC S OUS FORMULAIRE COMPLEXE ................................................................................................... 63
Version base sur 2 Tables (pour FP) et 2 Tables (pour SF). ............................................................................. 63
Version base sur 3 niveaux de Tables................................................................................................................ 64
Version avec 2 sous formulaires de mme niveau. .............................................................................................. 64
F ORMULAIRE AVEC GRAPHIQUE ................................................................................................................................. 67
Graphique simple bas sur une Table ................................................................................................................. 67
F ORMULAIRE MENU PRINCIPAL ................................................................................................................................. 69
R ESUME SUR LES F ORMULAIRES ................................................................................................................................ 70

3.

A.
B.

A.
B.
C.
A.

4.
5.
CH10.
1.
2.

LES MACROS ........................................................................................................................................................ 72


MACRO DE DEMARRAGE AUTOMATIQUE : AUTOEXEC ............................................................................................... 72
MACROS POUR OUVRIR FORMULAIRES ET ETATS........................................................................................................ 72
A.
Crer la macro .................................................................................................................................................... 72
B.
Attacher une macro un vnement dun contrle Bouton................................................................................. 73

CH11.
1.

LES RECHERCHES .............................................................................................................................................. 74

R ECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MONO RESULTAT ............................................................. 75


Rechercher un client sur son Nom Prnom par liste droulante......................................................................... 75
Auto-Actualiser la liste droulante sur sa dfinition ........................................................................................... 77
2.
R ECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MULTI RESULTATS ........................................................... 77
A.
Rechercher des clients sur leur ville par liste droulante ................................................................................... 77
3.
R ECHERCHE MONO CRITERE, MULTI VALEURS DU CRITERE, MULTI RESULTATS ......................................................... 80
4.
R ECHERCHE MULTI CRITERES, MONO VALEUR DU CRITERE , MULTI RESULTATS ......................................................... 80
A.
B.

CH12.

LES FORMULAIRES COMPLEXES SUITE ..................................................................................................... 82

1.

S OUS FORMULAIRE BASE SUR R EQUETE AVEC CALCULS ............................................................................................ 82

CH13.
1.
2.
3.
4.

INTRODUCTION AUX BASES DE DONNEES ET A ACCESS ................................................................... 83


U N S YSTEME DE GESTION DE B ASES DE DONNEES .................................................................................................... 83
U NE APPLICATION DE B ASE DE D ONNEES.................................................................................................................. 83
U NE B ASE DE DONNEES ............................................................................................................................................. 83
ACCESS ................................................................................................................................................................... 84
A.
Choix entre Access et Excel pour dvelopper une application ? ......................................................................... 84

CH14.

CORRECTION EXTENSION: LES TABLES .................................................................................................... 85


A.
B.
C.
D.
E.
F.

CH15.

Crer la table Categorie ...................................................................................................................................... 85


Modifier la table Produit ..................................................................................................................................... 85
Crer la table Fournisseur .................................................................................................................................. 86
Crer la table Intermdiaire ProdFour ............................................................................................................... 86
Tirer les Relations avec Intgrit Rfrentielle: .................................................................................................. 88
Modle Conceptuel de Donnes (MCD) la source du Modle Physique Access............................................. 88
CORRECTION EXTENSION: LES REQUETES .............................................................................................. 89

A.
B.

Requte simple ..................................................................................................................................................... 89


Requte multitable ............................................................................................................................................... 89
Ensat - Informatique Applique - Marc Souques

Page 3

- ACCESS 2007 2010 - Travail dirig Facturation

CH16.

CORRECTION EXTENSION : FORMULAIRES.............................................................................................. 91


A.
B.
C.

Formulaire simple ............................................................................................................................................... 91


Formulaire Tabulaire bas sur une requte ........................................................................................................ 91
Formulaire produit complter .......................................................................................................................... 91

CH17.

DES ERREURS A NE PAS FAIRE....................................................................................................................... 92

CH18.

GESTION DES IMAGES DEPENDANTES D'ENREGISTREMENTS D'UNE TABLE ............................... 93

1.

A.
B.

2.
3.
4.
CH19.

I MAGES ET T ABLE : VERSION1 BASEE SUR C HAMP OLE ............................................................................................ 93


Grer un champ OLE .......................................................................................................................................... 93
Grer un contrle de formulaire pour afficher l'image ....................................................................................... 93
I MAGES ET T ABLE : VERSION 2 BASEE SUR C HAMP TEXTE ET MACRO D'AFFECTATION ............................................. 94
I MAGES ET T ABLE : VERSION 3 BASEE SUR C HAMP TEXTE ET P ROCEDURE-VBA D'AFFECTATION ............................ 97
R ESUME :S AISIR, STOCKER, MODIFIER ET S UPPRIMER DES IMAGES DANS DES ENREGISTREMENTS DE TABLE . .......... 99
LES TABLES AVEC CHAMPS A LONGUEUR VARIABLE ........................................................................ 100

1.
2.
3.

C HAMP DE TYPE MEMO............................................................................................................................................ 100


C HAMP DE TYPE P IECE JOINTE ................................................................................................................................. 100
C HAMP AVEC PLUSIEURS VALEURS .......................................................................................................................... 101
A.
Dmarche Classique Relationnelle.................................................................................................................... 102
4.
F ORMULAIRE BASE SUR UN MODELE DE FORMULAIRE.............................................................................................. 105
A.
Crer un modle de formulaire.......................................................................................................................... 105
B.
Crer un formulaire bas sur un 'modle' de formulaire................................................................................... 105
CH20.

LES MODES D'UTILISATION DE L'APPLICATION ................................................................................... 106

1.
2.

MODE UTILISATEUR : CONFIGURATION DU DEMARRAGE ......................................................................................... 106


MODE PARTAGE DE DONNEES ENTRE PLUSIEURS UTILIS ATEURS EN RESEAU LOCAL ................................................ 107

CH21.

LES MACROS AVANCEES................................................................................................................................ 108

1.
2.
3.

T ESTER LES EVENEMENTS DECLANCHANT DES MACROS DANS UN FORMULAIRE ...................................................... 108
MACRO CONDITIONNELLE ATTACHEE A UN EVENEMENT ......................................................................................... 109
R EFERENCE DES ACTIONS DES MACROS .................................................................................................................. 111

CH22.

MODIFICATION DES DONNEES DES TABLES ........................................................................................... 113

1.
2.

MODIFICATION MANUELLE ...................................................................................................................................... 113


MODIFICATION AUTOMATIQUE PAR REQUETE ......................................................................................................... 114
A.
La requte action ............................................................................................................................................... 114
B.
La requte action paramtre par formulaire ................................................................................................... 115
3.
MODIFICATION AUTOMATIQUE PAR MACRO ............................................................................................................ 117
A.
Mise jour Automatique Invisible du stock de Produit sur vnement Saisie de la Quantit commande ....... 117
CH23.

TRAITEMENTS DE SYNTHESE ...................................................................................................................... 120

1.
A.
B.
CH24.

F ORMULAIRE T ABLEAU C ROISE DYNAMIQUE (TCD) .............................................................................................. 120


Crer la requte source du futur formulaire ..................................................................................................... 120
Crer le formulaire TCD bas sur la requte.................................................................................................... 121
LA BASE DE DONNEES FINALE..................................................................................................................... 123

Ensat - Informatique Applique - Marc Souques

Page 4

- ACCESS 2007 2010 - Travail dirig Facturation

Ch1. Base de donnes "Facturation"


A partir dun cahier des charges dfinissant le sujet de l'application, cration de la base de donnes.

1. Cahier des charges pour application "Facturation"


Grer une application commerciale de facturation pour PME.
Il existe des ensembles de Clients, de Commandes et de Produits.
Un Client
fait rfrence au plus plusieurs () Commandes.
Une Commande fait rfrence au plus 1 seul Client.
Une Commande fait rfrence au plus plusieurs Produits (commands).
Un Produit
fait rfrence au plus plusieurs Commandes (o il est command)
Pour 1 Commande ET pour 1 Produit, il y a 1 Quantit de produit commande.

2. Modle Physique avec ses liens sur le SGBD Access


Structure de la base de donnes crer.

Ci-dessous, les champs des tables avec les VALEURS assurant les Relations.
Cl primaire
SANS doublon

Cl primaire
SANS doublon

Cl primaire
SANS doublon
base sur

2 champs

Cl primaire
SANS doublon

Cl
trangre
AVEC
doublons

Lgende :
Cl primaire mono ou multi champ
Cl trangre lie une cl primaire

Cl
trangre
AVEC
doublons

Ensat - Informatique Applique - Marc Souques

Cl
trangre
AVEC
doublons

Page 5

- ACCESS 2007 2010 - Travail dirig Facturation

Ch2. Les Tables de base


Objectif du TD :
Construire une Base de Donnes de FACTURATION base sur plusieurs Tables :
- Client
- Produit
- Commande - Produit Command
pour commencer

1. Conception et Construction de la Base de donnes


Lorsque l'on veut construire une Maison, on doit procder en 3 temps :
a) Crer sur le papier un Plan Conceptuel sans aspect technique des diffrentes Pices qui composent
la future Maison et grer les Liens et Interdpendances qui existent entre ces Pices.
b) Crer sur le papier un Plan Logique, partir du Plan Conceptuel, en y ajoutant les lments
techniques (type de matriaux, paisseur isolation, cblage lectrique, rseau eau, chauffage, ).
c) Construire sur le Terrain la Maison Physique , partir du Plan Logique.
En informatique, pour construire une Base de Donnes, on procde de mme en 3 temps :
a) Crer sur le papier un Modle Conceptuel (sans aspect technique) des diffrentes Entits qui
composent la future Base de Donnes et grer les Associations (liens) qui existent entre ces Entits.
b) Crer sur le papier un Modle Logique, partir du Modle Conceptuel, en y ajoutant les lments
techniques (Cl primaire, Cl trangre, Relations d'une Base de Donnes RELATIONNELLE)
c) Construire sur l'Ordinateur (Access) la Base de Donnes Physique , partir du Modle Logique.
(Voir ventuellement Cours de Modlisation prsentant ces 3 modles)
Ce TD vise utiliser ACCESS pour crer directement sur ordinateur une Base de Donnes Physique
mais il est recommand de se documenter sur les cours de Modlisation des Donnes qui
permettent de crer Modles Conceptuels de Donnes (MCD) et Modles Logiques de Donnes (MLD).
Vous trouverez plus loin dans ce document (fin Chapitre 14) le MCD (Modle Conceptuel des Donnes)
correspondant la base de donnes Access dveloppe dans ce TD.

Notre dmarche consiste, pour la partie concernant les Donnes, tablir au fur et mesure quelques
rgles simples pour dfinir les Tables de notre application de Facturation.
Dmarrer ACCESS .
Clic sur Base de donne vide, Clic sur
pour choisir un dossier puis nommer l'application ESSAI
(l'extension accdb signifie Access Data Base c'est le format 2007 et 2010) et bouton Crer.
- Si besoin, comprhension et configuration de l'environnement de travail :
Bouton
Office (Fichier en Version 2010) puis Options Access :
- Standard : Dfinir le dossier de donnes par dfaut pour ouvrir ou enregistrer des bases
- Base de donnes active : Cocher Compacter lors de la fermeture (pour rduire la taille du fichier accdb)
- Personnaliser : Dfinir les icones de la barre d'accs rapide
en haut d'cran et valider OK.

2. Crer les Tables Simples


Nous allons crer les tables Client et Produit qui sont simples car chaque enregistrement ne fait pas
rfrence au plus 1 seul enregistrement d'une autre table.
Un Client
ne fait pas rfrence au plus 1 seule Commande ou au plus 1 seul Produit command.
Un Produit ne fait pas rfrence au plus 1 seule Commande ou au plus 1 seul Client.
Fermer la table ouverte par dfaut.
Onglet Crer, Bouton

Cration de Table pour tre en mode 'Cration'


Ensat - Informatique Applique - Marc Souques

Page 6

- ACCESS 2007 2010 - Travail dirig Facturation

A. Crer la table Client


Nom du Champ
Num Client
Nom

Type de donnes
NumroAuto
Texte
(Attention : le type
Texte est limit
255 caractres !)
Texte

Voir exemple en bas de page


Proprits

Un nombre qui sincrmente


automatiquement chaque nouveau
client saisi : 1 puis 2 puis 3
Taille : 25
Format : > (conversion en Majuscule)
Null interdit : OUI (saisie obligatoire) (Null = VIDE)
Chaine vide autorise : NON
Si besoin de plus de 255
caractres, utiliser le
Prnom
Taille : 15
Null interdit : OUI
type Mmo (taille illimite)
Chaine vide autorise : NON
Fonction Date() retournant la
Adresse
Texte
Taille : 30
date du jour. On peut la
Code Postal
Texte (pas Num car on Taille : 5
ne fait pas de calcul sur Null interdit : NON donc
trouver par , Fonction,
les codes postaux !)
Fonction intgres,
saisie facultative
Ville
Texte
Taille : 25, Format : > (Majuscule) Date/heure, Date
Valeur par dfaut : TOULOUSE
Date Entre
Date/Heure
Format : Date, abrg
Valeur par dfaut : Date( )
Afficher le slecteur : certaines dates
Une cl primaire est un (ou plusieurs) champ de la table qui identifie sans ambigut chaque
enregistrement de la table (chaque lment de la population ). Deux mmes valeurs dans 2
enregistrements de ce champ sont interdites (pas de doublons: 2 personnes ne doivent pas avoir le mme
numro de client 3).
Dfinir une cl primaire sur le champ: Num Client en slectionnant ce champ puis barre doutils
Cl primaire (Cela bascule automatiquement la proprit Index du champ Num Client : Oui SANS doublon).
Convention personnelle pour Nom de la Cl primaire : Num + (Nom de table) = Num Client
On souhaite que le couple Nom Prnom soit unique, interdire 2 fois LECLERC Alain. Clic sur Index :
Donner librement un Nom un Index : NomPrenom
Choisir dans la liste droulante les 2 champs indexer : Nom puis Prnom
Slectionner la ligne NomPrenom et saisir Unique : Oui
pour viter les doublons sur ce couple de champs
Enregistrer
la table (disquette de la barre outils 'Accs rapide') : Client

Passer en mode Feuille de donnes


pour saisir 3 Clients comme ci-dessus :
Ok pour message erreur ci-dessus, pour viter le doublon MUILLARD Marc, modifier l'enregistrement
3 en DURAND Alain pour avoir :

Passer en mode Cration

pour consulter la structure de la table puis fermer (croix droite) la table Client.

Ensat - Informatique Applique - Marc Souques

Page 7

- ACCESS 2007 2010 - Travail dirig Facturation

B. Crer la table Produit


Onglet Crer, Bouton
Cration de Table pour tre en mode 'Cration'
Si besoin de plus de 255 caractres,
Nom du Champ
Type de donnes
Proprit du champ
utiliser le type Mmo (taille illimite)
Num Produit
Texte
Taille : 6
Dsignation
Texte
Taille : 60
Valide si : >=3
Prix Ht
Montaire
(pour afficher uros) Message si erreur :Vrifier le minimum (>=3 )
Taux Tva
Numrique
Taille : Rel simple
(Touche F1 pour lAide)
Format
:
Pourcentage
(%)
Ici, le Num Produit n'est pas en NumroAuto
Valeur
par
dfaut
:
taper
0.196
pour obtenir
car on veut grer notre propre Numrotation :
3 lettres pour la marque du produit et
0,196 (virgule la place du point)
3 chiffres pour le rang du produit dans la marque Valide si : 0.196 Ou 0.055
(ACE002 pour le 2 produit de marque ACER)
Message si erreur : Vrifier le taux
Le Prix Ttc est une valeur calcule (Prix Ttc = Prix Ht * (1+Taux Tva)). On ne stocke pas
dans une Table un champ calcul car on risque l'erreur d'avoir calcul et stock un PrixTtc sur
un ancien Prix Ht : exemple
Prix Ht = 100 ; Prix Ttc = 119.6 puis modif Prix Ht = 95 et Prix Ttc = 119.6 faux car non modifi

On calculera donc le Prix Ttc (sur les actuels Prix Ht et Taux Tva) chaque fois que l'on en aura
besoin mme si cela prend un peu (si peu) de temps-machine.
Rgle : La Table stocke des informations de base (non calcules)
Une cl primaire est un (ou plusieurs) champ de la table qui identifie sans ambigut chaque
enregistrement de la table (chaque lment de la population). Deux mmes valeurs dans deux
enregistrements de ce champ sont interdites (pas de doublons: 2 produits ne doivent pas avoir le mme
numro de produit).
Dfinir une cl primaire sur le champ: Num Produit en slectionnant ce champ puis barre doutils
Cl primaire (Cela bascule automatiquement la proprit Index du champ Num Produit : Oui SANS doublon).
Convention personnelle pour Cl primaire : Num + (Nom de table) = Num Produit
On souhaite que la Dsignation du produit soit unique, interdire 2 fois Imprimante laser Canon type 1.
On veut donc un index sans doublon (unique) sur le seul champ Dsignation
Complter la description du champ Dsignation avec :
Dsignation
Texte
Index : Oui sans doublons
Ici, il est inutile de passer par Clic sur Index
car l'index est
ici MONO-Champ.
Par contre, le rsultat est bien stock dans les index :

ATTENTION :
Index : Oui sans doublons car Cl Primaire
Num Produit
Texte
Dsignation
Texte
Index : Oui sans doublons sans tre Cl primaire
La cl primaire est le champ qui identifie chaque enregistrement de la table, c'est cette information qui
est utilise dans une autre table pour pointer (rfrencer) vers la table Produit.
Enregistrer la table : Produit puis Fermer la table :
Remarque : Les noms des tables sont nots au singulier (Client, Produit) sans prfixe Tab Produits
Faire un effort dans le choix des noms des tables pour que le nom corresponde au contenu de la table :
Les produits Catalogue produit Produits vendus
Visualisation en mode feuille de donnes
Ouvrir la table Produit par double-clic sur Produit :
Ensat - Informatique Applique - Marc Souques

Page 8

- ACCESS 2007 2010 - Travail dirig Facturation

Passer en mode Cration par le bouton

(en haut gauche) de l'onglet Accueil :

Passer en mode Feuille de donnes par le mme bouton de barre d' outils :

(en haut gauche)

Saisir : (remarque les erreurs volontaires sont en italique et soulign ci-dessous)


Num Produit
Dsignation
Prix Ht
Taux Tva
CAN001
Imprimante laser 1 puis 300 19.6%
Canon type 1
MIC001
Initiation

15 20.6% puis 5.5%


ACCESS pour
erreur
erreur
erreur
les Nuls
CAN001
Imprimante
1000 19.6%

erreur
EPS001

Imprimante

75 19.6%

Erreur
Erreur sur le Prix
Erreur sur la Tva
La tva sur les livres est 5.5%
Erreur sur Num Produit
dtecte seulement aprs saisie
de Taux Tva (doublon dans cl
primaire avec le 1 enregistrement) :
modifier ce Num Produit en
CAN002
Erreur sur Dsignation
(doublon sur proprit "OUI
sans doublon"), modifier cette
Dsignation avec Imprimante
Jet encre Epson srie1

Remarque sur le champ Num Produit : les 3 premires lettres correspondent la marque du produit.
CAN pour Canon, EPS pour Epson, MIC pour l'diteur Microapplication
Il y a vrification automatique de lunicit (Unique) de la cl Primaire de Num produit.
Remarque : les Donnes saisies sont enregistres automatiquement (pas besoin d'enregistrer sauf la
mise en forme ou les dfinitions des champs des tables).
Elargir la colonne Dsignation (modification de la mise en forme).
Fermer la table : (l'enregistrement de la mise en forme de la table est propos)
Ouvrir la table : elle est trie sur la cl primaire : Num Produit
Ajouter un enregistrement par ce bouton
dans la dernire ligne de la
table signale par
(ce symbole sur une ligne vierge indique la position pour ajouter des
enregistrements) et tester lerreur sur le taux de TVA:
CAN003
Imprimante Canon couleur 300
33.33% puis 19.6%
Supprimer l'enregistrement ci-dessus en le slectionnant pralablement par la colonne grise gauche
de Num Produit puis Suppr du clavier. Fermer la table :

3. Crer les Tables Complexes


Nous allons crer les tables pour grer les Commandes de Produits faites par les Clients.
Il y a 2 aspects complexes concernant les Commandes de Produits :
a) Chaque enregistrement d'une table1 fait rfrence au plus 1 seul enregistrement d'une table2.
- Une Commande
fait rfrence au plus
1 seul Client.
b) Chaque enregistrement d'une table1 fait rfrence au plus N enregistrements d'une table2 et
chaque enregistrement d'une table2 fait rfrence au plus N enregistrements d'une table1.
- Une Commande
fait rfrence au plus
N Produits qui sont commands et
un Produit
fait rfrence au plus
N Commandes o il est command.

Ensat - Informatique Applique - Marc Souques

Page 9

- ACCESS 2007 2010 - Travail dirig Facturation

A. Deux rgles de base pour crer des tables


Si on ne dispose pas d'une analyse des donnes sous forme de Modle Conceptuel de Donnes (MCD)
et Modle Logique de Donnes (MLD) , on peut utiliser les rgles suivantes directement dans Access.
De manire trs simplifie et limite , il existe 2 types principaux de relation entre 2 tables :

Relation Pre - Fils

et

Relation Frre - Sur

1) Relation Pre - Fils :


Un Pre peut avoir de 0 N Fils, un Fils peut avoir de 0 1 Pre.
Pour grer cette relation, on ajoute dans la table Fils
un champ Ref Pre contenant la valeur de l'identification du Pre.
Cl trangre
AVEC doublons

Cl primaire
SANS doublon

PERE

FILS

x
x

Pre sans fils ou ayant


perdu son ou ses fils

Table Fils

Fils de pre
inconnu

Table Pre

Convention perso pour nom Cl trangre : Ref + (Nom de la table lie) = Ref Pre (en italique bleu)
Convention perso pour nom Cl primaire : Num + (Nom de la table) = Num Fils (en gras rouge)

Demander voir ventuellement exemple diapositive : "PV et sa Voiture".


2) Relation Frre - Sur
Un Frre peut avoir de 0 N Surs, une Sur peut avoir de 0 N Frres.
Pour grer cette relation, on ajoute une nouvelle table intermdiaire avec
un champ Ref Frre un champ Ref Soeur D'ventuels champs
contenant la valeur de contenant la valeur de dpendants de frre
l'identification de Frre l'identification de Sur ET sur.
Cl primaire
SANS doublon

Table Frre

Cl trangre
Cl trangre
AVEC doublons AVEC doublons

Table Croisement : Frre - Sur

FRERE

SOEUR

x
x

x
x
x
x

x
x

Cl primaire
SANS doublon

Table Sur

Autre prsentation non informatique de la table Croisement Frre - Sur


A l'aide de ces 2 rgles de base, nous allons grer les Commandes de Produits faites par les Clients.

Ensat - Informatique Applique - Marc Souques

Page 10

- ACCESS 2007 2010 - Travail dirig Facturation

B. Etude des Commandes


1) Relation Pre Fils
Un Client
Une Commande

fait rfrence au plus


fait rfrence au plus

N Commandes.
1 seul Client.

Table Commande
Table Client

Convention :
gras +
soulign
indique une
cl primaire

2) Relation Frre Sur


Une Commande
Un Produit

fait rfrence au plus


fait rfrence au plus

N Produits
N Commandes

qui sont commands.


qui le commandent.

Table Commande
Table Produit
Table Croisement : Commande - Produit
On nomme gnralement cette table de Croisement en mixant les noms des 2 tables croises, par
exemple : ComProd ou ProdCom

Ensat - Informatique Applique - Marc Souques

Page 11

- ACCESS 2007 2010 - Travail dirig Facturation

C. Crer la table CommandeEnTete


Un Client
fait rfrence au plus plusieurs () Commandes.
Une Commande fait rfrence au plus 1 seul Client.
Nous sommes donc dans la rgle Pre Fils vue prcdemment.
Un Pre
fait rfrence au plus
plusieurs Fils
Un Fils
fait rfrence au plus
1 seul Pre
Donc nous grerons un champ Ref Client dans la table Commande pour pointer vers le champ
Num Client Cl primaire de la table Client.
Ce champ Ref Client est appel Cl trangre car il sera reli plus tard Num Client.

On gre ici la partie fixe de la Commande, le haut de la commande, son En-tte, sans prendre en
compte les produits commands car ils sont en nombre variable.
Un nombre qui sincrmente
Nom du Champ
Type de donnes Proprits
automatiquement chaque nouvelle
commande saisie : 1 puis 2 puis 3
Num Commande
NumroAuto
Ref Client
Numrique
Taille : Entier long ; PAS de valeur par dfaut
(pour futur lien vers Num
Null interdit : OUI donc saisie obligatoire d'1 valeur de
Client
Chaine vide autorise : NON
de table CLIENT)

(pour future compatibilit avec Num Client de la table


Client qui est NumroAuto donc en Numrique-Entier long)

Date Commande

Date/Heure

Date Echance

Date/Heure

Paye

Oui/Non

Format : Date, abrg


(jj/mm/aaaa)
Valeur par dfaut : Date( ) (=date du jour)
Afficher le slecteur : certaines dates
Format : Date, abrg
Aujourd'hui
Valeur par dfaut : Date( ) + 30
+ 30 jours
Afficher le slecteur : certaines dates
Valeur par dfaut : Non

Total Commande : NE PAS grer car ce n'est pas une DONNEE mais un CALCUL
Remarque : Dans cette table CommandeEnTete, le nom Ref Client est choisi librement.
Je prends la rgle 'Ref'+NomTable lie pour la Cl trangre mais d'autres solutions sont possibles.
(Num Client est souvent utilis mais confusion possible avec le nom et le rle de Num Client qui
est cl primaire de la table CLIENT)
Dfinir la cl primaire sur le champ : Num Commande
Enregistrer la table : CommandeEnTete

Donne existant dans la cl


primaire Num Client de la
table Client

Passer en mode Feuille de donnes :


Saisir :
Num Commande Ref Client Date Commande
1 (Automatique)
3
(saisir une date)
3
(valider date)
2 (Automatique)
1
(valider date)
3 (Automatique)

Table Client
Date Echance
(saisir une date)
(valider date)

(saisir une date)

Paye
Cocher pour Oui
Rien pour Non
Cocher pour Oui

Il y a 3 CommandeEnTete.

Ensat - Informatique Applique - Marc Souques

Page 12

- ACCESS 2007 2010 - Travail dirig Facturation

a) La Commande 1 fait rfrence un seul client (le 3) par le champ Ref Client.
Num Commande Ref Client
Date
Date Echance
Paye
Commande
1
3
b) Le Client 3 fait rfrence plusieurs Commandes (la 1 et la 2) par le champ Ref Client
Num Commande Ref Client
1
2

Date
Commande

Date Echance

Paye

3
3

C'est par cette technique que l'on respecte le cahier des charges :

Une Commande fait rfrence au plus 1 seul Client.


Un Client
fait rfrence au plus plusieurs () Commandes.
Fermer la table CommandeEnTete.
Le texte ci-dessous est une explication, il n'y a rien faire mais tout lire.

Gestion de la saisie dans la cl trangre Ref Client :


Pour le champ Ref Client, pour le moment, la saisie est faite au clavier en tapant manuellement 3 par
exemple.
En ralit, pour une liste de clients comme celle ci-contre,
on ne peut faire rfrence pour Ref Client de la table CommandeEnTete qu' 1
des 3 clients identifis (1, 2, 3) dans la cl primaire Num Client de la table
Client.
Une erreur consisterait pour Ref Client saisir un numro 4 qui n'existe pas dans Num Client.
Pour viter cette erreur, nous grerons plus tard (voir Chapitre 5 LES TABLES AVEC LISTES
DEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Client par une liste droulante ne
proposant QUE les Clients qui existent dans la cl primaire Num Client de la table Client.
Pour faciliter le choix du client de la commande, nous prsenterons en plus de Num Client, le Nom et le
Prnom du client en classant ces clients par ordre alphabtique des Noms Prnoms.

Nous pourrons mme simplifier la saisie en n'affichant pas le Numro du Client.

Le champ Ref Client a le rle technique de grer le lien entre les 2


tables. Il a ici un nom peu comprhensible pour l'utilisateur.
La proprit Lgende des champs permet de grer un nom de
substitution qui s'affichera la place de Ref Client.
Nous n'utilisons pas cette procdure pour le moment pour ne pas compliquer la comprhension.
Si vous relisez ce polycopi pour faire un projet Access, il faut traiter la gestion de ces listes
droulantes de cls trangres ds la cration des Tables .
Ensat - Informatique Applique - Marc Souques

Page 13

- ACCESS 2007 2010 - Travail dirig Facturation

D. Crer la table CommandeLigneProduit


Une Commande
fait rfrence au plus plusieurs Produits (commands).
Un Produit
fait rfrence au plus plusieurs Commandes.(o il est command)
Pour 1 Commande ET pour 1 Produit, il y a 1 Quantit de produit commande.
Nous sommes donc dans la rgle Frre Sur vue prcdemment.
Un Frre
fait rfrence au plus
plusieurs Surs
Une Sur
fait rfrence au plus
plusieurs Frres
Donc, alors que les tables CommandeEnTte et Produit sont dj cres, nous allons crer une nouvelle
table intermdiaire entre ces 2 tables pour assurer le lien plusieurs plusieurs (N / N).
Donc nous grerons dans cette table un champ Ref Commande pour pointer vers le champ
Num Commande Cl primaire de la table Commande.
Ce champ Ref Commande est appel Cl trangre car il sera reli avec le champ Num Commande.
Donc nous grerons dans cette table un champ Ref Produit pour pointer vers le champ
Num Produit Cl primaire de la table Produit.
Ce champ Ref Produit est appel Cl trangre car il sera reli avec le champ Num Produit.

On gre ici la structure de la table pour un Produit command d' une CommandeEnTete.
C'est la table de croisement entre la table CommandeEnTete et la table Produit.
Nom du Champ
Type de
Proprits
donnes
Ref Commande

Numrique

Taille : Entier long ;

Texte

Null interdit : OUI ; Chaine vide autorise : NON


Taille : 6 ; PAS de valeur par dfaut ,

(pour lien vers


Num Commande
de table CommandeEnTete)

Ref Produit
(pour lien vers
Num Produit
de table Produit)

PAS de valeur par dfaut

(pour future compatibilit avec Num Commande de la table


CommandeEnTete qui est en NumroAuto donc en
Numrique-Entier long),

(pour future compatibilit avec Num Produit de la table


Produit qui est Texte de longueur 6)

Null interdit : OUI ; Chaine vide autorise : NON


Quantit
Numrique
Taille : Rel simple (au cas o on vendrait 1 boite et
(quantit commande d'un
demie de 10 DVD = 15 DVD = 1,5 boite)
produit d'une commande)
Valeur par dfaut : 1
Ici, la cl primaire n'est pas mono-champ. C'est le couple 1 - CAN001 qui identifie
un Produit command (CAN001) dans le cadre d'une Commande (1).
Dfinir une cl primaire : slectionner les 2 premiers
champs Ref Commande, Ref Produit par un gliss la
souris (dans la colonne de gauche) et les dfinir par le bouton
Cl primaire
comme cl primaire compose :
Attention :
Ref Commande et Ref Produit ne sont pas individuellement cl primaire
mais le couple Ref Commande + Ref Produit est cl primaire.
Il n'y a qu'1 Cl primaire par Table.

Ensat - Informatique Applique - Marc Souques

Page 14

- ACCESS 2007 2010 - Travail dirig Facturation

Enregistrer la table : CommandeLigneProduit


(Ce nom intgre Commande et Produit : les 2 tables croises)
Passer en mode Feuille de donnes :

Donne existant dans la cl


primaire Num Produit de la
table Produit

Saisir :
Ref Commande

Ref Produit
Quantit
CAN001
4
1
EPS001
2
Table Produit
2
CAN001
1
2
CAN002
3
2
MIC001
5
Table CommandeLigneProduit
Nous avons donc 5 Produits commandes dans CommandeLigneProduit rpartis sur 2 Commandes.
La Commande 1 (Ref Commande) contient 2 Produits, CAN001 et EPS001
La Commande 2 (Ref Commande) contient 3 Produits, CAN001, CAN002 et MIC001
1

Le Produit CAN001 (Ref Produit) a t command 2 fois, dans les Commandes 1 et 2.


Un produit command est identifi par la cl primaire composite Ref Commande - Ref Produit .
Le couple 1 - CAN001 identifie la commande du produit CAN001 dans la commande 1.
Il est impossible de ressaisir ce couple 1 - CAN001 sinon Doublon sur cl primaire.
Fermer la table CommandeEnTete
Fermer Access et donc la base essai (croix en haut droite)
Le texte ci-dessous est une explication, il n'y a rien faire mais tout lire.

Gestion de la saisie dans les cls trangres Ref Commande et Ref Produit :
Pour le champ Ref Produit, pour le moment, la saisie est faite au clavier en tapant manuellement
CAN001 par exemple.
En ralit, pour une liste de produit comme celle ci-contre,
on ne peut faire rfrence pour Ref Produit de la table CommandeLigneProduit
qu' 1 des n Produits identifis (ACE001, ACE002, CAN001, ) dans la cl
primaire Num Produit de la table Produit.
Une erreur consisterait pour Ref Produit saisir ABC001 qui n'existe pas dans Num Produit.
Pour viter cette erreur, nous grerons plus tard (voir Chapitre 5 LES TABLES AVEC LISTES
DEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Produit par une liste droulante ne
proposant QUE les Produits qui existent dans la cl primaire Num Produit de la table Produit.
Pour faciliter le choix du produit command, nous
prsenterons en plus de Num Produit, la
Dsignation du produit en classant ces dsignations
de produits par ordre alphabtique.

Nous pourrons mme simplifier la saisie en


n'affichant pas le Numro du Produit.
Si vous relisez ce polycopi pour faire un projet
Access, il faut traiter la gestion de ces listes
droulantes de cls trangres ds la cration des
Tables.
Faire de mme pour l'autre cl trangre Ref Commande de cette table.

Ensat - Informatique Applique - Marc Souques

FIN TD1
Page 15

- ACCESS 2007 2010 - Travail dirig Facturation

E. Conventions de nommage dans les Tables


- Pour les noms des champs :
J'ai choisi d'utiliser les possibilits d'Access avec espaces et accents car ces noms sont affichs
l'utilisateur de l'application.
Je mets une majuscule la premire lettre de chacun des mots composant le Champ.
Exemple :

Date Echance

avec 2 majuscules, 1 espace entre Date et Echance et 1 accent.

Remarque : On peut aussi grer des noms sans espace et sans accent (DateEcheance) pour faciliter
l'criture de ces noms en programmation VBA et grer dans ce cas la proprit du champ Lgende qui
propose un nom de substitution (avec espaces et accents : Date d'Echance) pour les affichages dans les
formulaires
- Pour les noms des tables :
J'ai choisi de NE PAS utiliser les possibilits d'espace et d'accent car ces noms NE SONT PAS affichs
l'utilisateur de l'application.
Je mets une majuscule la premire lettre de chacun des mots composant la Table.
Je note les noms de table au singulier car une table dfinit la structure pour 1 enregistrement type.
Exemple :

CommandeEnTete

avec 2 majuscules, 0 espace, 0 accent et au singulier.

F. Importer des donnes d'Excel dans Access


Le menu Donnes Externes permet d'importer des donnes d'origines diverses vers Access.
Attention : la structuration des donnes dans Excel est incompatible avec celle d'Access.
On peut rcuprer certaines informations d'Excel dans Access mais un travail manuel est ensuite
ncessaire pour restructurer ces informations suivant le modle Relationnel utilis par Access.
Le transfert Excel Access est souvent difficile.

G. Exporter des donnes d'Access vers Excel


Le menu Donnes Externes permet d'exporter des donnes vers diverses destinations comme Excel.
Remarque : la structuration des donnes dans Excel est incompatible avec celle d'Access.
On peut exporter des informations d'Access vers Excel.
Le transfert Access Excel est gnralement facile.

Ensat - Informatique Applique - Marc Souques

Page 16

- ACCESS 2007 2010 - Travail dirig Facturation

4. Scurit de l'utilisation de l'application


Par dfaut, Access est configur comme ci-dessous dans Bouton
Office (Fichier dans version
2010), Options Access, Centre de gestion de la confidentialit, Paramtres de centre de gestion de
la confidentialit :

Donc, l'ouverture d'une application Access, vous pouvez voir ceci :

En effet, une application Access (comme Excel, Word et Powerpoint) peut avoir un contenu (programme
VBA ou autres techniques) potentiellement dangereux.
Donc, ici, du contenu est dsactiv. Pour grer cet aspect, plusieurs solutions :
1. Garder la configuration ci-dessus et cliquer
chaque ouverture de la base sur le bouton Option
puis choisir Activer le contenu si vous faite confiance
l'origine du fichier.
2. Modifier la configuration ci-dessus en activant l'option
Activer toutes les macros. C'est non recommand et
potentiellement dangereux car ainsi, pour toutes les
applications, du code malsain peut tre excut.
3. Garder la configuration ci-dessus pour le Paramtre des macros Dsactiv mais dfinir un
dossier o vous rangerez les applications de confiance (les vtres par exemple). Dans la fentre
du Centre de gestion de la confidentialit, Emplacements approuvs, ajouter un nouvel
emplacement pour un dossier (et ventuellement ses sous-dossiers) pour obtenir un rsultat de ce
type. Attention, cette opration peut poser problme sur un disque dun rseau local protg.

C'est cette dernire solution qui est recommande et que vous mettez en place.
Valider ces paramtres et fermer Access.
-Sous l'application Explorateur de fichiers
:
- Supprimer ventuellement la base : essai.accdb
- Copier Fac01a2007.accdb depuis le dossier de correction vers votre dossier de travail.
- Ouvrir la base : Fac01a2007.accdb par double clic (la votre , pas celle donne en correction)
Cette application a les mmes dfinitions que ci-dessus mais avec plus de donnes saisies dans les
tables.

Ensat - Informatique Applique - Marc Souques

Page 17

- ACCESS 2007 2010 - Travail dirig Facturation

5. Utiliser les tables en mode Interactif


A. Rechercher des donnes
Ouvrir Table Client :
Positionner le curseur sur le champ Nom et sur lenregistrement 1:
Clic sur le bouton de Recherche
(Jumelles de l'onglet Accueil) : TERIEUR puis bouton Suivant
1) Caractres gnriques * ? #
a) Astrisque : * (remplace une chane de caractres quelconque)
Positionner le curseur sur le champ Nom et sur lenregistrement 1:
Rechercher : BON*
Rechercher :
*R
b) Point d'interrogation : ? (remplace un seul caractre quelconque)
Positionner le curseur sur le champ Nom Client et sur lenregistrement 1:
Rechercher :
??R
c) Dise : # (remplace un seul caractre-chiffre)
Positionner le curseur sur le champ Adresse et sur lenregistrement 1:
Rechercher :
6#*
Rechercher :
6* (comprendre la diffrence avec 6#*)

B. Remplacer des donnes

Ce que vous cherchez 'bd'


est ou pas une sous partie
du 'champ entier' ?

Onglet Accueil > bouton de Recherche


> Remplacer...
Positionner le curseur sur le champ Adresse et sur lenregistrement 1:
Rechercher :
bd
(attention : rechercher dans "champ entier" ou autre manire ?)
Remplacer par:
boulevard
a) en manuel : bouton Suivant pour chercher et bouton Remplacer pour modifier
b) en automatique : bouton Remplacer tout
Remettre bd la place de boulevard

C. Tester les boutons


1) Les 5 boutons de dplacement denregistrements en bas dcran

Premier , Prcdent, Rang de l'enregistrement courant

, Suivant, Dernier, Nouvel enregistrement

2) Les 2 boutons de tri croissant et dcroissant

Ensat - Informatique Applique - Marc Souques

Page 18

- ACCESS 2007 2010 - Travail dirig Facturation

6. Dfinir les relations entre les tables


Nous avons maintenant 4 tables, prpares pour tre lies les unes aux autres. Avant de tirer les
Relations, il faut vrifier que toutes les tables sont fermes et non utilises par des formulaires ou
requtes.
Accder la fentre Relation :
Onglet Outils de base de donnes
/ Relations

Ci-dessus : travail faire = lier les tables par des Relations ou Jointures

Ajouter (si besoin par bouton +Afficher la table ) les 4 tables: Client, CommandeEnTete,
CommandeLigneProduit et Produit et fermer cette fentre d'ajout.
1 lien :
1 Client (Pre) peut avoir N CommandeEnTete (Fils) et
1 CommandeEnTete (Fils) est lie 1 seul Client (Pre)
Dfinir des Liens ( appels aussi Jointures) :
* Glisser Num Client de Client (cl primaire) sur
Ref Client de CommandeEnTete (cl trangre)
. Bote de dialogue :
- cocher Appliquer Intgrit Rfrentielle,
(vrifications des donnes des liens, voir TEST plus loin)
- Ne pas cocher 'Mettre jour en cascade'
- Ne pas cocher 'Effacer en cascade'
- Type de Jointure (consulter seulement)
Crer
EGAUX
Un--plusieurs : c'est le cas classique
Un--un : erreur probable

Remarque : le 1 et le se placent automatiquement sur le lien,


Le 1 cot du champ cl primaire car ce champ est sans doublon,
Le cot du champ cl trangre car ce champ est doublons possibles.
Pour une valeur de Num Client, on peut trouver N () Commandes.
Pour une valeur de Ref Client, on ne peut trouver qu'1 Client.
2 lien :
1 CommandeEnTete peut avoir N CommandeLigneProduit et
1 CommandeLigneProduit est lie 1 seule CommandeEnTete
Dfinir des Liens ( appels aussi Jointures) :
* Glisser Num Commande de CommandeEnTete (cl primaire) sur
Ref Commande de CommandeLigneProduit (cl trangre)
Remarque : Ref Commande n'est pas un champ cl primaire (malgr le symbole cl ) mais la moiti
d'une cl primaire qui elle est compose des 2 champs Ref Commande et Ref Produit
. Bote de dialogue
- cocher Appliquer Intgrit Rfrentielle (vrifications des donnes des liens, voir TEST plus loin)
- Relation 1 Plusieurs
-Pas de Mise jour et pas d'Effacement en cascade
- Type de Jointure (consulter seulement)
Crer

Ensat - Informatique Applique - Marc Souques

Page 19

- ACCESS 2007 2010 - Travail dirig Facturation

3 lien :
1 Produit peut avoir N CommandeLigneProduit et
1 CommandeLigneProduit est lie 1 seul Produit
Dfinir des Liens ( appels aussi Jointures) :
* Glisser
Num Produit de Produit (cl primaire) sur
Ref Produit de CommandeLigneProduit (cl trangre)
Remarque : Ref Produit n'est pas un champ cl primaire (malgr le symbole cl ) mais la moiti d'une
cl primaire qui elle est compose des 2 champs Ref Commande et Ref Produit
. Bote de dialogue
- cocher Appliquer Intgrit Rfrentielle (vrifications des donnes des liens, voir TEST plus loin )
- Relation 1 Plusieurs-Pas de Mise jour et pas d' Effacement en cascade
- Type de Jointure (consulter seulement)
Crer

Convention personnelle ( garder) pour nommer les champs des tables:

Cl primaire mono-champ :
Cl trangre
:

Numxx
Refxx

(xx pour nom de cette table)


(xx pour nom de la table lie)

Remarque : On trouvera ailleurs que dans notre tablissement des liens (jointures, relations) entre
cl primaire et cl trangre comme ceci par exemple :
Numxx
cl primaire de table-pre et
Numxx
cl trangre de table-fils
ou
Codexx
cl primaire de table-pre et
Codexx
cl trangre de table-fils
ou
Idxx
cl primaire de table-pre et
Idxx
cl trangre de table-fils
ou
Refxx
cl primaire de table-pre et
Refxx
cl trangre de table-fils.
Soit le mme nom de champ pour la cl Primaire et Etrangre !!!
Je n'adhre pas, titre pdagogique, cette manire de nommer 2 choses diffrentes avec le mme nom
mais il faut savoir que cette manire de nommer existe mme si elle est ambige.
Cela vient en partie du fait qu'il existe des logiciels (PowerAMC, WinDesign) qui, partir d'un MCD, gnrent
automatiquement un MLD Relationnel et que ces logiciels reprennent (faute de rgle) automatiquement le nom de
la cl primaire du MCD (l'identifiant pour tre exact) pour crer la cl trangre.

Comme il n'y a pas de rgle pour nommer ces 2 types de cls, chacun fait avec sa rgle.
Vous trouverez donc toutes les combinaisons possibles de cl Primaire et Etrangre, l'essentiel est de
bien comprendre le rle diffrent de chaque cl :
La Cl primaire :
- identifie chaque enregistrement d'une table.
- est SANS doublon.
- est souvent de type numrique et mme Numauto
(pour gnrer AUTOMATIQUEMENT un numro).

- est dfinie comme Primaire car clic sur


La Cl trangre :
- pointe vers 1 enregistrement d'une autre table.
- est AVEC doublon possible (2 fois la valeur 1 car 2 Commandes peuvent pointer vers le mme
Num Client 1).
- est d'un type qui dpend obligatoirement du type de la cl primaire pointe, JAMAIS Numauto
car l'objectif est que l'utilisateur choisisse MANUELLEMENT (ou par liste droulante) un
enregistrement de l'autre table.
- est dfinie comme Etrangre seulement parce que c'est elle qui est lie la cl primaire de
l'autre table.
Nous nommerons donc diffremment cl primaire et cl trangre.

Ensat - Informatique Applique - Marc Souques

Page 20

- ACCESS 2007 2010 - Travail dirig Facturation

A. Importance des relations dans un SGBD Relationnel


Access est un SGBD (Systme de Gestion de Base de Donnes) Relationnel.
Tout le fonctionnement d'une application sous Access est bas sur les Relations entre les Tables.
La dfinition des Tables et Relations reprsente les FONDATIONS de l'application sur lesquelles il
'suffira' ensuite de crer d'autres objets bnficiant de ces Relations.
En France, la mthode la plus utilise pour crer ces relations est la mthode Merise qui ne sera pas
aborde ici. La mthode UML prend peu peu le relais de la mthode Merise avec les mmes principes
concernant la dfinition des Donnes.

Rater la dfinition des Tables et Relations condamne l'application l'chec !!!

B. Des rgles dans les relations


Rgle 1 :
L'un des 2 champs du lien est obligatoirement une cl primaire (Num xxx dans mes conventions).
L'autre champ est obligatoirement une cl trangre (Ref xxx dans mes conventions)
donc, jamais 2 cls primaires relies :
Num Commande (1) na aucun rapport avec Num Produit (CAN001)
Attention : certaines cls trangres ont le symbole car elles sont sous partie d'une cl primaire
compose de plusieurs champs : exemple : Ref Produit
Rgle 2 :
Pour quune relation (lien ou jointure) puisse tre ralise, les 2 champs lis doivent contenir des
donnes de mme type et mme longueur.
Cl trangre (Ref xxx)
Numrique, Entier long
Texte, Longueur 6
Numrique, Entier long

Cl primaire (Num xxx)


(NumAuto) donc du Numrique entier
Texte, Longueur 6
Numrique, Entier long
Rgle 3 :
Les valeurs du champ Ref xxx de la table1 doivent pouvoir tre
au champ Num xxx de la table2.

gales

Cl primaire (Num xxx)


Cl trangre (Ref xxx)
Ref
Client
de CommandeEnTete =
3
Num Client de Client = 3
Num Produit de Produit = CAN001
Ref Produit de CommandeLigneProduit = CAN001
Etablir un lien entre Num Client (1, 2, 3, 4,)
et Ref Produit (CAN001, EPS001, CAN002, )
n'a AUCUN sens car les valeurs ne seront jamais gales (=).
Pour modifier ou Supprimer des relations : (Clic droit sur le trait 1-- )
Enregistrer la mise en forme des relations et Fermer cette fentre Relation :

IMPORTANT :
Le travail ralis par Accs au niveau des Relations consiste :

Voir
- rechercher partir d'une valeur d'une cl trangre
exemples
l'unique (1) valeur gale (=) dans la cl primaire lie. en bas de
page 5 du
- rechercher partir d'une valeur d'une cl primaire
Chapitre I
les (N) valeurs gales (=) dans la cl trangre lie.

Ensat - Informatique Applique - Marc Souques

Page 21

- ACCESS 2007 2010 - Travail dirig Facturation

C. Tester l'Intgrit Rfrentielle des Relations


L'Intgrit Rfrentielle est la vrification des donnes prsentes dans la cl primaire et
la cl trangre d'une Relation suite une opration de saisie, modification ou suppression.
1) Ouvrir la table CommandeEnTete
Tenter de saisir dans Ref client de la table CommandeEnTete
une valeur n'existant pas dans Num Client de la table Client : 999 999 (et valider l'enregistrement)

erreur car, dans la table Fils CommandeEnTete, saisir dans Ref Client la valeur 999 999 alors
que dans la cl primaire Num Client de la table Pre "Client" la valeur 999 999 n'existe pas, cela n'est
pas valide.
Un Fils ne peut PAS faire rfrence un Pre dont la valeur ne peut tre retrouve
dans la table Pre.
Remarque : un fils peut ne pas faire rfrence un pre si on l'autorise, une CommandeEnTete
pourrait ne pas faire rfrence un client (pas de saisie dans Ref Client) mais nous l'avons interdit dans
cette application dans le champ Ref Client avec la proprit Null interdit (vide interdit) : OUI et Chaine
vide autoris : NON donc ici la saisie est obligatoire.
2) Ouvrir la table Produit
Tenter de supprimer de la table Produit le produit CAN001 (clic dans la marge et bouton Suppr )
alors que ce produit existe (est command) dans la table CommandeLigneProduit dans le
champ Ref Produit : CAN001.

erreur car supprimer dans la table Pre une cl primaire CAN001 alors qu'au moins un
enregistrement de la table Fils CommandeLigneProduit y fait rfrence par la cl trangre Ref Produit
est une suppression non valide.
Un Pre ne peut PAS tre supprim s'il a encore au moins 1 Fils qui fait rfrence lui mme.
Dans les cas 1) et 2), on ne veut pas d'un Fils pointant vers un Pre NON "trouvable".

Voila ce que l'intgrit rfrentielle doit viter :

Null interdit (vide interdit) : NON donc saisie facultative


Fils de Pre inconnu est autoris ici.

Utiliser le fichier Fac02a2007.accdb pour la suite.


(Demander Voir le diaporama "PV

et sa Voiture")

Ensat - Informatique Applique - Marc Souques

Page 22

- ACCESS 2007 2010 - Travail dirig Facturation

7. Rsum des Tables


4 tables avec : Nom des champs, Cl primaire, Type de donnes et Proprits de
chaque champ (ici proprits du champ flch).

Plus tard, "Liste


liste droulante

de

choix"

avec

Des Relations entre les tables avec Intgrit rfrentielle

Des Donnes saisies


Remarque : Crer une application grant des personnes ncessite l'autorisation ou la dclaration la
CNIL (Commission Nationale Informatique et Libert) :
http://www.cnil.fr/vos-responsabilites/declarer-a-la-cnil/
Ensat - Informatique Applique - Marc Souques

Page 23

- ACCESS 2007 2010 - Travail dirig Facturation

Ch3. Les requtes de base


La requte permet de faire des TRAITEMENTS sur les DONNEES des TABLES. Il existe plusieurs
types de Requte : la plus simple est celle qui slectionne des enregistrements sur des critres.
Possibilit de faire des requtes qui ajoutent, modifient ou suppriment des enregistrements.

1. Requte slection
Elle permet de slectionner,
relies entre elles.

trier, calculer

des enregistrements sur une ou plusieurs tables

A. Requte simple sur une seule table


Crer une Nouvelle requte, onglet Crer, bouton Cration de requte base sur la table Client.
1) Requte "R01 Client Ou"
Question : "Liste des clients avec visualisation des champs Nom, Prnom, Date Entre et Ville, par
ordre alphabtique de leur nom puis prnom, habitant Clamart OU nomms TERIEUR "
Saisir les noms des champs ci-dessous par double-clic dans la table affiche en haut de lcran.
Champ: Nom
Prnom
Date Entre
Ville
Table: Client
Client
Client
Client
Tri: Croissant
Croissant
Afficher:
X
X
X
X
Critres:
clamart
Ou = entre 2 lignes
Ou: TERIEUR
de colonnes quelconques
Pour une saisie dans un champ de type TEXTE, les " sont ajouts comme dlimiteur "TERIEUR"
Excuter la requte (Afficher les rsultats) par le bouton
puis
revenir en mode cration (Dfinition de la requte en tableau) par le bouton
puis
passer en mode SQL (Dfinition de la requte en langage SQL = Structured Query Langage) par clic
sur Affichage sous
puis par le bouton
SELECT Client.Nom, Client.Prnom, Client.[Date Entre], Client.Ville
FROM
Client
WHERE (Client.Nom = "TERIEUR") OR (Client.Ville = "CLAMART")
ORDER BY Client.Nom, Client.Prnom ;
SQL est un langage Standard pour tous les Systmes de Gestion de Bases de Donnes pour crer,
interroger et manipuler les Bases de Donnes (BD). La commande de base permet la
Slection de Champs de Tables o des conditions sont requises, ordonns par des critres de tri.
SELECT liste de champs FROM tables WHERE conditions de slection ORDER BY critres de tri

Dans Access, dans un premier temps, nous n'aurons pas besoin de la syntaxe SQL pour crer une requte
car nous bnficions du mode Cration de la requte sous forme de tableau interactif.
Si vous souhaitez vous formez au langage SQL, je vous propose mon Polycopi demander :

SQL pour SGBD.pdf


Passer en mode Cration :
Enregistrer la requte : R01 Client Ou et fermer cette requte.
Ensat - Informatique Applique - Marc Souques

Page 24

- ACCESS 2007 2010 - Travail dirig Facturation

2) Requte "R02 Client Et"


Question : "Liste des clients nomms TERIEUR et habitant CLAMART"
Champ: Nom
Ville
Ville
Table: Client
Client
Client
Tri:
Afficher:
X
X
X
Diffrence entre
Critres: TERIEUR
CLAMART
ces 2 lignes
Ou:
CLAMART
Et = entre 2 colonnes
Excuter la requte :
de la mme ligne
Passer en mode Cration :
Enregistrer la requte : R02 Client Et et fermer cette requte.

3) Requte "R03 Client Entre"


Question : "Liste dcroissante des noms des clients inscrits entre le 15/4/2009 et le 1/5/2009"
Champ: Nom
Table: Client
Tri: Dcroissant
X
Afficher:
Critres:

Date Entre
Client
X
entre 15/4/2009 et 1/5/2009

Pour une saisie dans un champ de type DATE, les # sont ajouts automatiquement
comme dlimiteur de date= #15/04/2009#
Oprateurs de comparaison : (faute doprateur choisi, cest loprateur = qui est utilis par dfaut)
= , > , < , >= , <= , < > (diffrent), Comme (comparaison avec caractres joker ci-dessous)
Possibilit d'utiliser les caractres Jokers vus prcdemment (pour les champs de type Texte) :
* , ? , # avec l'oprateur Comme pour interprter ces 'Jokers'
Excuter la requte, Passer en mode Cration :
Enregistrer la requte : R03 Client Entre et fermer cette requte.

4) Requte "R04 Client Comme"


Question : "Recherche des clients dont le Nom commence par la lettre T et inscrits aprs le 10/4/ de
l'anne 2009. Afficher aussi la ville "
Champ: Nom
Date Entre
Ville
Table: Client
Client
Client
Tri:
Afficher:
X
X
X
Critres: T*
>10/04/2009
ATTENTION :
Ou:
Ici, la saisie de "T*" gnre
automatiquement "Comme T*" mais
parfois vous devrez saisir
manuellement le Comme
pour utiliser * ? ou #
Excuter la requte, Passer en mode Cration
Possibilits de dimensionner les colonnes, dplacer une colonne, insrer une colonne, insrer une ligne
de critres, supprimer une colonne.
Enregistrer la requte : R Client Comme. Fermer la fentre des requtes :
Excuter la requte R Client Comme.

Ensat - Informatique Applique - Marc Souques

Page 25

- ACCESS 2007 2010 - Travail dirig Facturation

5) Exercices faire
A FAIRE1 : nommer la requte R05
Question : "Recherche des produits dont
[le Prix est infrieur 500 et dont la Dsignation commence par "imp" (en minuscule ou majuscule)]
ou bien [dont le taux de TVA est suprieur ou gal 15% (0.15) et dont le Num Produit a un "A" en 2
ime
position et un "0" (zro) en 5 ime position
Penser utiliser loprateur Comme " " si vous utilisez des caractres ?, *, #.
Classer par dsignation. "

A FAIRE2 : nommer la requte R06


Question : "Recherche des clients dont
[la Date dentre est postrieure au 15 Avril 2009 et habitant le dpartement
[des Toulousains prnomms Jean].
Classer par Nom. "

93] ou bien

A FAIRE3 : nommer la requte R07


Question : "Recherche des clients dont
[la Date dentre est Mai (5)] et qui ne sont pas toulousain.

6) Requte "R08 Commande Mono Table "


Question : "Recherche, dans la seule table CommandeEnTete, des Commandes des clients 3, 6 et 34
dont les commandes ne sont pas payes.
Afficher tous les champs, trier par client."

A vous d'essayer...
Commentaire :
Les rsultats ne font apparatre aucune des informations du client (nom, prnom, ) hors mis le numro.
Ces donnes sont dans les tables Client.
Nous allons donc faire des requtes multi-table pour visualiser les informations client depuis une
commande.

Ensat - Informatique Applique - Marc Souques

Page 26

- ACCESS 2007 2010 - Travail dirig Facturation

B. Requte multitable simple avec Relation


1) Requte "R09 Commande et son Client"
Question : " Liste des Commandes (seulement l'en tte) avec dtail de son Nom et Prnom Client."
Nous avons li les Clients et les Commandes dans la fentre relation.
Ce lien peut tre utilis dans 2 sens :
- Pour 1 Commande,
j'obtiens
son Unique Client
- Pour 1 Client,
j'obtiens
ses N () Commandes.
Dfinir une requte base sur les 2 tables CommandeEnTete et Client avec les champs suivants.

=
=

Ce rsultat affiche les Commandes pour lesquelles Ref Client = Num Client
Voir le mode SQL de la requte : SELECT [Num Commande], [Date Commande], [Date Echance],
[Ref Client], [Num Client], Nom, Prnom FROM Client INNER JOIN CommandeEnTete
ON Client.[Num Client] = CommandeEnTete.[Ref Client];
Cl trangre
AVEC doublons
de table "Fils"

Cl primaire
SANS doublon
de table "Pre"

Attention : Toutes les commandes peuvent ne pas tre affiches. Si


le champ Ref Client de CommandeEnTete est vide, Access ne trouve pas un Num Client avec contenu
vide EGAL (=) car une cl primaire (Num Client ) ne peut tre vide.
Ici, toutes les commandes sont affiches car le champ Ref Client est
en Null interdit = OUI et Chaine vide autorise = NON donc saisie obligatoire et jamais effac.
Dans une relation Pre - Fils, les Fils pointant vers aucun Pre (pas de saisie) ne sont pas affichs
dans une requte base sur les 2 tables lies. - Ce sont des Fils de Pre inconnu Ce Problme peut tre gr en modifiant le type jointure sur la
Relation Cl primaire - Cl Etrangre.
Nous ne le verrons pas pour le moment.

Ensat - Informatique Applique - Marc Souques

Page 27

- ACCESS 2007 2010 - Travail dirig Facturation

2) Requte "R10 Client et ses Commandes"


Question : " Liste des Clients avec leurs Commandes (seulement l'en tte)".

Demander voir le
Formulaire Client et
ses commandes FP

Nous avons li les Clients et les Commandes dans la fentre relation.


Ce lien peut tre utilis dans 2 sens :
Pour 1 Client,
j'obtiens
ses N () Commandes.
Pour 1 Commande, j'obtiens
son Unique Client
Dfinir une requte base sur les 2 tables Client et CommandeEnTete avec les champs suivants.

=
=

Ce rsultat affiche les Clients avec Num Client = Ref Client


Voir le mode SQL de la requte : SELECT Nom, Prnom, [Num Client], [Ref Client], [Num
Commande], [Date Commande], [Date Echance] FROM Client INNER JOIN CommandeEnTete

ON Client.[Num Client] = CommandeEnTete.[Ref Client];


Cl primaire
SANS doublon
"Pre"

Cl trangre
AVEC doublons
"Fils"

Attention : Tous les clients peuvent ne pas tre affiches. Si


certaines valeurs de Num Client ne sont pas saisies dans le champ Ref Client de CommandeEnTete,
Access ne trouve pas l'galit cl primaire = cl trangre.
Ici, le client 2 n'est pas affich car aucun enregistrement de Ref Client ne contient la valeur 2.
Par contre, le client 3 DURAND est affich plusieurs fois car plusieurs enregistrements du champ
Ref Client contiennent la valeur 3. DURAND possde N commandes : la 1 et la 2.
Dans une relation Pre - Fils, les Pres n'ayant aucun Fils pointant sur eux ne sont pas affichs
dans une requte base sur les 2 tables lies. Ce sont des Pres 'potentiels' sans Fils.
Ce Problme peut tre gr en modifiant le Type
jointure sur la Relation Cl primaire - Cl Etrangre.
Nous ne le verrons pas pour le moment.

Ensat - Informatique Applique - Marc Souques

Page 28

- ACCESS 2007 2010 - Travail dirig Facturation

C. Requte multitable avec calcul par enregistrement


1) Requte "R11 Produits commands et calcul"
Question : " Liste des Produits commands dans les Commandes avec calcul Total HT payer (prix
HT* quantit), Montant de la TVA et Montant TTC de la ligne de commande ventuellement remis".
a) Grer tables et champs de table
On peut crer une requte avec les 4 tables lies ( = ) et les champs suivants.

Mais il n'est pas obligatoire de prsenter les paires de champs lis. Simplifier.

On simplifie encore (pour faire de la place sur ce document pour les futurs calculs).

Enregistrer : R11 Produits commandes et calculs (Enregistrement OBLIGATOIRE pour la suite)

Ensat - Informatique Applique - Marc Souques

Page 29

- ACCESS 2007 2010 - Travail dirig Facturation

b) Grer les colonnes de calcul


Objectif : Ajouter les 4 calculs

Objectif :
Ajouter dans une colonne vierge de la requte un champ calcul Remarque : Il ny a pas de diffrence dans les noms de champ entre minuscule et majuscule !
- Calcul de la premire colonne calcule
Utilisation du gnrateur dexpression pour champ calcul

( voir lenseignant pour explications)

Nom de la colonne
librement choisi

Total HT :
Saisie Clavier
Excuter:

[prix Ht] * [Quantit]


Le : spare le nom de la colonne ( gauche)
du calcul ( droite)

A prendre dans le gnrateur, sur la


premire ligne
R11 Produits commands et calculs

Remarque: le gnrateur d'expression


ne prsente dans sa fentre QUE les colonnes de la requte
enregistres sur disque et non pas celles qui sont affiches l'cran donc, avant chaque
utilisation du gnrateur, il faut enregistrer la requte.
- Calcul de la deuxime et troisime colonne calcule
Utilisation du gnrateur dexpression pour champ calcul
:
Donc Enregistrer (cela pour enregistrer le prcdent champ calcul Total HT dont on a besoin cidessous pour les calculs de la TVA)
Dans l'expression ci-dessous, seul Total TVA : est saisi au clavier.
[Total HT] est pris dans une des colonnes de la requte courante par le gnrateur d'expression.
[Produit] ! [Taux Tva] n'tant pas une des colonnes de la requte courante du gnrateur d'expression,
il faut aller chercher, grce au gnrateur d'expression, ce champ dans la rubrique Tables (double-clic),
rubrique Produit .
A prendre dans le gnrateur, dans +Tables, Produit, Taux Tva car ce
champ nest pas prsent dans les colonnes de la requte courante.

Total TVA : [Total HT] * [Produit] ! [Taux TVA]


Ici, on a le droit d'utiliser la table Produit car elle est prsente en haut de requte dans la liste des tables.
Il est INTERDIT d'utiliser des Tables ou Requtes NON PRESENTES en haut de requte.
Remarque : ########## signifie que la colonne nest pas assez large pour afficher le rsultat :
largissez la colonne la souris comme dans Excel.
Enregistrer (pour enregistrer le nouveau champ calcul Total TVA pour pouvoir l'utiliser dans le
gnrateur dans l'expression suivante ci-dessous)
Total TTC : [Total HT] + [Total TVA]
Excuter, Enregistrer, Consulter la syntaxe SQL (par le bouton Affichage en haut gauche).
Remarque : pour visualiser en entier le contenu d'une cellule de requte : Touche MAJ + F2

Ensat - Informatique Applique - Marc Souques

Page 30

- ACCESS 2007 2010 - Travail dirig Facturation

- Calcul de la quatrime colonne calcule


Ici nous voulons un calcul conditionnel : Total TTC remis est gal :
Si (Total TTC > 1000 alors afficher Total TTC * (1 - 0,1) sinon afficher Total TTC)

Eventuellement !
taper 0 virgule 1
et non pas
0.1 suivant votre
machine !

Fonction VraiFaux() (IIf en V 2010) correspond SI() est prendre dans le gnrateur, dans :
+Fonctions, Fonction intgre, Droulement prog.
Total TTC remis : VraiFaux([Total TTC]>1000 ; [Total TTC]*(1-0,1) ; [Total TTC])
La fonction VraiFaux a la mme logique que le SI d'Excel : (condition ; valeur si Vrai ; valeur si Faux)
La fonction VraiFaux() s'crit Iif() en version 2010 et en syntaxe anglaise.

Remarque : Ici, la remise est de 10 % constant dans le calcul.

Une solution plus avance irait chercher le Taux de remise (10% ou 0,1) dans une table de Paramtres
pour ne pas avoir la valeur 0,1 pratiquement fige car difficilement modifiable dans ce calcul par un
NON spcialiste des requtes d'Access.
De mme pour le Seuil de 1 000 , il serait prfrable qu'il soit stock dans une table de Paramtres pour
qu'un simple utilisateur puisse modifier cette valeur sans avoir faire appel un informaticien.
Cette table Paramtres pourrait tre structure ainsi avec un champ par paramtre et donc n'avoir qu'un
seul enregistrement :

Penser grer en mode Cration pour chacune des 4 colonnes de calcul un format Montaire par
le bouton Feuille de proprits :

Attention : parfois l'application de ce format ne marche pas. Fermer la requte et la rouvrir !


Excuter, Enregistrer et Fermer.

D. Erreur viter dans les requtes multitable.


Les tables que vous utilisez dans le haut de la
requte graphique doivent TOUJOURS tre
lies. Nombre d'enregistrement de la requte :

Si vous voulez utiliser seulement les champs


de la table Client et de la table
CommandeLigneProduit, vous ne pouvez pas
seulement choisir 2 tables NON lies car le
nombre d'enregistrement de la rponse serait
de
,
c'est--dire la multiplication des 43 enregistrements de la table Client par les 18 enregistrements de la
table CommandeLigneproduit ce qui n'a aucun sens pour notre travail.
FIN du TD2
Ensat - Informatique Applique - Marc Souques

Page 31

- ACCESS 2007 2010 - Travail dirig Facturation

E. Les fonctions du langage VBA pour les Requtes


Ouvrir Fac02a2007.accdb pour ce Td 3.
Access dispose d'une large liste de fonctions en version anglaise et franaise issues du langage VBA.
La syntaxe anglaise est utilisable partout, la version franaise est propose dans le gnrateur
d'expression mais on peut aussi saisir la syntaxe anglaise en l'crivant la main (elle est ensuite traduite
en syntaxe franaise). Par ailleurs, l'aide d'Access ne rpertorie que la syntaxe anglaise, si l'on
programme en VBA, c'est encore la version anglaise qu'il faut utiliser et enfin, certaines fonctions
anglaises ne sont pas traduites en Franais.
- Depuis votre espace de travail Access, Voir l'aide sur les fonctions par F1 > Automation et
programmabilit > Fonctions.
- L'aide est mieux structure depuis l'diteur du langage VBA accessible par ALT + F11 puis
F1 > Visual basic-Manuel de rfrence du langage > Fonctions (pour un classement alphabtique) ou
Index/Listes (pour un classement thmatique).
Quelques exemples de fonctions parmi des centaines :
1) Fonctions Mathmatiques
Syntaxe anglaise
Syntaxe franaise Dfinition
Exemple
Rsultats
Round(expression;n) Round( )
Arrondir n
Round(123,456;2) 123,46
dcimales
Int(expression)
Ent( )
Donner la partie
Int(10/3)
3
Int() en V 2010
entire sans arrondir
2) Fonctions Date et Heure
Syntaxe anglaise
Syntaxe franaise Dfinition
Exemple
Rsultats
Date()
Date( )
Donner la date du jour
Date()
19/10/2009
Time()
Temps( )
Donner l'heure courante Time()
09:55:51
Now()
Maintenant( )
Donner date et heure
Now()
19/10/2009
courantes
09:55:51
Day(date)
Jour( )
Donner le jour de la
Day(19/10/2009) 19
date (1-31)
Month(date)
Mois( )
Donner le mois d'une
Month(19/10/200 10
date (1-12)
9)
Year(date)
An( )
Donner l'anne d'une
Year(19/10/2009) 2009
Anne() en V 2010
date
DateSerial()
SerieDate()
Construit une date
DateSerial(2009; 31/12/2009
partir de 3 nombres
12; 31)
TimeSerial()
SerieHeure()
Construit une heure
TimeSerial(23;
23:59:30
partir de 3 nombres
59; 30
3) Fonction Chane de caractres
Syntaxe anglaise
Syntaxe franaise
Dfinition
Exemple
Rsultats
UCase(expression) Majuscule( )
Convertir en
UCase("abc")
ABC
(Up)
majuscule
LCase(expression) Minuscule( )
Convertir en
LCase("DEF")
def
(Low)
minuscule
Left(expression;n) Gauche( )
Extraire n caractres Left("abcdef";4)
abcd
partir de la gauche
Right(expression;n) Droite( )
Extraire n car partir
Right("abcdef",2) ef
de la droite
Mid(expression;
ExtracChaine( )
Extraire une sous
Mid("abcdef";3;2) cd
position; longueur)
chaine partir de
(Midle pour milieu)
position sur longueur
Len(expression)
NbCar( )
Donner la longueur
Len("abcdef")
5
(Length)

Ensat - Informatique Applique - Marc Souques

Page 32

- ACCESS 2007 2010 - Travail dirig Facturation

Chr(nombre)

Car()

Donner le caractre du Chr(65)


Chr(13) & Chr(10)
code ASCII fourni
Concatner (juxtaposer) des chaines de caractres :
Utiliser l'oprateur de concatnation & : "abc" & " " & "def" donne "abc def"
On peut aussi utiliser l'oprateur

A
<retour la ligne>

+ mais parfois ambige avec somme : "abc" + " " + "def" donne "abc def"

4) Fonctions de Domaine
Ces fonctions effectuent des regroupements sur des domaines et produisent des rsultats analogues aux
requtes de regroupement.
Gros avantage : en une fonction totalement autonome, on a l'quivalent d'une requte travaillant sur
des donnes (Table ou Requte), effectuant par le nom de la fonction (Compter, Sommer, ) un calcul
sur un champ (ou une expression) dont les enregistrements utiliss peuvent ventuellement tre
slectionns par une condition (filtre).
Forme gnrale :

FonctionDeDomaine ("champ_ou_expression" ; "table_ou_requte" ;" filtre")

Syntaxe
anglaise
DCount()

Syntaxe
franaise
CompteDom( )

Dfinition

Exemple

Compte le nombre
d'enregistrements

DSum()

SomDom( )

Somme un champ

DAvg()

MoyDom( )

Calcule la moyenne
d'un champ

DCount
("[Num
client]";
"Client"; "Ville = 'PARIS' " )
Noter les ' autour de Paris
DSum ("[Prix Ht]"; "Produit";
"[Prix Ht] >500" )
DAvg ("[Prix Ht]"; "R04 abc")

DMax

MaxDom( )

DMin

MinDom( )

DLookup( )

RechDom( )

Calcule la valeur
maximale
Calcule la valeur
minimale
Rechercher le
premier
enregistrement
rpondant un
critre

Rsultats
3

2500
450

Requte au lieu de table


Pas de filtre ici

DMax ("[Prix Ht]"; "Produit";


"[Prix Ht] >500")
DMin ("[Prix Ht]"; "Produit";
"[Prix Ht] >500")

2000

DLookup ("Nom" &" " &


"Prnom"; "Client";
"[NumClient] = " &
Formulaires![Commande]![Ref
Client]))

PUISSE
Alain

30

Noter l'expression avec "[Nom]" &" " &

Noter le filtre bas sur la valeur actuelle


du contrle du formulaire ouvert

5) Fonctions de conversion
Syntaxe anglaise
Syntaxe franaise
Nz(expression;
Nz( )
valeur de
remplacement)
(Nz pour Null to Zro)

Val()

CNum()

Str()

NumChaine()

Dfinition
Convertir une valeur
Null en une autre valeur
(0 par dfaut pour une
variable numrique)

Exemple
Nz(Quantit)*2
Quantit *2

Renvoie un nombre
Val("88 rue des
partir d'une chaine de
corsaires")
caractres
Transforme un nombre Str(12)
en chaine de caractres

Ensat - Informatique Applique - Marc Souques

Rsultats
0 si quantit
= Null.
Null si quantit =
Null

88

"12"

Page 33

- ACCESS 2007 2010 - Travail dirig Facturation

6) Fonctions Diverses
Syntaxe anglaise
Iif(condition;
valeurSiVrai;
valeurSifaux)

IsNull(expression)

Syntaxe franaise
VraiFaux( )
IIF() en V 2010
Remarque : nous
avons dj utilis
cette fonction
page 31 en haut
EstNull( )

MsgBox(message;
boutons; titre)

BoteMsg()

InputBox(message;
titre; valeur par
dfaut)

BEntre ()

Dfinition
Retourner une valeur en
fonction de la condition
Vraie ou Fausse
Mme logique que le SI Excel

Exemple
Iif(1=1;
2*3;
4)

Tester si la valeur est Null


(vide)
Afficher une boite de
message

IsNull(champ1
)
MsgBox("Ajou
t effectu")

Afficher une boite de


saisie de donne par le
clavier

InputBox( Entrer
votre ge ")

Rsultats
6

Vrai ou Faux

ATTENTION : Ces fonctions sont utilisables:


- dans les Requtes, les Formulaires et les Macros (voir plus loin pour les Formulaires et Macros) : le
sparateur entre les argument est le point virgule : MsgBox(message ; boutons ; titre)
- dans la programmation VBA : le sparateur est la virgule : MsgBox(message , boutons , titre)

Exemple d'utilisation de fonction VBA dans une requte


1) Afficher la liste des commandes dont la date de commande est
la date d'entre minimale des clients Toulousains .

Ensat - Informatique Applique - Marc Souques

suprieure

Page 34

- ACCESS 2007 2010 - Travail dirig Facturation

7) Fonctions Personnelles
Vous pouvez aussi crire en langage VBA dans l'diteur (ALT+F11) vos propres fonctions qui pourront
tre appeles depuis les calculs de Requtes, Formulaires et Etats. Exemple :
'Exemple de fonction appele dans une requte ou un formulaire
Function DureeEnHeures(ByVal DureeMin As Integer) As String
'Role : Retourner une chaine de caractres correspondant une dure en Heures et Minutes
NE PAS FAIRE
' partir d'une Dure en minutes exemple : 65 Mn donne "1H05Mn"
'ENTREE : DureeMin : Dure en minutes (ex : 65)
Dim Heure As Integer, Minute As Integer
CETTE PARTIE
Heure = DureeMin / 60
Minute = DureeMin Mod 60 'Mod pour le reste de la division
DureeEnHeures = Heure & "H" & Format(Minute, "00") & "Mn" 'Conversion implicite en String
End Function

Exemple d'utilisation dans une requte depuis le gnrateur d'expression :


NE PAS FAIRE
CETTE PARTIE

Fin de la partie Fonctions -

- Utiliser le fichier Fac02a2007.accdb pour la suite

F. Exercices faire
Question : "Crer la requte R12 Calcul TTC unitaire permettant d'afficher prcisment le rsultat cidessous".

"A vous d'essayer


en faisant attention au choix des tables !"
Question : "Crer la requte R12_1 Des informations sur les clients permettant d'afficher le type de
rsultat ci-dessous en manipulant & et les fonctions VBA".

"A vous d'essayer


en faisant attention au choix des tables !"
Ensat - Informatique Applique - Marc Souques

Page 35

- ACCESS 2007 2010 - Travail dirig Facturation

G. Requte avec calcul sur "Regroupement" d'enregistrements


1) Requte "R13 Calcul sur regroupement"
Question : " Nombre total de produit commands de marque Canon seulement (CAN dans le code du
produit) regroupes par produit "
a) Slectionner les commandes de tous les produits Canon (dans les Ref Produit)

Excuter
b) Regrouper les enregistrements ayant mme valeur
traitements sur le groupe.
Ajouter la ligne Opration par le bouton
Totaux .

(CAN001 par exemple) pour faire des

Tester.

Dans l'en-tte de la dernire colonne, transformer "Quantit" en "Total des ventes : Quantit"
pour viter l'affichage de SommeDeQuantit remplac par Total des ventes (nom de colonne calcule).
Tester pour la colonne Total des ventes les autres Oprations (autres que Somme) disponibles sur un
Regroupement : Moyenne, Min, Max, Compte,

H. Exercices faire
Question : "Crer la requte R14 : Moyenne des
quantits de produits des commandes par client
permettant d'afficher prcisment le rsultat ci-contre
tri par moyenne".

"A vous d'essayer


en faisant attention au
choix des tables !"
Voir bas de page 31 le conseil pour une requte
Utiliser le fichier Fac03a2007.accdb pour la suite

Ensat - Informatique Applique - Marc Souques

Page 36

- ACCESS 2007 2010 - Travail dirig Facturation

2. Rsum des Requtes


Requte Slection mono-table
Gestion du Tri, des Critres de slection, des Oprateurs logiques Et / Ou entre les
critres, des Oprateurs de slection : =,<,>,>=,<=, < > (diffrent), Entre
et Comme (Comme pour utiliser les caractres joker : ? , * , # )

Requte Slection Multi-tables avec Relation entre les tables


La relation ci-dessous est hrite de la fentre Relation

Requte Slection Multi-tables avec Relation entre les tables et Calculs

Insertion de Champs de Tables

Dfinitions de Colonnes de Calcul, Nom : Calcul

Ensat - Informatique Applique - Marc Souques

Page 37

- ACCESS 2007 2010 - Travail dirig Facturation

Ch4. Les Formulaires de base


Ils permettent la prsentation des Donnes issues des Tables ou Requtes :
Remarque : les requtes ne stockent pas de donnes, elles les recherchent dans les Tables.

Utilisateur

Table ou Requte = affichage brut des donnes Formulaire = affichage permettant une
en mode Feuille de donnes (tableau).
Mise en Forme des donnes.

Intrts du Formulaire :
- tre l'interface (l'intermdiaire) entre les Donnes et l'Utilisateur pour lire et crire des donnes
- prsenter un affichage optimis et sophistiqu (Interface graphique Windows)
- faciliter la saisie (aide la saisie par choix dans liste droulante par exemple)

1. Formulaire Unitaire bas sur une table


A. Crer un Formulaire Colonne simple

(voir Rsultat Final page suivante)

Depuis l'onglet Crer, bouton Plus de Formulaire (Assistant formulaire en V 2010):


Assistants : Assistant formulaire Table : Client
OK
Champs a insrer (dans l'ordre) : Tous sauf Date Entre
Suivant
Prsentation : Colonne simple Suivant ; Style : Access 2003 Suivant
Titre : Client (cest le nom denregistrement de ce formulaire) Terminer

Passer en Mode Cration par


Fermer le formulaire. Fermer la table Client si ouverte
Ouvrir le formulaire en Mode Formulaire (double clic sur nom du formulaire Client).
Le mode Formulaire permet de voir les Donnes sans possibilit de mise en forme.
Passer en Mode Page par
. Ce mode permet de voir les donnes ET permet de
faire de la mise en forme et mise en page. Tester quelques modifications de forme.

B. Utiliser un formulaire
Passer en mode Formulaire pour tre Utilisateur de l'application et non Dveloppeur.
1) Ajouter des enregistrements
Atteindre un nouvel enregistrement vide : (en bas d'cran) par ce bouton
Saisir : Vendaire Isabelle 2 Av Casanova 31000 TOULOUSE .
Vrifier que Vendaire ajout depuis le Formulaire est prsent dans la Table Client.
2) Consulter des enregistrements en mode formulaire
Utiliser les 4 boutons de dplacement en bas de formulaire
3) Modifier des enregistrements
Directement au clavier sur les donnes (les modifications se rpercutent directement sur les donnes des Tables)
4) Rechercher des enregistrements
Rechercher TERIEUR : se positionner sur le champ Nom et utiliser
5) Supprimer des enregistrements
Slectionner la souris l'ensemble "Vendaire" par la barre de slection
gauche des donnes puis touche Suppr
Ensat - Informatique Applique - Marc Souques

Page 38

- ACCESS 2007 2010 - Travail dirig Facturation

C. Modifier un formulaire
Objectif obtenir la fin de cette partie Modification :
4
1
Modifications
2

3
Passer en mode Cration sur le formulaire Client : il y a 3 sections (En tte, Dtail, Pied).
Les lments d'un Formulaire sont appels des Contrles
Deux types de contrles sont prsents sur ce formulaire:
Demander
-Zone de texte = texte modifiable par l'utilisateur
(Toulouse)
explications
correspondant aux donnes des champs de la Table Client
l'enseignant
-Etiquette = texte fig pour l'utilisateur
(Ville)
prcisant seulement que Toulouse est une donne du domaine Ville
1) Grer les contrles existants
.Slection : ( la souris : clic ou +clic pour ajouter une slection)
( la souris : par gliss encadrant partiellement les contrles cibls)
.Dgrouper : les contrles affichs ici sont groups dans une Disposition : cliquer la croix
pour slectionner les contrles puis clic droit sur un des contrles
Disposition > Supprimer pour
pouvoir dgrouper et grer ces contrles individuellement.
.Dplacement : (avec souris : "contour" pour le couple de contrles, "carr haut gauche" pour un seul)
Application :
.slectionner le contrle Num Client
.dplacer le couple Etiquette (sur fond gris) et Zone de texte (sur fond blanc)
.dplacer seulement le contrle zone de texte sans son tiquette; tiquette sans sa zone de texte.
.Mise en forme:
- police
- taille de la police
- attribut (gras, italique)
- alignement (Gauche, Centre, Droit)
- style et couleurs
Application : modifier la taille et le style de la police pour tous les contrles sauf le Num Client
.Slectionner les contrles par un gliss la souris, .choisir police Arial, taille 14 , clic droit sur un
contrle, -Taille -(adapte) Au contenu
.slectionner Zone de texte-Nom par clic ,.slectionner Zone de texte-Prnom par +clic
.utiliser onglet Accueil
pour: Fond=jaune, .slectionner la ligne Dtail du formulaire par
clic et attribuer Fond=vert clair.
Remarque : Pour afficher les proprits d'un contrle : double-clic sur le contrle (si non slectionn).
Remarque : Voir aussi le clic-droit sur un contrle.

Excuter, Enregistrer, Retour en Cration

Ensat - Informatique Applique - Marc Souques

Page 39

- ACCESS 2007 2010 - Travail dirig Facturation

2) Ajouter des contrles par la barre de contrles


Onglet Cration : nous
allons utiliser quelques types
de contrle de formulaire
Voir numros 1,2,3,4 ci-dessous et leur correspondance sur la copie d'cran de la page prcdente.

1. contrle Etiquette
Correspond du Texte non modifiable par l'utilisateur de l'application et bas sur le texte d'une lgende.

Application : .slectionner loutil Etiquette (Aa) qui permet dajouter du texte fig .crer une
Etiquette droite du contrle Num Client par un gliss puis saisir son texte : Automatique (indiquant
ainsi que la gnration du Num client est Automatique)
2. contrle Rectangle
Application : .slectionner loutil de dessin Rectangle dans la barre doutil, .dessiner un
rectangle autour du Nom et Prnom par un gliss .donner une couleur au rectangle puis mettre le
rectangle en arrire plan par onglet Rorganiser, bouton Mettre en arrire plan de zone Position
3. contrle Zone de texte
Correspond du Texte gnralement modifiable par l'utilisateur de l'application et bas le plus souvent sur un
champ de table.

Application : slectionner loutil zone de texte et ajouter un contrle Date Entre


(utiliser dans les proprits Source du contrle pour choisir 'Date Entre dans la liste des champs de la
table Client). Un contrle de type Etiquette a t associ en plus la Zone de texte.
Modifier la proprit Lgende de lEtiquette de texte en Date de l'Entre :
Autre manire d'ajouter facilement un couple Etiquette-Zone de texte sur la base d'un champ de
Table: utiliser le bouton 'Ajouter champs existants' puis faire glisser un champ sur le formulaire.

4. contrle Logo
Application : Ajouter le logo Clientele.gif (fichier fourni). Le logo est ajout automatiquement
dans la zone En tte du formulaire. Par la proprit Mode d'Affichage du Logo, affecter successivement
Dcoupage, Echelle, Zoom l'image pour comprendre la prsentation de l'image.

Le contrle Logo est en ralit un contrle Image, positionn automatiquement dans l'en tte du
formulaire, avec une petite taille par dfaut. Tester le contrle Image
avec le mme fichier .gif puis
effacer cette image.
Bilan sur l'affichage des Images :
-En Dcoupage : L'image ne rentre pas dans la surface qui lui est alloue, elle est dcoupe (il manque
ici le haut et le bas). Sa taille de base est garde.
-En Echelle : L'image est dforme horizontalement et verticalement (mis l'chelle : ici largie
horizontalement) pour occuper toute la surface qui lui est alloue. La totalit de l'image est vue.
-En Zoom : L'image n'est pas dcoupe, n'est pas dforme, elle n'occupe pas toute la zone qui lui est
alloue ( droite et gauche) et elle est zoome (ici zoom arrire). La totalit de l'image est vue.

Ensat - Informatique Applique - Marc Souques

Page 40

- ACCESS 2007 2010 - Travail dirig Facturation

3) Catalogue des types de contrle

Voici quelques exemples de type de contrle avec leur affichage

Etiquette : pour du texte fig non modifiable


Zone de texte : pour afficher-modifier
afficher
des donnes
(champs de tables ou colonnes de requtes)
requtes
Groupe d'options :
Bouton bascule
Bouton d'option
Case cocher
Liste droulante :
Zone de liste :
liste de valeurs toujours visible mais prend de la place
Bouton de commande : pour dclencher des programmes
Image fixe de dcoration (non li un numro
d'enregistrement dune Table)
Logo : une petite image dans l'en tte du formulaire
Cadre dobjet indpendant des
de donnes : son affichage est
identique (fig) pour tous les enregistrements du formulaire
Cadre dobjet DEPENDANT d'un champ de table donc
changeant pour chaque enregistrement (exemple : photo de
chaque client prise dans Table Client)
Saut de page : utilisable pour les impressions

----< Saut de Page >--->

Onglet pour superposer des pages d'informations


Sous-formulaire : formulaire reprsentant une liste
associe 1 enregistrement (les N produits d'une commande)
Trait dessiner
Rectangle dessiner
Graphique

Lien hypertexte : lien vers page web par exemple

www.fnac.com

Lien vers une pice jointe : un fichier word par exemple

Ensat - Informatique Applique - Marc Souques

Page

41

- ACCESS 2007 2010 - Travail dirig Facturation

4) Remarque sur la largeur les Formulaires :


Dans un formulaire, il n'y a pas de bouton pour rgler le zoom (contrairement Word et Excel).
Il faut donc faire en sorte que la largeur de vos formulaires affichs ne dpasse pas de l'cran de
l'utilisateur en tenant compte de l'inconnue de la rsolution cran de l'utilisateur.
Voici les limites :
Rsolution cran de l'utilisateur
Taille maxi du formulaire en mode cration
800 x 600
19 cm
1024 x 768
25 cm
1280 x 1024
32 cm
Il faut donc faire un choix de limite : 25 cm maxi (1024 x 768) semble aujourd'hui accessible pour beaucoup.
Question : Crer un formulaire pour prsenter les produits de notre catalogue.

Zone
En-tte

Zone
Dtail

Zone
Pied

" A vous d'essayer "


avec :
Dans l'Entte du formulaire :
- le texte fig "Catalogue Produit"
- une image base sur le fichier " LogoProduit.gif" fourni
Dans la zone Dtail :
- les 4 champs de l'enregistrement avec gestion de la prsentation 'superpose'
- 2 rectangles
- Num Produit et Dsignation : cadrage gauche
- Prix et Taux de tva : cadrage droite
Dans le Pied du formulaire :
- le texte fig "Les meilleurs produits du march"
Afficher le Produit : Initiation Access pour les nuls
Nous calculerons et afficherons le Prix Ttc plus tard.
REMARQUE : Les donnes de l'application sont prsentes l'utilisateur uniquement
(pour le moment) par les FORMULAIRES.
Les TABLES (qui stockent les donnes) et les REQUETES (qui traitent les donnes) ne sont
normalement JAMAIS prsentes l'utilisateur, elles servent alimenter les FORMULAIRES qui
ont donc des donnes (de base ou traites) et qui ajoutent la Forme de la prsentation.
Ensat - Informatique Applique - Marc Souques

Page 42

- ACCESS 2007 2010 - Travail dirig Facturation

2. Formulaire Tabulaire bas sur une requte


Objectif : Crer ce formulaire et afficher les produits commands non pays tris par date de commande.
Le formulaire affichera les donnes provenant de plusieurs tables, sous forme de tableau (Tabulaire )
avec le calcul Total TTC par Produit et avec un Total gnral en bas de formulaire.

Des
calculs

Procdure :

Ce problme
d'affichage n'est pas
trait dans la requte
mais sera gr dans
le formulaire.

A. Crer la requte source du futur Formulaire


Crer la requte base sur les tables avec les champs suivants et 1 calcul

Eventuellement, en
mode Cration, voir
bouton Proprits
puis Format

avec pour le champ 'Pay': critre : non; affichage dsactiv (non affich), tri sur Date Commande
Essayer de faire la requte ci-dessus seul (sinon consulter ci-dessous) :
Utiliser les tables CommandeEnTete, CommandeLigneProduit et Produit (Client pas ncessaire).

ATTENTION : dans une REQUETE


1) Avant d'utiliser le gnrateur pour les calculs, il faut enregistrer la requte.
2) Dans une colonne calcule de requte, on peut utiliser:
- les colonnes de la requte courante (si requte enregistre)
- les champs des seules tables choisies en haut de la requte courante

Avec
Gnrateur
d'expression

obligatoirement

Ici, le gnrateur vous propose d'utiliser les 4 tables de l'application MAIS en ralit vous ne pouvez
utiliser que les 3 tables la 'source' de votre requte. Table Client interdite d'utilisation !.
De mme, vous ne pouvez utilisez aucunes Requte car non prsentes la 'source' de votre requte
Excuter Enregistrer : R15 Produits commands avec date puis Fermer.
Ensat - Informatique Applique - Marc Souques

Page 43

- ACCESS 2007 2010 - Travail dirig Facturation

B. Crer un formulaire Tabulaire bas sur la requte


Crer un nouveau formulaire par Assistants formulaire bas sur
la requte R15 Produits commands avec date avec toutes les colonnes de la requte sauf Taux Tva,
-de type : Tabulaire -prsentation : Access 2007 -titre : Produits commands tris par date
Seul le mode Tabulaire permet de faire des calculs de
synthse dans le pied du formulaire : ici somme.
(Tabulaire signifie prsentation des donnes en TABLEAU) Attention ne pas laisser un espace en
dbut de Titre aprs avoir effac R15 du
-bouton Terminer.
titre propos
Passer en Cration pour ajouter des Contrles

C. Ajouter des contrles


En mode Cration, ajuster la taille des contrles si besoin (Ref Produit), pour le Prix TTC, donner par la
proprit format la valeur : Montaire pour n'afficher que 2 dcimales et .
1) contrle Zone de texte (ab
) (en ralit, 2 contrles tiquette

zone de texte)

Nous souhaitons calculer la somme des montants TTC de tous les produits commands non pays.
Agrandir le pied de formulaire la souris puis Ajouter un contrle Zone de texte dans le pied du
formulaire droite sous le prix TTC avec les proprits suivantes :
.source contrle : utiliser le gnrateur dexpression
(ne pas saisir au clavier) =Somme([Total TTC])
obtenir Somme dans les Fonctions intgres
obtenir Total TTC par clic sur <Liste de champs> puis Total TTC
Attention: Dans un contrle avec calcul, on doit utiliser:
- soit les contrles du formulaire courant
<Formulaire> =contrles utilisables
- soit les champs de la requte la source du formulaire si
clic sur <Liste de champs> = champs utilisables
On ne peut utiliser d'autres donnes que celles du formulaire
ou celles la source du formulaire (ici la requte ).
On ne doit PAS utiliser les TABLES ou REQUETES par
.nom : TotalGnral
.format : Montaire. Fermer fentre des proprits
Changer les proprits de ltiquette du contrle
.lgende : Total des commandes impayes
2) contrle Trait Tirer un trait comme sur l'exemple pour montrer la synthse par la somme.
Passer en mode Formulaire, tester, Enregistrer et fermer ce formulaire.
Conclusion : des Calculs peuvent tre faits :
1. dans des colonnes de Requte
(cas le plus courant)
2.

dans des contrles

Zone de texte de Formulaire (quand on ne peut le faire dans une requte)


Voir page suivante des Exercices :

Ensat - Informatique Applique - Marc Souques

Page 44

- ACCESS 2007 2010 - Travail dirig Facturation

D. Exercices faire
si vous avez du temps :

Travail sur les requtes :


1- Question:
Afficher les Clients :
Du Dpartement 78 mais pas de Versailles
ou
Entrs avant le 16/4/2009 et habitant exclusivement une avenue ou une place
Trier par nom prnom.

Enregistrer : R14 A faire 1 fin de td Trouver des clients et ou tri


2- Question:
Afficher les Produits et les clients l'ayant achet (avec la date de commande) :
Trier par numro de produit.

Enregistrer : R14 A faire 2 fin de td Trouver des produits et leurs clients

3. Rsum des Formulaires


Voir rsum au Chapitre 9

Fin du TD3

Ensat - Informatique Applique - Marc Souques

Page 45

- ACCESS 2007 2010 - Travail dirig Facturation

Ch5. Les Tables avec listes droulantes


de choix pour Cl Etrangre
Utiliser le fichier Fac04a2007.accdb pour la suite

1. Tables actuelles basiques


Avec les tables actuelles, pour saisir une nouvelle CommandeEnTete, il faut saisir au clavier une
valeur dans le champ Ref Client qui soit une valeur existante du champ Num Client de la table Client
car les tables sont lies.

Cl trangre
AVEC doublons
"Fils"

Cl primaire
SANS doublon
"Pre"

Tester ce principe en saisissant une nouvelle


commande (11) avec pour le champ Cl trangre
Ref Client la valeur 3 (car dans la Cl Primaire
Num Client, 3 existe) et valider les propositions
pour les dates et Pay.
Num Commande Ref Client Date Commande Date Echance Pay

Aprs ce test, supprimer la commande 11 en


cliquant dans la colonne grise gauche du 11 (pas sur le +) puis touche Suppression (Suppr).
Nous sommes donc contraints un choix d'une valeur de Num Client pour saisir Ref Client.
Nous souhaitons que ce choix soit assist par une liste droulante .

2. Champ Cl trangre avec liste droulante


de choix
Objectif : pour la cl trangre Ref Client de la table CommandeEnTete, grer une liste droulante avec
TRI sur Nom + Prnom pour choisir le client qui commande.
Num Commande

Ref Client

Date Commande

Pour choisir un client,


hors mis son Num client,
nous afficherons son Nom
et en plus son Prnom car
il y a des homonymes
(GALL).

Dans une premire version de base, une fois le choix fait, continuer afficher la valeur 3 dans Ref Client
Num Commande
Ref Client
Date Commande

Ensat - Informatique Applique - Marc Souques

Page 46

- ACCESS 2007 2010 - Travail dirig Facturation

A. Modifier proprits Liste de choix des champs cls trangres


1) Version de base pour la liste droulante Ref Client
Mode Cration
Table CommandeEntte, Champ Ref Client.
Onglet Liste de choix

8 cm

(Pour 2 cm + 3 cm+ 3 cm)

Parmi les 3 colonnes (Num Client,


Nom et Prnom), la colonne lie est
le rang de celle qui est stocke dans
le champ Ref Client
(ici la 1ire , la valeur de Num Client
y est stocke).
C'est aussi cette 1 ire colonne qui est
affich dans la liste (2 cm). C'est
mon choix temporaire ici, on va
voluer plus loin.

Contenu dtermine ce qui va drouler dans la liste droulante (ici Num Client, Nom, Prnom de Client)
Pour la proprit Contenu, utiliser le gnrateur (en fin de ligne) pour crer la Requte (ajouter
table Client, 3 champs dans l'ordre : Num Client, Nom, Prnom, tri sur Nom puis Prnom), fermer la
requte, OUI pour enregistrer le code SQL ci-dessous (ne pas saisir le texte ci-dessous)
SELECT Client.[Num Client], Client.Nom, Client.Prnom
FROM Client
ORDER BY Client.Nom, Client.Prnom;

TRI
OBLIGATOIRE

La valeur de la proprit Contenu est :


-soit le texte SQL dfinissant
une requte dans laquelle on fait au moins un TRI
-soit le Nom d'
une requte dans laquelle on fait au moins un TRI
-JAMAIS un Nom de table car dans ce cas nous n'aurions pas le TRI souhait
Ensuite, passer en mode Affichage de la table,
enregistrer les modifications de la table (OUI),
tester la saisie d'un client.

Une fois le client saisi, l'affichage ci-contre est peu significatif (qui est
le client 3 ? Quel est son Nom ?).
Evolution, nous souhaitons :
- continuer stocker dans Ref Client un Numro de client
- afficher devant Ref Client son Nom concatn (juxtapos) son Prnom pour diffrencier les
homonymes (GALL Alphonse et GALL Bill)
(Voir page suivante la nouvelle version)

Ensat - Informatique Applique - Marc Souques

Page 47

- ACCESS 2007 2010 - Travail dirig Facturation

2) Version volue pour la liste droulante Ref Client


Retrouver la fentre des proprits du champ Ref Client.
Remplacer 2cm pour la premire largeur de colonne (celle de Num Client) par 0 cm.

Tester en mode Affichage.


Nous ne voyons plus le Num Client (3) et suite la
saisie, c'est la premire colonne avec une largeur autre
que 0 qui est affiche : Nom (DURAND).
Problme : si on choisi la ligne GALL Alphonse, nous
ne verrons aprs la saisie que le Nom GALL affich
sans pouvoir le diffrencier de GALL Bill !
Evolution : Nous souhaitons toujours avoir la premire colonne (cach 0 Cm) de Num Client mais
avoir dans une deuxime et dernire colonne le Nom en majuscule concatn (juxtapos par &) un
espace (" ") puis concatn au Prnom pour que ces 2 informations apparaissent ainsi aprs saisi.
Modifier la proprit Contenu
comme ci-contre qui dfinit ce
qui droulera en utilisant le
bouton en fin de ligne.
Nous construisons comme nous l'avons dj fait une colonne calcule avec :
- gauche de : un texte totalement libre qui est l'identification de cette
nouvelle colonne Nom et Prnom (ou Client qui commande si on veut)
- droite de : un calcul utilisant la fonction Majuscule() ( trouver dans le
d'expression, rubrique Fonction, puis Fonctions intgres, puis
colonne centrale Texte puis colonne de droite Majuscule).
Utiliser le bouton Affichage pour voir le futur contenu de la liste
droulante. Fermer cette fentre, OUI pour enregistrer les modifications
SQL.
Nous n'avons donc plus que 2
colonnes, donc modifier
comme ci-contre.

Majuscule devient en
Anglais UCase pour
Up Case.

Tester :

Ensat - Informatique Applique - Marc Souques

Page 48

- ACCESS 2007 2010 - Travail dirig Facturation

3) Version permettant les Ajouts / Modifications / Suppressions assists de la liste droulante


Pouvoir choisir un client, c'est bien, mais comment, depuis l'environnement courant (ici la table), ajouter
ou modifier des clients de la liste droulante ?
Access propose une nouveaut base sur 2 nouvelles proprits de la liste de choix :
Autoriser la modification de la liste : OUI
Nom du formulaire pour saisir des clients : Client
Fermer la table et la r-ouvrir pour activer les 2 modifications ci-dessus.
Aprs saisie de ces 2 proprits, lorsque vous droulez la liste, vous obtenez un petit bouton en
bas ou haut de liste que vous cliquez et qui ouvre le formulaire Client.
On peut ajouter, (atteindre un nouvel enregistrement par)
ou modifier (se dplacer par les boutons ci-dessous puis modifier)

Premier , Prcdent, Rang de l'enregistrement courant

, Suivant, Dernier, Nouvel enregistrement

ou supprimer des clients puis fermer le formulaire Client.


On retourne AUTOMATIQUEMENT sur notre table CommandeEnTete, rutiliser la liste droulante
qui est AUTOMATIQUEMENT mis jour des ajouts, modifications et suppressions faits dans le
formulaire Client.
Tous les mcanismes de la liste droulante tests ici au niveau de la table CommandeEnTete seront
hrits dans tous les formulaires qui seront construits sur cette table.

B. Exercice faire
Faire de mme pour Table CommandeLigneProduit, Champ Ref Produit, Onglet Liste de
choix pour saisir un produit command parmi les produits de la table Produit.
Ici, une fois le choix fait par la
liste droulante, on affichera la
Dsignation (1 seul champ ici
car toutes les dsignations sont
diffrentes contrairement aux
noms des clients de l'exemple
prcdent) dans Ref Produit.
N'oubliez pas que notre objectif primaire est toujours de stocker dans Ref Produit la valeur du champ
Num Produit (LOG001 pour le Clavier Logitech KZ Noir) de la table Produit mme si cela ne se voit
pas sur la copie d'cran ci-dessus !!!
Grer la proprit : Largeur liste
Grer aussi les 2 proprits :
Autoriser la modification de la liste : OUI
Nom du formulaire pour saisir des produits : Produit

Ensat - Informatique Applique - Marc Souques

Page 49

- ACCESS 2007 2010 - Travail dirig Facturation

Remarque sur les listes droulantes de cls trangres:


Ce que nous avons fait peut tre peru comme ambigu :
Pour Ref Produit par exemple :
Ce qui est stock LOG001 n'est pas affich et

Ce qui est affich

Clavier Logitech KZ Noir n'est

pas stock !

1) Correction pour la cl trangre


Pour le champ Ref Produit de la table CommandeLigneProduit :

La 1 colonne Num Produit :


- n'est pas visible dans la liste droulante (0cm mais existe), est toujours lie (range dans Ref Produit)
- n'est pas affiche aprs saisie donc c'est la colonne suivante (2=Dsignation) qui est affiche (mais pas
stocke dans Ref Produit)

Rappel : Ref Produit est Texte, Longueur 6 caractres donc "Imprimante laser Canon type 1" n'est pas le
contenu de ce champ !!!

Ne pas grer une liste droulante pour la cl trangre Ref Commande de la table
CommandeLigneProduit, nous utiliserons une autre technique pour assister la saisie de ces
valeurs.

Ensat - Informatique Applique - Marc Souques

Page 50

- ACCESS 2007 2010 - Travail dirig Facturation

Ch6. Bilan de l'application


1. Des Tables
Pour information, voici le MCD (Modle Conceptuel de Donnes) de cette application

Des Tables avec Relations

Cl Primaire - Cl Etrangre

Des Cls Primaires (nommes Num Table si mono champ)


Mono-Champ
Mono-Champ
Mono-Champ
MULTI-Champs (compose)
Type : NumAuto

Texte 6 caractres

NumAuto

Des Cls Etrangres (nommes Ref Table vise)


Liste droulante
Liste droulante

SANS Liste droulante

Chronologie pour les tables


Dans ce TD, pour mieux comprendre la logique des tables nous n'avons pas respect la logique normale des tapes qui doit tre :

- Dfinir les champs de chaque table avec sa cl primaire simple ou compose.


- Dfinir pour chaque cl trangre une liste droulante de choix si besoin.
- Dfinir les Relations avec Intgrit rfrentielle entre les Tables sur des tables vides de donnes.
- Saisir les donnes dans les tables :
- soit directement dans les Tables (peu recommand).
- soit par l'intermdiaire de Formulaires (recommand car plus performant).

2. Des Requtes
Des Requtes de Slection
Mono ou multi table
Avec ou sans calcul

3. Des Formulaires
Avec pour Source une Table ou une Requte
Affichage Colonne simple (uniquement 1 enregistrement visible) ou Tabulaire (tableau de N enregistrements)
Avec ou sans Calcul

Utiliser le fichier Fac05a2007.accdb pour la suite


Aller voir le Chapitre "Introduction aux Bases de Donnes et ACCESS "
pour comprendre ce qui a t fait.

Ensat - Informatique Applique - Marc Souques

Page 51

- ACCESS 2007 2010 - Travail dirig Facturation

Ch7. Facturation: extensions faire seul


1. Cahier des charges pour les Tables
On vous demande, sur la base de ce que vous avez appris dans les pages prcdentes de crer :
Tables,
Champs,
Cls
primaires,
Cls
Etrangres,
Proprits
de
(Taille, Format, Liste droulante pour les cls trangres, Index, Null
et Relations entre les champs des tables.
De nouvelles donnes doivent tre gres dans cette application de Facturation.
Penser utiliser les rgles de nommage des tables et champs vues prcdemment.

champ
interdit)

A. Table simple
1) Nous voulons grer les Catgories de produits avec comme base une liste de
valeurs prsentes dans un classeur Excel.
Voir exemple dj
Prcisions :
trait prcdemment
Une Commande fait
Un Produit
fait rfrence
1 seule Catgorie.
rfrence 1 Client
Une Catgorie
fait rfrence
plusieurs Produits.
Grer pour chaque catgorie le Numro (cl primaire) et le nom Nom Catgorie.
On veut viter qu'un utilisateur ne puisse saisir 2 fois (doublon) le mme Nom de Catgorie.
Les donnes seront saisies au clavier. Crer la table Catgorie, modifier la table Produit car on veut
une liste droulante pour choisir LA Catgorie de chaque Produit. Grer la Relation entre ces 2 tables.
Crer aussi un formulaire sur la table Catgorie en assistant Formulaire.
2) Nous voulons grer les 3 Fournisseurs des produits.
Prcisions :
On souhaite grer pour chaque Fournisseur, hors mis la cl primaire,
son Nom et sa Ville.
On souhaite viter de confondre le nom et la ville du client avec le nom et la ville du fournisseur donc
nommer les champs : Nom Fournisseur, Ville Fournisseur. On veut viter qu'un utilisateur ne puisse
saisir 2 fois (doublon) le mme Nom de Fournisseur. On veut le nom de la ville toujours en majuscule.
Pour simplifier, on ne gre pas l'adresse, le code postal et d'autres informations qui pourraient tre utiles.
Grer la table Fournisseur et crer aussi un formulaire sur la table Fournisseur.

B. Table complexe
Un Produit
Un Fournisseur

fait rfrence (peut tre achet chez) plusieurs Fournisseurs dans certains cas.
fait rfrence (peut nous vendre)
plusieurs Produits.
Voir exemple dj trait :

Une Commande fait rfrence


Un Produit
fait rfrence

plusieurs Produits.
plusieurs Commandes.

1) Grer des informations suivantes pour chaque couple Produit-Fournisseur appel ProdFour.
- Prix d'achat hors taxe pour un produit propos par un fournisseur.
- Dlai de livraison en jours pour un produit propos par un fournisseur
Voici droite un exemple de prix et de dlai de livraison
d'un mme produit propos par 2 fournisseurs.
Prcisions : On souhaite, pour des raisons de cohrence, ne pas avoir 2 fois un mme produit Produit1
propos par un mme fournisseur Fournisseur1. Grer la cl primaire en consquence. On souhaite
avoir les listes droulantes pour choisir Produits et Fournisseurs. En saisissant 1.5 on veut afficher
1,50 Jours donc saisir 0.00" Jours" pour la proprit Format du champ Dlai Livraison.

A vous d'essayer...
Fin du TD4

Ensat - Informatique Applique - Marc Souques

Page 52

- ACCESS 2007 2010 - Travail dirig Facturation

2. Cahier des charges pour les Requtes


Utiliser le fichier Fac06a2007.accdb pour la suite
Vous pouvez consulter la procdure de la correction du travail sur les Tables dans ce document.
Voir en fin de la table des matires le numro de page.

A. Requte simple
Consulter les nouvelles tables et leurs donnes.
Voici la table Produit : 14 enregistrements.

Remarque : le produit SON002 n'as pas de valeur pour Ref Catgorie !!!
1) Requte "R16 Produits slectionns"
Question : Liste de produits compose de :
a) produits avec "imprimante" n'importe o dans la dsignation et dont le prix est infrieur 1000
et
b) produits de la catgorie Livre traitant
d' "access".

B. Requte multitable
1) Requte "R17 Produit et sa Catgorie"
Question : Liste des produits classe par Num Produit avec affichage de tous les champs de Produit
(y compris Ref Catgorie) et affichage du Nom de la catgorie de la table Catgorie.

Il n'y a QUE 13 enregistrements alors qu'il y en avait 14 en haut de cette page !!!
SON002 a disparu : pourquoi ?

Les 2 dernires colonnes


affichent les mmes
valeurs mais n'ont pas le
mme rle.
Ref Catgorie permet de
choisir pour un Produit
sa catgorie.
Nom Catgorie affiche
la valeur de la table
Catgorie dpendante
(grce la Relation) de
la valeur du champ
Ref Catgorie.
Si l'on souhaite viter le
doublon, c'est Nom
Catgorie
que
l'on
pourrait ne pas afficher.

Demander la rponse l'enseignant si besoin.

Ensat - Informatique Applique - Marc Souques

Page 53

- ACCESS 2007 2010 - Travail dirig Facturation

2) Requte "R18 Produits moyenne prix achat"


Question : Liste des produits classe par Num Produit avec moyenne des prix d'achat des diffrents
fournisseurs.
Etape 1 : Liste des produits classe par Num Produit avec PLUSIEURS prix d'achat car plusieurs
fournisseurs par produit (pour certains).

Ici 2
Ici 3
Fournisseurs
par produit

17 enregistrements avec 1 doublon et 1 triplet


Etape 2 : Liste des produits classe par Num Produit avec Regroupement des mmes produits et
calcul de la moyenne des prix d'achat des diffrents fournisseurs de produits.
Attention bien
dfinir et limiter les
colonnes critres de
regroupement.
Ajouter par exemple
la colonne
Ref Produit pour
voir le problme
gnr.

14 enregistrements seulement suite au Regroupement


Voici la fentre relation aprs ajouts des nouvelles tables :

Tables "techniques"
pour grer lien N-N

Une Commande vend N Produits.


Un Produit est vendu dans N Commandes.
Deux relations 1-traduisent un lien N-N
Une Commande
Un Produit

est lie au plus


est li au plus

Un Produit est fourni par N Fournisseurs.


Un Fournisseur fournit N Produits.
Deux relations 1-traduisent un lien N-N

1 Client
1 Catgorie

donc Cl trangre Ref Client


donc Cl trangre Ref Catgorie

Ensat - Informatique Applique - Marc Souques

Page 54

- ACCESS 2007 2010 - Travail dirig Facturation

3. Cahier des charges pour les Formulaires


Utiliser le fichier Fac07a2007.accdb pour la suite
Vous pouvez consulter la procdure de la correction du travail sur les requtes dans ce document.
Voir en fin de la Table des matires le numro de page.

A. Formulaire simple
1) Formulaire "Fournisseur"
Crer un formulaire en mode Assistant,
en colonne simple avec
1 seul fournisseur prsent l'cran
un moment donn.
Utiliser les boutons en bas d'cran pour se dplacer
sur les fournisseurs.
Nommer Fournisseur ce formulaire

B. Formulaire Tabulaire bas sur une requte


1) Formulaire "Produit et sa Catgorie"
Ce formulaire sera cre en mode Assistant,
bas sur une requte existante
"R17 Produit et sa Catgorie",
prsent
'par Produit',
prsent
en mode 'Tabulaire' (donc un tableau).
Nomm
"Produit et sa Catgorie"
Tester avec ce formulaire l'ajout d'un nouveau Produit :

Cliquer ici
sur ligne * pour ajouter
sur Nouvel enregistrement vide.

ou cliquer ici

Saisir le nouveau produit ci-dessous et saisir dans Ref Catgorie de Produit avec la liste droulante sa
catgorie : la valeur Clavier.

Ref Catgorie stocke en ralit la valeur 3 mais affiche le Nom de la catgorie correspondante.
Nom catgorie est une information de la table Catgorie et non pas de la table Produit. Ne pas modifier
cette dernire colonne affiche automatiquement grce la Relation.
Fermer ce formulaire et vrifier dans la table
Produit (utiliser ventuellement le bouton
Actualiser) la prsence de ce nouveau clavier
LOG003 rang dans l'ordre de la cl primaire : Num Produit

C. Formulaire "Produit" complter


Ajouter un contrle pour saisir-choisir la Catgorie du produit.
En mode Cration, utiliser dans l'onglet Cration le bouton
'Ajouter des champs existants' puis glisser sur le formulaire
Ref Catgorie. On obtient automatiquement la liste droulante
dfinie dans le champ Ref Catgorie de la table Produit.
Passer en mode Affichage, slectionner le dernier produit par
(SON002) et saisir sa catgorie Ecran. Fermer le formulaire.
Ensat - Informatique Applique - Marc Souques

Page 55

- ACCESS 2007 2010 - Travail dirig Facturation

Ch8. L'Etat
Utiliser le fichier Fac08a2007.accdb pour la suite

Impression des Donnes : 3 possibilits


Impression
Impression

: Table (possible mais brut de prsentation donc pas recommand)


: Formulaire (possible mais pas le plus adapt)

Impression

: Etat

(le plus performant)

Intrts de l'Etat :
- reprsentation synthtique (synthse par somme ou moyenne de groupements possibles)
- regroupement par catgorie et calculs (totaux et sous-totaux)
- vue d'ensemble des donnes
L'Etat imprime (Aperu avant impression aussi) les Donnes provenant d'une Table ou Requte

1. Crer un Etat
A. Etat bas sur une table
1) Catalogue des produits bas sur la table Produit version1

a) Crer l'tat
Depuis l'onglet Crer, bouton Assistant tat :
- bas sur la table Produit
.Slectionner : tous les champs sauf Ref Catgorie
.Critre de regroupement : (rien)
.Le tri sera effectu sur :
Num Produit
.Prsentation : Tabulaire, Orientation : Portrait
.Style :
Access 2007
.Titre (nom d'enregistrement) : Produit 01 sur table produit

Suivant
Suivant
Suivant
Suivant
Suivant
Terminer

Un Aperu avant impression est propos. Fermer laperu et donc Mode Cration.
Comme dans un formulaire, il y a :
- plusieurs Sections : 2 En ttes, 2 Pieds, le Dtail
- des Contrles: ne pas confondre les Etiquettes et les Zones de texte.
- une Boite de contrles disponible : pour ajouter des contrles
Passer en Mode Etat par
(donnes visibles, PAS de mise en page possible)
Passer en Mode Page (donnes visibles ET mise en Page POSSIBLE)
Passer en Aperu avant impression (vue page format A4 et Zoom)
Passer en Mode Cration (donnes Invisibles mais mise en Page POSSIBLE).
Ensat - Informatique Applique - Marc Souques

Page 56

- ACCESS 2007 2010 - Travail dirig Facturation

b) Personnaliser l'tat :
- modifier dans len-tte de l'Etat le titre en Produit : version1
- dplacer ce contrle au centre de la largeur de la page
- tirer un trait sous ce titre avec le contrle Trait de la boite des contrles
- cliquer gauche sur le bouton Affichage pour visualiser le rsultat.
Enregistrer et Fermer

B. Etat bas sur une requte


1) Catalogue des produits bas sur la requte R12 Calcul TTC unitaire
Cliquer la requte "R12 Calcul TTC unitaire" gauche dans la liste des requtes pour la choisir
comme base du nouvel Etat.
Onglet Crer, bouton Etat et
affichage direct du rsultat.
Enregistrer: Produit 02 sur
requte
Calcul de la
Rapide mais non personnalis.
requte
2) Synthse des ventes de produits
Objectif : "Etat des ventes des produits avec :
Voir procdure
- chiffre d'affaire (CA) total par produit
page suivante
- chiffre d'affaire total par catgorie de Produit
- chiffre d'affaire total Gnral."

Ensat - Informatique Applique - Marc Souques

Page 57

- ACCESS 2007 2010 - Travail dirig Facturation

a) Crer la requte Regroupement


Crer la requte base sur :
- principalement la table CommandeLigneProduit qui contient quantits
- accessoirement la table Produit pour afficher Prix Ht et utiliser Prix
- accessoirement la table Catgorie pour afficher Nom Catgorie et plus
Explication du principe : (ici les rels contenus de Ref Produit pour

commands et Ref produit.


dans le calcul Chiffre Affaire
tard regrouper sur la Catgorie
mieux comprendre)

Table CommandeLigneProduit (dbut des produits VENDUS)


Somme

Etape 1 : Crer la requte avec Liste des produits vendus trie par Ref Produit avec PLUSIEURS fois la
mme Ref Produit et Prix Ht car produits commands (vendus) plusieurs fois (pour certains).

(dbut des rsultats de la requte)


Etape 2 : Regrouper
par Produit et calculer la Somme des multiplications Quantit X Prix Ht :
Dplacer la colonne Nom Catgorie une colonne droite pour avoir une colonne vide pour futur calcul :
faire un clic sur le rectangle gris au dessus de Nom Catgorie puis faire un gliss de cette colonne
2 colonnes droite pour avoir ceci
Enregistrer la requte : R19 Chiffre Affaire par produit (car nous allons nous servir du gnrateur
d'expression et il faut toujours enregistrer avant pour qu'il soit jour)
Cliquer dans la nouvelle colonne vide insre et dans la ligne champ,
clic en haut d'cran sur le bouton
et saisir:
- au clavier : CA HT par produit vendu : (futur nom de cette colonne calcule)
- la souris : [CommandeLigneProduit]![Quantit] ( chercher dans + Tables)
- la souris : [Prix Ht]
( chercher dans R19 Chiffre affaire par produit)

Enregistrer, Afficher, Fermer.


Visualiser le rsultat.
a)- Il y a regroupement et Somme de Quantit x Prix Ht mais pas de regroupement par catgorie
b)- Il ny a pas de total gnral des ventes tous produits confondus.
Les points (a) et (b) vont tre grs par lEtat (voir exemple plus haut).
b) Crer l'tat avec assistant
Crer un Nouvel Etat en mode Assistants Etat
- bas sur la requte R19 Chiffre affaire par produit
.Slectionner tous les champs: (de la requte)
Suivant
.Critre de regroupement : (Ref produit est dj dfini mais)
on supprime le regroupement sur Ref Produit
on ajoute le regroupement : Nom Catgorie
.Le tri sera effectu sur : Ref Produit
(ne pas faire Suivant )
Ensat - Informatique Applique - Marc Souques

Suivant
Page 58

Des calculs de synthse


sur le groupement de
Nom Catgorie

- ACCESS 2007 2010 - Travail dirig Facturation

Option de synthse :
.Prsentation : Echelonn, Orientation : Portrait
.Style : Access 2007
.Titre (nom d'enregistrement) : Ventes par Catgorie et par Produit

OK Suivant
Suivant
Suivant
Terminer

Un aperu de ltat final est propos. Il y a des problmes grer

Fermer laperu et retour en Cration.


c) Personnaliser l'tat :
On veut permuter le contenu de la
proprit Lgende pour ces 2
tiquettes car ici, erreur d'Access !
Clic droit sur Prix Ht, Disposition
Supprimer
pour
grer
individuellement l'tiquette
Par la proprit Format, donner la
valeur Montaire pour avoir 2
dcimales et
Supprimer cette Etiquette trop
'bavarde'
Dplacer comme sur l'exemple du
rsultat ( voir 2 pages avant) et
ajouter 1 trait au dessus des 2
sommes, donner le format
Montaire =Somme

Comme dans un formulaire, il y a :


- plusieurs Sections : 2 En ttes, 3 Pieds, le Dtail
- une Boite Outils disponible
- des Contrles manipulables : ne pas confondre les Etiquettes et les Zones de texte.

Enregistrer, Aperu avant impression (et ventuellement impression de cet Etat rcapitulatif).
S'il vous reste du temps
Grer l'Etat suivant pour travailler de manire autonome

Ensat - Informatique Applique - Marc Souques

Page 59

- ACCESS 2007 2010 - Travail dirig Facturation

3) Synthse par Produit de la fourniture de produits par plusieurs Fournisseurs


Il existe dans le
regroupement de la
requte le calcul
Compte qui
compte le nombre de
lignes regroupes
(on comptera les
lignes regroupes de
n'importe quelle
colonne de la
requte).

Cet Etat montre :


- Pour chaque Catgorie,
les N Produits lists
- Pour chaque Produit,
la moyenne des N prix d'achat des N Fournisseurs, le dlai de
livraison minimum des N fournisseurs et le nombre de Fournisseurs
Voir en correction dans Fac09a2007.accdb l'Etat "Moyenne Prix par Catgorie et par Produit" et
Sa requte "R20 Moyenne prix achat par produit"
4) Synthse par Fournisseur de la fourniture de plusieurs Produits

Voir en correction dans Fac09a2007.accdb l'Etat "Moyenne Prix par Fournisseur" et


Sa requte " R21 Moyenne prix achat par Fournisseur"

2. Rsum des Etats


L'Etat est destin tre Imprim ou vu en Aperu avant impression ou en mode Etat. On ne peut
donc saisir des donnes.L'Etat se comporte comme un Formulaire. Il a pour source une simple Table ou
mieux une Requte (multi tables avec calculs, tri,). Il propose, notamment, des calculs de synthse
(Somme, Moyenne,) sur des Regroupements de donnes dfinis dans l'Etat (en plus des
regroupements de la requte).
Attention la gestion de la largeur de l'Etat pour respecter les 21 cm de la page A4 sinon vous
aurez des pages supplmentaires imprimes presque vides pour ce qui dpasse des 21 cm de large.
L'Etat a une structure complexe compose de 3 En-ttes,
une zone Dtail pour afficher N Lignes et
en fin 3 Pieds.
Il est donc conseill de le concevoir automatiquement via
l'assistant puis de le personnaliser manuellement si besoin.
Ensat - Informatique Applique - Marc Souques

Page 60

- ACCESS 2007 2010 - Travail dirig Facturation

Ch9. Les Formulaires Complexes


Utiliser le fichier Fac09a2007.accdb pour la suite

1. Formulaire avec Sous-formulaire


But 1: Crer un formulaire prsentant, pour 1 Client, ses N Commandes
Laffichage ci-dessous permet de comprendre le lien Num Client
Ref client
Correspondance Formulaire - Sous formulaire
Crer un formulaire Nouveau avec Assistant formulaire.

Relation 1 .
Relation Pre et ses Fils

et

1
Relation

Relation

Pre

1
1
Fils
Procdure suivre en Assistant Formulaire :
Choisir (pour le Formulaire Principal FP) la table: Client OK
Champs affichs pour FP : tous les champs de Client
(PAS Suivant)
ET choisir nouveau (pour le Sous Formulaire (SF)) la table: CommandeEnTete
Champs affichs pour SF : tous (en initiation, on prend tous les champs, plus tard, nous
liminerons 1 champ : voir page suivante) les champs de CommandeEnTete Suivant
Afficher : par Client en Formulaire avec SS-Formulaire
Suivant
Disposition : Sous-formulaire en Tabulaire
Suivant
Style :Access 2007
Suivant
Titre : Formulaire :
Client et ses Commandes FP
Titre : Sous-formulaire :
Client et ses Commandes SF
Terminer

Tous les liens 1-N peuvent tre reprsents par un Formulaire et Sous-Formulaire :

Voir exemples pages suivante.

Ensat - Informatique Applique - Marc Souques

Page 61

- ACCESS 2007 2010 - Travail dirig Facturation

But 2 : Crer un formulaire prsentant, pour 1 En-tte de Commande, ses N Produits commands
Titre Formulaire : Commande et ses Produits FP
Titre Sous-formulaire : Commande et ses Produits SF

A vous de jouer...
Pre

Fils

Saisir, via le formulaire, de nouveaux produits commands pour des en-ttes de commandes existantes.
Saisir, via le formulaire, de nouvelles Commandes compltes ( en-tte puis leurs produits commands ).
Remarque: Le champ Ref Commande de la table CommandeLigneProduit n'a pas donn lieu dans
le TD prcdent une liste droulante car un produit command est toujours saisi dans le cadre
d'un Sous-formulaire de CommandeEnTete.
Ainsi, Ref Commande de CommandeLigneProduit prend automatiquement la valeur de Num Commande
de CommandeEnTete : Ref Commande doit donc ne pas tre affich dans le sous-formulaire donc
ne pas choisir ce champ dans l'assistant au niveau du sous formulaire.
(Voir commentaire page prcdente : "en initiation on prends tous les champs, plus tard ")
La version finale est donc :

1 Pre et

ses N Fils

C'est cette barre de dplacement qui


permet de se dplacer sur les
Produits commands. Elle indique
ici que nous sommes positionns sur
le 1 produit command par rapport
aux 2 produits commands de cette
Commande numro 1
C'est cette barre de dplacement qui
permet de se dplacer sur les
Commandes. Elle indique ici que
nous sommes positionns sur
la 1 Commande par rapport
aux 10 Commandes de cette
Application.

Ensat - Informatique Applique - Marc Souques

Page 62

- ACCESS 2007 2010 - Travail dirig Facturation

De mme pour les autres Formulaires / Sous-formulaires venir, NE PAS afficher le champ
Refxxx de la table Fille (celle du Sous-Formulaire) lors de la cration avec l'assistant.

Autre Formulaire et Sous Formulaire cr directement par Assistant:


Version Simple base sur 1 Table et 1 Table.

NON
affich
car inutile

2. Formulaire avec Sous formulaire complexe


A. Version base sur 2 Tables (pour FP) et 2 Tables (pour SF).

NON
affich
car inutile

Pour le Formulaire Principal (FP), nous avons principalement la table Produit et en plus nous
accdons grce au lien (Relation) la table Catgorie pour afficher ici le Num Catgorie du Produit.
Pour le Sous Formulaire (SP), nous avons principalement la table ProdFour, nous n'affichons pas le
champ Ref Produit inutile, et en plus nous accdons grce au lien (Relation) la table Fournisseur pour
afficher ici la Ville du Fournisseur.

S'il vous reste du temps du TD, voir ou faire les 3 pages suivantes qui grent
des Sous-formulaires complexes.

Ensat - Informatique Applique - Marc Souques

Page 63

- ACCESS 2007 2010 - Travail dirig Facturation

B. Version base sur 3 niveaux de Tables.


Les grands
pres

Les
pres

Les petits
fils

Cette organisation sur 3 niveaux hirarchiss ne pose aucun problme gnrer avec l'assistant en
choisissant les 3 tables, en liminant de l'affichage les 2 cls trangres Ref Client et Ref Commande.
Nous avons donc 3 gnrations prsentes : Grands pres, Pres et Petits fils.

C. Version avec 2 sous formulaires de mme niveau.


Objectif : Afficher chaque Produit avec sa liste de N Fournisseurs et sa liste de N Commandes.

1) Crer le formulaire Principal et 1 Sous-formulaire


Crer comme d'habitude en Assistant formulaire 2 formulaires sur les tables Produit (Pre) et ProdFour
(Fils) sans choisir la cl trangre Ref Produit de ProdFour, Prsentation Tabulaire pour le sous
formulaire et enregistrer ainsi les 2 formulaires :
Produit et ses Fournisseurs et ses Commandes FP et Produit et ses Fournisseurs et ses Commandes SF.

Ensat - Informatique Applique - Marc Souques

Page 64

- ACCESS 2007 2010 - Travail dirig Facturation

Modifier le rsultat : Clic droit sur Etiquette


lie
puis Disposition>Supprimer pour dgrouper
les 2 contrles puis supprimer l'tiquette pour
faire de la place.
Rduire la largeur des contrles (Ref
Fournisseur, Prix Achat, Dlai) et la largeur
du contrle de type sous-formulaire
pour faire de la place puis dplacer vers la gauche le grand contrle SF pour le rsultat ci-dessous.
2) Crer un formulaire pour tre Sous-formulaire
Objectif : ajouter un 2 SF droite du 1 (voir exemple
page prcdente) en Disposition Tabulaire pour afficher la
liste des Commandes de chaque Produit du formulaire
Principal (FP).
Laisser le formulaire actuel ouvert et depuis le menu
Crer> Plus de formulaire> Assistant formulaire, faire un
formulaire sur la table CommandeLigneproduit bas
seulement sur les 2 champs suivants.
FP
SF

(rappel : on ne prend pas la cl trangre de la table Fille)


Disposition : Tabulaire,
Style : Access 2007
Titre : Liste des Commandes des Produits SF.
Fermer ce formulaire qui va servir de SF pour notre formulaire en
cours de construction.
3) Ajouter un contrle de type Sous-formulaire sur le formulaire Principal
Depuis votre formulaire Produit et ses Fournisseurs et ses Commandes FP, en mode Cration,
Vrifier que le bouton

"Assistant Contrle" est Orang

donc Actif et choisir le contrle Sous-formulaire


puis glisser droite la souris un contrle SF de mme taille
que le SF de gauche.

Ensat - Informatique Applique - Marc Souques

Page 65

- ACCESS 2007 2010 - Travail dirig Facturation

Les tapes de l'assistant SF :


1) Utiliser le formulaire construit prcdemment Liste des Commandes des
Produits SF comme futur SF du formulaire principal.
2) Dfinir le lien entre la table Produit du formulaire principal et
la table CommandeLigneproduit du futur SF.
Ce lien est propos automatiquement
sur la base de la dfinition de la
fentre Relation.

On peut garder la valeur propose automatiquement


Ou dfinir manuellement par :
ce qui est quivalent
3) Enregistrer ce SF

Rsultat Final du FP et ses 2 SF :


Grer en mode Cration la prsentation pour obtenir ceci.

Nous avons donc 2 gnrations prsentes : Pres (Produit en FP) et


ses Fils (Liste des Fournisseurs en SF1) et ses Filles (Liste des ventes de CommandeLigneProduit en SF2 ).
On peut mme ajouter dans le pied du Sous-formulaire2
un contrle Zone de texte pour dfinir
pour la proprit Source contrle
avec le gnrateur d'expression

la Somme des lignes Quantit du Sous-formulaire


On peut utiliser d'autres fonctions que Somme, voir dans le gnrateur :
Fonctions>Fonctions intgre>RegroupementSQL :

Fin TD5
Ensat - Informatique Applique - Marc Souques

Page 66

- ACCESS 2007 2010 - Travail dirig Facturation

Cette partie Graphique n'est faire qui s'il


vous reste du temps en fin de TD5.
Comme dans Excel, il est possible de reprsenter les donnes de la base par des graphiques.
Les graphiques peuvent tre insrs dans les Formulaires ou dans les Etats.

3. Formulaire avec graphique

A. Graphique simple bas sur une Table


Objectif :

1) Crer le graphique
Menu Crer / Cration de formulaire.
Choisir le contrle Graphique
et le poser sur le formulaire vide
Dans l'assistant dmarr : Choisir la table : Produit
Choisir les champs : Num produit ; Prix Ht Suivant
Choisir le type de graphique : Histogramme 3 D Suivant
Cette prsentation est propose:
-Num produit de type texte est propos comme axe des abscisses :
-Un calcul de Somme de Prix Ht est propos, cela ne convient pas :
double clic sur ce bouton : Aucune pour synthse
Cela donne ceci :

Clic sur le bouton en haut gauche pour Aperu du graphique :


Fermer l'aperu puis Suivant et donner un titre au graphique : Les Produits et leur Prix et Terminer

Le rsultat est un peu tonnant mais nous sommes en Mode Cration donc ce n'est pas l'affichage
final. Passer en mode Formulaire (Affichage)

Ensat - Informatique Applique - Marc Souques

Page 67

- ACCESS 2007 2010 - Travail dirig Facturation

2) Modifier le graphique :
Double clic sur le Graphique pour appeler l'application Microsoft Graph.

Choisir de modifier l'axe des Abscisses :


a) Choisir dans la liste droulante l'objet modifier :
Autre manipulation pour modifier l'axe des abscisses :
sur la zone modifier : Ici double clic sur l'abscisse
b) Modifier le Format de l'axe des abscisses :

double clic

Dans les proprits, Alignement 90 degrs OK


Changer la couleur des barres de l'histogramme : rouge
Cliquer hors du graphique pour sortir de l'application Graph et retour dans Access en mode Cration.
Passer en mode Page (Affichage final + modifications possibles), agrandir le graphique pour voir
toutes les valeurs de l'abscisse, passer en mode Formulaire (Affichage) pour obtenir :

Enregistrer le formulaire : Graphique 1 Prix des Produits et fermer ce formulaire.

Ensat - Informatique Applique - Marc Souques

Page 68

- ACCESS 2007 2010 - Travail dirig Facturation

TD6
Nous travaillons ventuellement en Modlisation Entit Association en TD6

Fin TD6 de Modlisation

4. Formulaire Menu Principal

Dbut TD7

Utiliser le fichier Fac09a2007.accdb pour la suite


But : Crer un formulaire pour proposer le Menu des oprations possibles dans lapplication
Facturation. (Aujourd'hui, les boutons de commande seront SANS effet).
Crer un Formulaire Nouveau en mode Cration de Formulaire.Base du Formulaire: pas de table
Seule la section Dtail saffiche, lagrandir la taille voulue
Slectionner Zone dtail, Couleur Arrire plan = Bleu ciel

- Outil tiquette : poser un contrle avec :


Lgende : Facturation en police Arial en taille 48
Ajuster le contrle par clic droit : Taille (Ajuster) au contenu.
Vrifier que loutil 'Assistant contrle' nest pas actif (Actif = orang, cliquer pour le dsactiver si besoin)
- Outil Bouton de commande (sans Assistant contrle): poser un contrle
Le slectionner puis le dupliquer 6 fois par Copier-Coller
Par les proprits de chaque bouton (double Clic), donner les 6 lgendes et pour le bouton du
bas, pour la proprit Image: choisir en fin de ligne par le gnrateur le nom de limage Sortir
Passer en mode Formulaire:
Enregistrer le formulaire : A Menu principal (Je choisis le A devant Menu principal pour avoir ce
formulaire au dbut de la liste des formulaires classe par ordre alphabtique)
et l'excuter (passer en mode Formulaire) .

Ensat - Informatique Applique - Marc Souques

Page 69

- ACCESS 2007 2010 - Travail dirig Facturation

5. Rsum sur les Formulaires


Source du Formulaire :
- Des Formulaires aliments en donnes par
une simple Table
- Des Formulaires aliments en donnes par
une Requte (multi tables, calculs, tris, )

- Des Formulaires aliments en donnes par


aucune source (le Menu par exemple)

Prsentation du Formulaire :
- Colonne simple (dans l'assistant) pour prsentation
d'1 enregistrement par
cran.
'Colonne simple'
devient en proprit
"Formulaire unique"
- Tabulaire (dans l'assistant) pour prsentation
d'1 enregistrement
par ligne soit N
enregistrements /
cran.
'Tabulaire'
devient en proprit "Formulaire continus"
- Formulaire et Sous-formulaire pour prsenter un lien
1 Pre et ses N Fils : 1 Commande et ses N Produits.
Un formulaire principal en mode Colonne simple (Unique)
incluant un formulaire en mode Tabulaire (Continus)

- Formulaire sans donnes :


- des Boutons pour prsenter le menu.
- un Graphique.

- voir plus loin formulaire Tableau Crois Dynamique


au Chapitre 23
Ensat - Informatique Applique - Marc Souques

Page 70

- ACCESS 2007 2010 - Travail dirig Facturation

Ensat - Informatique Applique - Marc Souques

Page 71

- ACCESS 2007 2010 - Travail dirig Facturation

Ch10. Les Macros


Utiliser le fichier Fac10a2007.accdb pour la suite

1. Macro de dmarrage Automatique : Autoexec


Procdure : Onglet Crer, bouton Macro
Macro: autoexec
Action
Argument
Valeur
Dmarrage automatique de cette macro l'ouverture de l'application
BoiteMsg
(ZoneMessage en Version 2010)
Message: Bienvenue
Affiche une boite de message
OuvrirFormulaire
Nom formulaire:
A Menu principal
Affichage:
Formulaire
Nom filtre:
Condition Where:
Mode donnes:
Mode fentre:
Standard
Afficher le premier formulaire de l'application : 'A Menu principal'
Agrandir
(AgrandirFentre en V 2010)
Agrandir la fentre active (donc formulaire 'A Menu principal')
Enregistrer la macro sous : Autoexec
Fermer la macro et double-clic sur son nom pour lexcuter.
Remarque : Cette macro Autoexec (de par son nom particulier) s'Execute Automatiquement au
dmarrage de l'application et affiche le formulaire A Menu principal en plein cran.

2. Macros pour ouvrir formulaires et tats


A. Crer la macro
Procdure : Onglet Crer, bouton Macro
Action
Argument
Valeur
Ouvrir formulaire
Nom formulaire:
Client
Affichage:
Formulaire
Nom filtre:
Condition Where:
Mode donnes:
Mode fentre:
Standard
Agrandir
(AgrandirFentre en V 2010)
Enregistrer la macro : Client
Fermer la macro.

Ensat - Informatique Applique - Marc Souques

Page 72

- ACCESS 2007 2010 - Travail dirig Facturation

B. Attacher une macro un vnement dun contrle Bouton


Depuis le formulaire A Menu principal en mode Cration, slectionner le bouton CLIENT et ses
proprits vnementielles, Attacher (choisir dans la liste droulante) la Macro Client l'vnement
Sur clic (de souris) du bouton slectionn CLIENT.
Faire de mme les macros suivantes :

- Macro Commande avec action OuvrirFormulaire Formulaire Commande et ses produits FP


avec action Agrandir (AgrandirFentre en V 2010)
et lattacher de mme lvnement SurClic du bouton Commande et ses produits
- Macro Ventes

avec action :OuvrirEtat,

Etat : Ventes par Catgorie et par Produit,


Affichage : Etat (pas en aperu)

avec 2action: Agrandir (AgrandirFentre en V 2010)


et lattacher de mme lvnement SurClic du bouton Etat des ventes
- Macro Fermer formulaire avec action Fermer
Type objet :
Nom :

(FermerFentre en V 2010)

(volontairement, on ne prcise pas Type et Nom pour que cette macro serve pour fermer un formulaire quelconque)

Remarque : lorsque le formulaire Menu principal est ouvert (dans une couche 1)
c2: Client
et que l'on ouvre le formulaire Client (dans une couche 2), celui-ci est 'devant'
c1: Menu
ou 'dessus' le formulaire Menu principal.
Si on ne veut plus utiliser le formulaire Client et retrouver le formulaire Menu, il ne faut pas excuter
l'action OuvrirFormulaire Menu (celui-ci est encore ouvert et on laisserait ainsi le formulaire Client
ouvert) mais il faut excuter l'action Fermer le formulaire Client (fermer la couche 2) et retrouver
automatiquement le Formulaire Menu (en couche 1).

Les formulaires s'empilent l'ouverture et se dpilent leur fermeture.

Il faut TOUJOURS fermer un formulaire si on ne travaille plus avec. C'est une ERREUR grave d'ouvrir un nouveau formulaire et laisser
l'ancien ouvert sans raison.

Ajouter (sans assistant contrle) un bouton libell Fermer dans le pied du formulaire Client et y attacher
la macro Fermer formulaire.
Remarque : possibilit de copier-coller le bouton Fermer du formulaire Client vers d'autres formulaires
(Produits, facture,) car il a mme libell et mme macro quels que soient les formulaires.
- Macro Fermer menu avec action Quitter (QuitterAccess en V 2010)
(Quitter = Quitter Access donc fermer le formulaire Menu, l'application access et Access)
et lattacher de mme lvnement SurClic du bouton Sortie
Complter le menu pour grer le lancement de tous les Formulaires et Etats disponibles

Ensat - Informatique Applique - Marc Souques

Page 73

- ACCESS 2007 2010 - Travail dirig Facturation

Ch11. Les recherches


Utiliser le fichier Fac11a2007.accdb pour la suite
Dans une application, il y a des traitements Spcifiques 1 sujet (par exemple calcul du total d'une
commande) mais il y a aussi des traitements Classiques que l'on retrouve dans tous les sujets.

Les traitements classiques sur les enregistrements d'un formulaire sont :


Ajouter un enregistrement :
Propos automatiquement par Access :
Modifier un enregistrement :
Propos automatiquement par Access : saisir par formulaire et c'est tout.
indique 'en cours de saisie'.
Supprimer un enregistrement :
Propos automatiquement par Access : slectionner l'enregistrement complet par puis touche Suppr
Trier (classer) des enregistrements :
Propos automatiquement par Access : slectionner un contrle puis
Changer d'enregistrement (premier, prcdent, suivant, dernier) :
Propos automatiquement par Access :
Consulter un enregistrement :
Propos automatiquement par Access : le Formulaire Colonne simple
Calculer sur des enregistrements :
Propos automatiquement par Access : la Requte et le Formulaire un peu.
Lister tous les enregistrements :
Propos automatiquement par Access : le Formulaire Tabulaire
Imprimer des enregistrements :
Propos automatiquement par Access : l'Etat
Toutes ces solutions proposes par Access sont entirement satisfaisantes.
Rechercher un enregistrement unique :
Propos automatiquement par Access :
mais saisie clavier du critre de recherche, pas de
proposition de valeurs par liste droulante donc solution amliorer par un dveloppement personnel.
Rechercher (Filtrer) plusieurs enregistrements :
Propos automatiquement par Access :
mais saisie clavier du critre de recherche, pas de
proposition de valeurs par liste droulante, donc solution amliorer par un dveloppement personnel.

Il y a plusieurs types de recherche ou filtrage :


Cas

Mono critre

1
2
3
4

X
X
X

Multi critres

Mono valeur du critre

Multi valeurs du critre

Mono rsultat

X
X

X
X

Multi rsultats

X
X
X

Nous allons mettre en uvre les cas 1, 2 et 4 pour commencer.


Nous prsenterons seulement les rsultats du cas 3.

Ensat - Informatique Applique - Marc Souques

Page 74

- ACCESS 2007 2010 - Travail dirig Facturation

1. Recherche mono critre, mono valeur du critre,


mono rsultat
A. Rechercher un client sur son Nom Prnom par liste droulante
Objectifs :
Rechercher automatiquement un enregistrement complet CLIENT (Nom, Prnom, Adresse, ...) partir
de son Nom-Prnom saisi dans une Liste Droulante proposant tous les Noms-Prnoms Tris des
clients existants. 3 Etapes :
1) Dfinir une requte pour une liste de clients trie pour alimenter une liste droulante
2) Dfinir un contrle liste droulante pour choisir un client rechercher
3) Dfinir un programme excut sur un vnement pour rechercher aprs la saisie du client

Liste
TOUJOURS
Trie
pour
faciliter le
choix
Procdure :
1) Crer une requte sur la table Client avec Num Client, Nom, Prnom,
trie sur Nom puis Prnom
(donc la colonne Nom doit tre gauche du Prnom pour tri prioritaire)
nomme R22 Client pour liste droulante.
Ce rsultat alimentera la liste droulante (proprit Contenu).
Le Nom-Prnom permettra de choisir un client (visible dans la liste droulante)
Le Num Client sera le vritable critre de recherche (INvisible dans la liste
droulante)

2) Ajouter une liste droulante de recherche sur le Formulaire Client :


Vrifier dans l'onglet Cration, Zone Contrles que l'Assistant controle
est ACTIF
( le bouton est orang s'il est actif lorsque la souris n'est pas dessus, sinon cliquer dessus pour l'activer).
Ajouter, en mode assistant-contrle, un contrle Liste droulante
Client avec les rponses suivantes pour l'assistant :

dans len-tte du formulaire

- Je veux que la liste droulante recherche les valeurs dans une table/requte
- Requte : R22 Client pour liste droulante
3 colonnes de
- Les 3 colonnes pour liste droulante
la
liste droulante
- Pas tri (dj tri dans la requte)
(Num Client) Nom Prnom
- Rduire 0 cm la largeur de la colonne Num Client
pour la cacher (on peut aussi la visualiser si besoin)
- Garder Num Client dans le contrle (critre de recherche)
- Aprs slection dune valeur : Mmoriser la valeur
Le Contrle
pour usage ultrieur (donc pas de stockage de cette saisie
stocke
dans un champ d'une table)
Num Client
- Etiquette pour la liste droulante : Rechercher le client :
Ce Contrle est donc Indpendant d'une quelconque source (champ).
-

Indpendant = Vide
Ensat - Informatique Applique - Marc Souques

Champ
Page 75

- ACCESS 2007 2010 - Travail dirig Facturation

Par les proprits du contrle Liste Droulante :


- nommer le contrle par (onglet Toutes) la proprit Nom : ChoisirClient
- visualiser et vrifier les proprits (onglet Toutes) dfinies via lAssistant :
Origine (Table ou Requte), Contenu (nom de la requte ou sa dfinition SQL), Colonne lie (rang de
la colonne de la requte garder dans le contrle =1=Num Client),
Largeur des 3 colonnes (vrifier 0 Cm pour la premire colonne donc Num Client cacher)...
Tester le fonctionnement de la liste droulante en Mode Formulaire (une saisie, pas encore une
recherche) puis passer en Mode Cration pour dfinir la Recherche.
3) Attacher automatiquement une Macro un vnement de la Liste Droulante:
Toujours par les proprits du contrle Liste Droulante, partir de lvnement Aprs MAJ
(Aprs Mise Jour donc aprs la saisie par la liste droulante),
activer (en fin de ligne Aprs MAJ) le gnrateur ... (de Macros) et saisir la macro
Actions
Arguments
AtteindreContrle
Nom du contrle : Num Client
(Choix du contrle dans lequel chercher)
TrouverEnregistrement
(Visualiser laide
Rechercher :
= ChoisirClient
par F1 )
(choix de la valeur chercher)
Ici, les crochets [ ] ne sont pas obligatoires. Ils sont
ncessaires lorsque le nom comporte des espaces.
exemple : [Choisir le client]

Explication de cette macro :


- AtteindreContrle permet de positionner le curseur sur le contrle (Zone de texte) Num Client pour
permettre la recherche sur le champ Num Client de ce contrle.
- TrouverEnregistrement va rechercher dans le champ Num client de la Table Client le NUMERO
saisi dans le contrle Liste Droulante (nomm pour cela), largument Rechercher fait rfrence
lidentificateur de la Liste Droulante [ChoisirClient] dont le contenu est valu par loprateur =
Si on ne met pas le =, c'est le mot "ChoisirClient" qui est recherch au lieu du contenu de ChoisirClient
Cette macro est dclenche aprs la saisie dans la liste droulante, donc par lvnement Aprs MAJ
(Mise Jour car nouveau contenu arriv par la saisie) de ce contrle Liste Droulante. Cette macro n'a pas de
nom car elle est incorpor cette liste droulante
Passer en mode Formulaire et tester la liste droulante (qui permet de rechercher un client et de se
positionner sur lenregistrement correspondant).
Maintenir jour le contenu de la liste droulante par rapport aux Ajout/Suppression de client.

ATTENTION : Le principe dans Access est qu' l'ouverture d'un


formulaire, chaque contrle excute les donnes de sa dfinition puis
garde cette dfinition mme si les donnes lies sa dfinition changent.
Donc, pour notre liste droulante, l'ouverture, elle dfini par exemple
Si en utilisant le formulaire on ajoute le client AAA Alain
et supprime BON Marc, il faudrait que la liste droulante
soit actualise pour afficher en permanence les bonnes
donnes (les actuelles) disponibles rechercher.

Ensat - Informatique Applique - Marc Souques

Page 76

- ACCESS 2007 2010 - Travail dirig Facturation

B. Auto-Actualiser la liste droulante sur sa dfinition


Vrifier dans les proprits de la liste droulante son Nom : ChoisirClient
1) Crer une macro pour actualiser la liste droulante
- Action BoiteMsg, (cette action n'a ici qu'un but pdagogique pour comprendre l'excution de
l'vnement "Sur rception focus" voir plus loin) Message : APRES le clic, AVANT le droul.
On supprimera plus tard cette action inutile.
- Action Actualiser, Nom contrle : ChoisirClient pour que la liste consulte et excute
nouveau sa dfinition (requte R22 Client pour liste droulante) donnant la liste ACTUELLE des
clients de la table Client).
Enregistrer la macro : Actualiser LD Form Client
2) Excuter la macro automatiquement
On pourrait mettre un bouton
sur le formulaire excutant la macro ci-dessus et
demander l'utilisateur de ne pas oublier de cliquer sur ce bouton avant d'utiliser la liste droulante.
On prfrera un systme AUTOMATIQUE
Attacher la macro la liste droulante sur l'vnement Sur Rception Focus (vnement qui se
produit aprs le clic sur la liste, quand la liste "receptionne le curseur"
et avant que la liste des Clients soit droule) pour que la macro soit
excute automatiquement chaque fois que l'on clique sur la liste
droulante et juste avant de drouler les clients.
Tester en :
- en ajoutant un client (clic en bas de formulaire sur le bouton Nouveau),
saisir le Nom Prnom AAA Alain et l'enregistrer
dans la table Client par bouton Prcdent
ou dans onglet Accueil par
d'enregistrement.

sans changer

Noter que dans la barre grise de gauche, le crayon


indique que
l'on est en cours de saisie dans le formulaire et que les donnes saisies
ne sont pas encore transfres la table source du formulaire (Client). Enregistrer supprime le 'crayon'
- tester la liste droulante
- supprimer l'action BoiteMsg de la macro pour ne laisser que Actualiser qui sera invisible l'excution
et ajouter (optionnellement) l'action Bip (bip sonore) pour rappeler que la macro existe.
- supprimer le client AAA Alain slectionner par le formulaire : clic sur puis touche Suppr
Maintenant, faire de mme sur le formulaire Produit pour rechercher un Produit.

Fin TD7

2. Recherche mono critre, mono valeur du critre,


multi rsultats
A. Rechercher des clients sur leur ville par liste droulante
Objectifs :
Rechercher automatiquement les enregistrements de CLIENT (Num, Nom, Prnom, Adresse, ...) partir
de leur Ville saisie (choisie) dans une Liste Droulante proposant toutes les Villes (sans doublon)
Tries des Clients existants. 3 Etapes :
1) Dfinir une requte pour une liste de villes pour alimenter une liste droulante
2) Dfinir un formulaire avec contrle liste droulante pour choisir une ville rechercher et avec un
contrle sous-formulaire pour afficher une liste de Clients
3) Dfinir un programme excut sur un vnement pour rechercher aprs la saisie de la ville

Ensat - Informatique Applique - Marc Souques

Page 77

- ACCESS 2007 2010 - Travail dirig Facturation

Objectif : afficher les clients de la ville slectionne

Procdure
1) Une Requte pour alimenter la liste modifiable

Le champ Ville seulement.


Regroupement pour regrouper
en 1 seul exemplaire chaque ville.
Tri Croissant pour la liste.
Enregistrer :
R23 Client Ville unique
2) Un formulaire pour slectionner la ville et afficher les clients
Crer un formulaire vide, bouton Cration de Formulaire (bas sur aucune table/requte).
Vrifier que le bouton Assistant contrle est dsactiv
(pas orang) et ajouter (sans assistant) sur ce formulaire une
liste droulante :
Indpendante (= sans valeur pour la proprit Source donc
Indpendante des donnes des tables),
liste avec un Contenu (proprit) dfini par la requte prcdente (R23...) puis nommer (proprit Nom
) la Liste droulante VilleSlection.
Enregistrer ce formulaire Clients slectionner par ville.
Garder ce formulaire ouvert et crer une requte pour filtrer les rsultats(voir page suivante)

Ensat - Informatique Applique - Marc Souques

Page 78

- ACCESS 2007 2010 - Travail dirig Facturation

3) Une requte de slection pour filtrer les clients


base sur la table Client avec comme critre de slection la valeur
du contrle liste modifiable VilleSlection (avec Gnrateur)
du formulaire Clients slectionner par ville

Enregistrer et fermer cette requte : R24 Clients slectionns par ville


4) Une liste de clients dans le formulaire
Retourner au formulaire Clients slectionner par ville.
Ajouter en mode Assistant contrle un contrle de type Sous-formulaire
bas sur la requte
prcdente R24 avec tous ses champs (pour afficher les clients slectionns sur la ville) et enregistrer le
Formulaire gnr : Clients slectionns par ville SF.
(SF pour Sous Formulaire)
2 lments sont crs par l'assistant :
- un contrle de type SF nomm par dfaut
Clients slectionns par ville SF
qui est un CONTENANT
(et son Etiquette)
- un formulaire en mode liste (de client) nomm
par dfaut Clients slectionns par ville SF
qui est la source du contrle SF prcdent donc son contenu
Enregistrer et utiliser ce formulaire.
Le CONTENANT : le contrle
Le contenu : le formulaire
Autre reprsentation : Formulaire Clients slectionner par ville et son Sous formulaire (SF):
Contrle type Liste droulante
Contrle de type SF

Formulaire
principal
Clients slectionner par ville

Formulaire
source du
contrle de type
SF
Clients slectionns par ville SF

Requte
source du
Formulaire
R24Clients slectionns par ville

En rsum : Le formulaire Principal (Clients slectionner par ville) contient un


Contrle de type SF (Clients slectionns par ville SF) qui contient un
Formulaire en mode Liste (Clients slectionns par ville SF) qui est bas sur une
Requte slection (R24 Client slectionns par ville).
Problme : Le contrle sous formulaire ne "regarde" par dfaut la valeur de la liste droulante (ville)
qu' l'ouverture du sous-formulaire (la ville est vide ce moment l).
Si on saisit ensuite une ville, la liste des clients reste vide. Tester cette solution temporaire.
Solution : Il faut demander explicitement au contrle SF d'Actualiser son contenu aprs chaque
nouvelle saisie de la liste droulante Ville (donc Aprs la Mise jour du contenu de la liste
droulante).

Ensat - Informatique Applique - Marc Souques

Page 79

- ACCESS 2007 2010 - Travail dirig Facturation

5) Macro pour 'Actualiser' un contrle Sous-formulaire


Nous avons dj vu ce principe d'actualisation dans la recherche prcdente.
Nous voulons crer une macro mais elle sera spcifique ce contexte donc nous choisissons de gnrer
une macro sans nom qui sera 'Incorpore' dans ce formulaire.
A partir de l'vnement Aprs MAJ de la liste droulante
(donc aprs chaque nouveau choix de ville) utiliser le bouton
pour crer la macro suivante :

Condition

Action
Actualiser

.
Tester

Arguments
Nom contrle : Clients slectionns par ville SF
Le contrle de type Sous-formulaire

3. Recherche mono critre, multi valeurs du critre,


multi rsultats
Exemple : rechercher les clients sur le critre de la ville pour plusieurs villes possibles : ici Tarbes et
Toulouse slectionnes parmi 4 villes proposes : Albi, Pau, Tarbes et Toulouse

Cette fonctionnalit peut tre mise en place dans


Access mais est relativement complique.
Nous ne la verrons pas pour le moment.
Si vous tes intress, demander l'enseignant

4. Recherche multi critres, mono valeur du critre,


multi rsultats
Exemple : liste des clients de la ville de Toulouse ET ayant une date d'entre suprieure une date.

Ensat - Informatique Applique - Marc Souques

Page 80

- ACCESS 2007 2010 - Travail dirig Facturation

Copier le Formulaire Client slectionner par ville (clic droit sur ce nom) et
Coller en renommant Client slectionner par ville et date entre
Ouvrir en mode cration ce nouveau formulaire et supprimer le grand contrle sous formulaire.
Ajouter un contrle zone de texte pour saisir la date, le nommer DateSlection, proprit Format : Date,
abrg, vrifier que Slecteur de date est : certaines dates pour avoir le calendrier pour saisir.
Enregistrer ce formulaire.
Garder ce formulaire ouvert et crer une requte pour filtrer les rsultats.
1) Une requte de slection
base sur la table client avec comme critre de slection les valeurs du formulaire Clients slectionner
par ville et date entre :
- contrle liste modifiable VilleSlection (avec Gnrateur)
- contrle liste modifiable DateSlection (avec Gnrateur) avec l'oprateur > en dbut de critre
Les 2 critres sont sur la mme ligne Critre donc les 2 critres sont relis par ET.
Pour un lien par OU, les mettre sur 2 lignes distinctes, la ligne critre et une ligne en dessous

Enregistrer cette requte : R25 Clients slectionns par ville et date


Fermer la requte.
2) Une liste de clients dans le formulaire
Retourner au formulaire Clients slectionner par ville et date entre.
Ajouter en mode Assistant contrle un contrle de type Sous-formulaire
bas sur la requte
prcdente avec tous ses champs (pour afficher les clients slectionns) et enregistrer le Formulaire
gnr : Clients slectionns par ville et date SF.
(SF pour Sous Formulaire)
Problme : Le contrle sous formulaire ne "regarde" par dfaut les valeurs des 2 contrles de critre
qu' l'ouverture du sous-formulaire (les 2 contrle sont vides ce moment l).
Si on saisit une ville ou une date, la liste des clients reste vide. Tester cette solution temporaire.
Solution : Il faut demander explicitement au contrle SF d'Actualiser son contenu aprs chaque
nouvelle saisie de la liste droulante Ville et du contrle Zone de texte date (donc Aprs la Mise jour
du contenu de ces contrles ).
3) Macro pour 'Actualiser' un contrle Sous-formulaire
Nous avons dj vu ce principe d'actualisation dans la recherche prcdente.
Nous voulons crer une macro mais elle sera utilise 2 fois ( chacun des 2 contrles doit actualiser le SF ).
Nous choisissons de gnrer une macro AVEC un nom qui sera appele dans les 2 contrles du
formulaire.
Crer la macro ci-dessous.

Condition

Action

Arguments

Actualiser
Nom contrle : Clients slectionns par ville et date SF
La nommer Rechercher actualiser SF ville et date et la fermer.
Sur le formulaire, partir de l'vnement Aprs MAJ
de chacun des 2 contrles de critre, associer la macro prcdente.
Rappel : Aprs MAJ se lie Aprs MiseA Jour et non pas Aprs MAJuscule !
Enregistrer et Tester

Utiliser le fichier Fac12a2007.accdb pour la suite

Ensat - Informatique Applique - Marc Souques

Page 81

- ACCESS 2007 2010 - Travail dirig Facturation

Ch12. Les Formulaires complexes suite


1. Sous Formulaire bas sur Requte avec calculs
But: Facture

grce la requte
R26 Facture dtail,
base de ce
Sous-formulaire (voir
plus loin)

Table

Ajouter 1 contrle
dans le pied du
Sous-Formulaire
(et PAS dans le pied
du Formulaire)
princpak

Requte

1) Crer une Requte nomme R26 Facture dtail qui sera la source du SF
Remarque:
le champ Ref commande de la table CommandeLigneProduit doit tre prsent dans la requte pour
pouvoir assurer la relation avec Num Commande de la table CommandeEnTete (base du FP) : voir
relation ci-dessus
Penser enregistrer la requte
avant de faire la colonne
calcule "Total du produit" pour
pouvoir accder aux colonnes
Quantit et Prix de la requte
courante

Ici, le Taux est


recherch explicitement
dans la table Produit
car la colonne Taux
n'est pas prsente dans
les colonnes de la
requte courante.

Dsignation est ici inutile car Ref Produit affiche


2) Crer le formulaire Facture
en assistant formulaire avec la table CommandeEnTete (pour FP) et la requte R26 Facture dtail
(pour le SF) en n'affichant pas Ref Commande dans le SF, avec pour le SF Disposition Tabulaire
(au lieu de Feuille de donnes propose), style : Access 2007 et
enregistrer sous Facture et ses produits FP et Facture et ses produits SF.
En mode cration, rduire les largeurs des contrles comme sur l'exemple plus haut.
3) Ajouter en bas de facture la somme de la facture
Agrandir la souris la zone Pied de formulaire sur le SF
(et pas Pied du formulaire principal)
et y ajouter un contrle de type Zone de texte pour calculer
le total de la facture.
Dfinir la proprit Source contrle en utilisant le gnrateur dexpression avec
Fonction /Somme puis dans le gnrateur dexpression,
slectionner le formulaire courant (pas dans la liste des
Formulaire MAIS en haut de la liste de la colonne de
gauche) Facture et ses produits SF puis <Liste de
champs> puis Total du produit puis OK.
Enregistrer, passer en mode formulaire et fermer.
Ensat - Informatique Applique - Marc Souques

Page 82

- ACCESS 2007 2010 - Travail dirig Facturation

Ch13. Introduction aux


Bases de Donnes et ACCESS
ACCESS : Systme de Gestion de Bases de Donnes sur micro-ordinateur. (SGBD)

1. Un Systme de Gestion de Bases de Donnes


Un systme de gestion de bases de donnes est un logiciel spcialis dans l'organisation et la gestion
d'un nombre important d'informations contenues au sein d'un systme informatique.
Il permet d'optimiser (facilit, rapidit, scurit) les oprations d'ajout, modification, suppression,
classement, slection, dition et impression sur des Applications de Bases de Donnes dans un contexte
Multi-utilisateur (Partage d'une application par plusieurs utilisateurs via le rseau).
C'est une diffrence importante avec le Tableur qui est multi-utilisateurs en lecture mais monoutilisateur en criture (donc pas de vrai partage collectif d'informations)
Il permet de dvelopper des applications axes sur les Donnes. (nombre et complexit des Donnes)
Le Tableur gre plutt des Donnes simples en nombre limit

2. Une Application de Base de Donnes


C'est une application dveloppe grce un SGBD qui contient les Traitements qui s'appliquent
sur des Donnes structures en Base de Donnes.

3. Une Base de Donnes


Une base de donnes est un ensemble d'informations relatives un thme et structure d'une manire
bien spcifique dans le but d'en optimiser la gestion.
La base de donnes est compose de Tables.
exemple:
Le SGBD Access gre une application de gestion d'une LIBRAIRIE utilisant une Base de
Donnes, base constitue des Tables : Livre, Editeur, Client, Commande, ...
Une table est constitue comme un tableau deux dimensions :
- les lignes reprsentent
les enregistrements (lments d'un ensemble, individus d'une population),
- les colonnes reprsentent les champs
(caractristiques de chaque lment).
exemple:

Table Livre.

Rfrence
123456
123698
123581
541258

Titre
Excel pour Windows
Word pour Windows
VBA pour Windows
Access pour Windows

Editeur
Inter-Edition
PSI
SYBEX
Micro-Application

Prix
25
15
26
19

Une base de donnes Relationnelle comporte plusieurs tables ouvertes simultanment et


lies entre elles par des champs mis en relation.
(voir plus loin Modlisation des Donnes)

--- C'est une autre diffrence importante avec le Tableur o les donnes sont organises en
1 ou plusieurs Tableaux de Ligne-Colonne mais sans lien entre les tableaux --L'outil
SGBD
Access

4.

pour dvelopper

l'application
de Type
Base de Donnes

Traitements
Base de
Donnes

Ensat - Informatique Applique - Marc Souques

Table1
Table2

Page 83

- ACCESS 2007 2010 - Travail dirig Facturation

ACCESS
ACCESS est un Systme de Gestion de Bases de Donnes Relationnelles. (SGBDR)
Les Donnes contenues dans la base de donnes peuvent tre traites de 3 manires :
1. l'aide de commandes SQL stockes dans des Requtes
gnration interactive dans environnement graphique (trs simple et trs puissant)
2.

l'aide d'actions stockes dans des Macros-programmes :


mode programmation niveau 1
(trs simple mais limit en performances)

3. l'aide d'instructions du langage VISUAL BASIC (VBA) stockes dans des procdures ou
fonctions : mode programmation niveau 2 (trs performant mais complexe) VBA NON vu

Les produits majeurs de type SGBD sur microordinateur sont :

dans cette
formation

-Pour petites applications (mono-utilisateur ou moins de 20 utilisateurs simultanment):


ACCESS,
-Pour grosses applications (plus de 20 utilisateurs, performances +, scurit +, pour le WEB):
ORACLE (la rfrence), SQL Serveur (MicroSoft), MYSQL (gratuit), PostGreSQL (gratuit),
SYBASE,

ACCESS gre les lments suivants :


La Table : elle stocke les Donnes de l'application.
La Requte : elle stocke des Traitements bass sur les donnes des tables.
Le Formulaire : il affiche un Ecran l'utilisateur mis en forme pour grer les donnes.
L'Etat : il met en forme les donnes pour les destiner l'Imprimante.
La Macro : elle stocke des Actions simples pour dfinir des traitements.
Le Module : il stocke des Procdures et Fonctions en langage Visual Basic pour
Application (VBA) pour dfinir des traitements. C'est le mode Programmation.

A. Choix entre Access et Excel pour dvelopper une application ?


Chaque logiciel a des avantages et des inconvnients, utiliser l'un ou l'autre en fonction :
- du contexte : caractristiques des Donnes, caractristiques des Traitements, Partage entre plusieurs
utilisateurs, volont de guider l'utilisateurs, compatibilit avec d'autres applications.
- de votre niveau de formation : modlisation des Donnes ncessaire pour Access
Choisir Excel pour :
- sa simplicit, sa rapidit de dveloppement, sa souplesse, ses graphiques, ses outils particuliers
(Solveur), sa grande diffusion, ses nombreuses fonctions prdfinies de gestion, sa rfrence en
entreprise.
Mais ne pas oublier qu'Excel :
- gre mal la cohrence des donnes, ne gre pas le partage d'une application entre plusieurs utilisateurs,
ne gre pas les liens entre diffrentes populations, est limit dans le nombre et la complexit des donnes
Choisir Access pour :
- sa accessibilit par rapport aux autres SGBD, son aspect RAD (Dveloppement Rapide d'Application),
sa rfrence en entreprise, sa grande diffusion, le modle Relationnel tablissant des liens entre les
populations, le partage des donnes entre plusieurs utilisateurs, le contrle de la cohrence des donnes
(intgrit rfrentielle) , le nombre et la complexit des donnes gres,
Mais ne pas oublier qu'Access :
- est limit environ 15 utilisateurs simultans en Partage, n'est pas un SGBD strict mais orient
fichiers, n'est pas client-serveur de base et surtout ncessite d'abord une tape de modlisation des
donnes avant de dvelopper.
Ensat - Informatique Applique - Marc Souques

Page 84

- ACCESS 2007 2010 - Travail dirig Facturation

Ch14. Correction extension: les Tables


A. Crer la table Categorie
Le produit CAN001 fait rfrence la Catgorie Imprimante.
Le produit EPS001 fait rfrence la Catgorie Imprimante.
Pour permettre de saisir la Catgorie d'un produit en la choisissant dans une liste, on dfini une table
listant les diffrentes Catgories.
Onglet Crer, Bouton Table, Mode Cration, Nom : Catgorie
Nom du Champ
Num Catgorie
Nom Catgorie

Type de donnes
NumroAuto
Texte

Proprit du champ
Taille : 20
Index : Oui sans doublons pour interdire de saisir 2 fois
Imprimante par exemple
Null interdit : OUI donc vide interdit donc saisie
obligatoire

Vrifier que vous avez gr la cl primaire sur Num Catgorie.


Relations :
Une catgorie de produit ne pointe pas vers 1 seul Produit ou 1 seul Client ou 1 seule Commande ou
1 seul Produit command donc pas de cl trangre vers 1 cl primaire d'une autre table.

Catgorie n'est pas une table Fils pointant (rfrant)


vers 1 Pre
mais
Catgorie
est
une table Pre pointe (rfre)
par plusieurs Fils (plusieurs Produits).
Enregistrer la table : Categorie (Rgle : Premire lettre de chaque mot en majuscule, sans accent, sans
espace, au singulier) et fermer cette table.
Saisir les donnes comme dans l'exemple ci-contre.
Crer aussi un formulaire Catgorie par l'assistant.

B. Modifier la table Produit


Un Produit fait rfrence 1 seule Catgorie (Fils et son Pre).
Produit est une table Fils donc ajouter une cl trangre
Ref Catgorie pour future Relation avec Num Catgorie :
Type : Numrique, Entier long
(compatible avec ).
Null interdit : NON donc vide autoris donc saisie facultative
(noter ventuellement OUI pour obliger la saisie)

Dfinir pour Ref Catgorie une liste droulante pour effectuer les saisies par choix de valeur de Catgorie.

Remarque : Si aucune des 2 tables Catgorie et Produit n'existait, l'ordre de cration serait :
D'abord
Catgorie car c'est une table Pre et les Pres naissent avant leurs Fils.
Ensuite
Produit
car c'est une table Fils pointant vers un Pre et les Fils naissent aprs leur Pre

Ensat - Informatique Applique - Marc Souques

Page 85

- ACCESS 2007 2010 - Travail dirig Facturation

Tirer la relation entre les tables


et penser cocher Intgrit
rfrentielle pour activer cette
vrification (?) qui se manifeste
par le 1 et sur le lien.
Saisir la rfrence de la Catgorie par la liste droulante pour tous les produits sauf pour Son002
Saisie facultative : voir
C. Crer la table Fournisseur
Null interdit : NON
Onglet Crer, Bouton Table, Mode Cration, Nom : Fournisseur
Nom du Champ
Type de donnes
Proprit du champ
Num Fournisseur NumroAuto
Nom Fournisseur Texte
Taille : 20
Index : Oui sans doublons pour interdire de saisir 2
fois le mme fournisseur par exemple
Null interdit : OUI donc vide interdit donc saisie
obligatoire
Ville Fournisseur Texte
Taille : 20
Format : > (pour majuscule)
Vrifier que la cl primaire est sur Num Fournisseur.

Relations :
Un fournisseur de produit ne pointe pas vers 1 seul Produit ou 1 seul Client ou 1 seule Commande ou
1 seul Produit command ou 1 seule Catgorie donc pas de cl trangre vers 1 cl primaire d'une autre table.

Enregistrer la table : Fournisseur (Premire lettre de chaque mot en majuscule, sans accent, sans espace,
au singulier) et fermer cette table.
Crer aussi un formulaire Fournisseur par l'assistant.

D. Crer la table Intermdiaire ProdFour


Relations :
Un Produit
Un Fournisseur

fait rfrence (peut tre achet chez) plusieurs Fournisseurs dans certains cas.
fait rfrence (peut nous vendre)
plusieurs Produits.

Nous sommes dans le cas Frres - Surs vu prcdemment (page 10):


Un Frre peut avoir de 0 N Surs, une Sur peut avoir de 0 N Frres
Pour grer cette relation, on ajoute une nouvelle table intermdiaire avec
un champ Ref Frre un champ Ref Soeur D'ventuels champs
contenant la valeur de contenant la valeur de dpendants de frre
l'identification de Frre l'identification de Sur ET sur.
Cl primaire
SANS doublon
"Pre"

Il suffit d'1 cas pour nous


obliger grer le problme.

Cl trangre
Cl trangre
AVEC doublons AVEC doublons
"Fils"
"Fils"

Ensat - Informatique Applique - Marc Souques

FRERE

SOEUR

x
x

x
x
x
x

x
x

Cl primaire
SANS doublon
"Pre"

Page 86

- ACCESS 2007 2010 - Travail dirig Facturation

Donc pour nos Produits et Fournisseurs:

Produit

Fournisseur
Le produit ACE001
est fourni
par 1 et 2

Le fournisseur 2
fournit
ACE001 et ACE002

ProdFour
Cette solution permet :
Un Produit
fait rfrence (peut tre achet chez) plusieurs Fournisseurs.
Un Fournisseur
fait rfrence (peut nous vendre)
plusieurs Produits.
Dfinitions de la table ProdFour: ce nom intgre les 2 tables croises : Produit et Fournisseur

Cl trangre : Ref Produit et sa liste droulante

Cl trangre : Ref Fournisseur

et sa liste droulante

Cl primaire compose de Ref Produit + RefProduit

C'est cette cl primaire sur les 2 champs Ref Produit + Ref Fournisseur qui interdit un doublon sur
le couple ACE001
+
1
Ensat - Informatique Applique - Marc Souques

Page 87

- ACCESS 2007 2010 - Travail dirig Facturation

E. Tirer les Relations avec Intgrit Rfrentielle:


Tirer les relations entre les tables et penser cocher Intgrit rfrentielle pour activer cette
vrification (?) qui se manifeste par le 1 et sur le lien.

F. Modle Conceptuel de Donnes (MCD) la source du


Modle Physique Access

MCD Facturation
dessin avec le logiciel gratuit Looping.
(voir enseignant pour obtenir ce logiciel si besoin)

Ensat - Informatique Applique - Marc Souques

Page 88

- ACCESS 2007 2010 - Travail dirig Facturation

Ch15. Correction extension: les Requtes


Utiliser le fichier Fac06a2007.accdb pour la suite

A. Requte simple
Consulter les nouvelles tables et leurs donnes.
Voici la table produit : 14 enregistrements.

Remarque : le produit SON002 n'as pas de valeur pour Ref Catgorie !!!
1) Requte "R16 Produits slectionns"
Question : Liste de produits classe par Num Produit et compose de :
a) produits avec "imprimante" n'importe o dans la dsignation et dont le prix est infrieur 1000
et
b) produits de la catgorie Livre traitant
d' "access" : attention ne pas
slectionner un clavier avec une
dsignation " Clavier accessible"
Solution : requte bas sur la table Produit avec 4 critres de slection.
La slection pour "Livre" est obtenue par 4 dans Ref Catgorie

B. Requte multitable
1) Requte "R17 Produit et sa Catgorie"
Question : Liste des produits classe par Num Produit avec affichage de tous les champs de produit
(y compris Ref Catgorie) et affichage du nom de la catgorie du produit

Ensat - Informatique Applique - Marc Souques

Page 89

- ACCESS 2007 2010 - Travail dirig Facturation

Solution : requte bas sur les table Produit et Catgorie Lies.

Il n'y a QUE 13 enregistrements !!! SON002 a disparu : pourquoi ?


Solution : SON002 disparu car le lien Ref Catgorie - Num Catgorie est
sans effet car ce produit stocke
(vide) dans Ref catgorie qui ne peut
tre retrouv = par le lien dans NumCatgorie de la table Catgorie.
2) Requte "R18 Produits moyenne prix achat"
Question : Liste des produits classe par Num Produit avec moyenne des prix d'achat des diffrents
fournisseurs.
Etape 1 : Liste des produits classe par Num Produit avec PLUSIEURS prix d'achat car plusieurs
fournisseurs par produit (pour certains).

17 enregistrements avec 1 doublon et un triplet sur Produit


Etape 2 : Liste des produits classe par Num Produit avec regroupement des mmes produits et
calcul de la moyenne des prix d'achat des diffrents fournisseurs.

14 enregistrements seulement
car le doublon est regroup en 1 enregistrement et le triplet est regroup en 1 enregistrement.

Ensat - Informatique Applique - Marc Souques

Page 90

- ACCESS 2007 2010 - Travail dirig Facturation

Ch16. Correction extension : Formulaires


A. Formulaire simple
1) Formulaire "Fournisseur"
Onglet Crer, Bouton Plus de formulaire, Assistant
Choisir
la table Fournisseur et tous ses champs
Choisiren colonne simple et nommer Fournisseur
Choisir
style Access 2007 (ou autres).
Ici, on ne personnalise pas le rsultat de l'assistant

B. Formulaire Tabulaire bas sur une requte


1) Formulaire "Produit et sa Catgorie"
Onglet Crer, Bouton Plus de formulaire,
Assistant
Choisir : la requte R17 Produit et sa Catgorie
Choisir : tous ses champs
Choisir : en Tabulaire et
nommer Produit et sa Catgorie.
Ici, on ne personnalise pas le rsultat de
l'assistant

C. Formulaire produit complter


Ajouter un contrle pour saisir-choisir la Catgorie du produit.
En mode Cration, utiliser dans l'onglet Cration le bouton 'Ajouter
des champs existants' puis glisser sur le formulaire
Ref Catgorie.
Passer en mode Affichage, slectionner le dernier produit par
(SON002) et
saisir sa catgorie 1-Ecran

Fin des extensions faire sans assistance du document.

Ensat - Informatique Applique - Marc Souques

Page 91

- ACCESS 2007 2010 - Travail dirig Facturation

Ch17. Des erreurs ne pas faire


Proposer de modifier la valeur de la cl primaire d'un enregistrement

et surtout pas par liste droulante proposant les autres numro d'lve.
On n'identifie pas un enregistrement par l'1 des autres enregistrements !
La valeur de la cl primaire, une fois attribu un enregistrement et donc pointe par d'autres
enregistrements d'autres tables, n'est gnralement JAMAIS modifie.
(Imaginer, si on changeait votre numro de Scurit Sociale, les consquence qui cela entrainerait !)
Proposer une liste droulante NON trie :

Difficile de choisir une personne parmi N si pas tri !


Ne pas afficher directement des Donnes brutes de prsentation des Tables ou Requtes
mais plutt les afficher par l'intermdiaire de Formulaires qui les mettent en FORME.

Mise en forme :

Ensat - Informatique Applique - Marc Souques

Page 92

- ACCESS 2007 2010 - Travail dirig Facturation

Ch18. Gestion des Images dpendantes


d'Enregistrements d'une Table
L'objectif est d'afficher une image diffrente dans un Formulaire ou
dans un Etat pour chaque enregistrement d'une Table.
Les 3 solutions proposes vont de la plus simple V1 (et la moins
performante) la plus complexe V3 (et la plus performante).
Cependant, je propose de sauter ce Chapitre pour voir au Chapitre
suivant une autre technique plus simple pour grer une image par
enregistrement : Champ de type Pice jointe

1. Images et Table : Version1 base


sur Champ OLE
Utiliser le fichier
A. Grer un champ OLE

Fac13a2007.accdb

Dans la table Produit, ajouter un champ Photo de type Objet OLE:


Le type Objet OLE permet de stocker un Objet (tel qu'une feuille de
calcul Excel, un document Word, des graphiques, des sons, des images ou
toute autre donne binaire) dans une table.
Si la dfinition du champ OLE est facile, la saisie est plus
complique :
- En mode Affichage des donnes de la table
Produit, un clic droit sur le champ Photo du 1
produit permet de choisir Insrer un objet puis par la fentre de Parcourir de choisir un
fichier image puis OK. Malheureusement, cette procdure gnre l'affichage suivant
Package qui ne permettra pas l'affichage de l'image dans le formulaire !!!
Le bon rsultat de la saisie doit afficher Image ou Image bitmap dans le champ Photo.
- Pour contourner ce problme (si vous avez une solution, je suis preneur), nous allons
saisir en faisant un Coller dans le champ Photo. Il faut donc une image copier, plusieurs cas :
- depuis une image du site Google-Image, clic-droit Copier ou voir dossier "Images produit" fourni
- depuis le document Word fourni 3 images pour coller dans access.docx dans lequel on a insr
des images depuis des fichiers image de nos fichiers de notre disque, clic-droit sur l'image de la
page word, Copier
- Un cas qui ne marche pas : depuis l'explorateur de fichier, sur un de nos fichiers image, clicdroit Copier NE permettra pas l'affichage dans le formulaire.
Donc, une fois le presse-papier charg par un Copier, faire un Coller sur le champ Photo en
mode Affichage des donnes. La photo n'est pas visible, seul le mot Image apparait.
En plus des problmes de saisie, nous avons des problmes de taille de l'application Access.
En effet, pour 3 images colles (tailles de ces 3 fichiers : 40ko + 50 ko +50 ko = 140 ko) depuis le
fichier Word, l'application croit de 1.5 Mo soit environ de 500 ko par image.

B. Grer un contrle de formulaire pour afficher l'image


Depuis le formulaire Produit en mode Cration, cliquer Ajouter des champs existants puis glisser le
champ Photo sur le formulaire. Un contrle de type 'Cadre d'objet dpendant' (dpendant de chaque
enregistrement) est ajout. La source du contrle est le champ Photo de la table. Grer la proprit
Mode affichage Zoom ou Echelle. La saisie peut se faire dans la table ou dans le formulaire, en
mode affichage, par clic droit sur la zone d'image puis par Coller (aprs avoir fait un Copier).
Limitation de cette version : la manire de saisir et la taille du fichier.accdb qui croit de 500k par
image.

Ensat - Informatique Applique - Marc Souques

Page 93

- ACCESS 2007 2010 - Travail dirig Facturation

2. Images et Table : Version 2 base sur Champ Texte


et Macro d'affectation
Exemple : Formulaire Reprsentant . Il s'agit encore de grer une image changeant chaque
enregistrement d'un formulaire.
Le principe est diffrent de celui de la version1 car ici on ne stocke pas les
images dans un champ de la Table mais l'extrieur de l'application
Access dans un dossier nomm 'images' situ sous le dossier 'Access'
contenant l'application 'Facxxa2007.accdb' courante.
Dossier 'images' fourni.
Ce dossier termine un chemin de dossiers depuis la racine d'un disque :
exemple : C:\MesDocuments\Access\images.
C'est le nom de l'image qui est
enregistre dans un champ de type
TEXTE
d'une
table.
(table
'Reprsentant', champ 'NomPhotoRep').
exemple de contenu : "Dupond alain.jpg"
Table 'Reprsentant' fournie.
Formulaire 'Reprsentant' fourni.
L'affichage sur le formulaire est bas sur les 2 donnes suivantes :
1. le nom de l'image 'Dupond alain.jpg' stock dans le champ de la Table
2. le fichier-image Dupond alain.jpg
stock dans le dossier 'images'.
L'image est affiche sur le formulaire (ou Etat) par
un contrle de type Image nomm ici
'ImgPhotoRep'. La proprit 'Image' (le nom de
l'image) n'est pas saisie, normal, ce contrle ne va
pas afficher toujours la mme image.
Le principe consiste, par une macro, affecter la
proprit 'Image' du contrle 'ImgPhotoRep' du
formulaire, un nom d'image stock dans le champ 'NomPhotoRep' de la table 'Reprsentant', nom
d'image prcd du chemin de dossiers permettant d'atteindre le fichier stock dans le dossier 'images'.
exemple du chemin complet
et
du fichier :
C:\MesDocuments\Access \images\
Dupond alain.jpg
Ce chemin peut tre dcoup en 2 parties :
1. C:\MesDocuments\Access qui est le dossier o est stocke ' Facxxa2007.accdb'. Cette partie du
chemin peut tre dtermine automatiquement
Module1 complter
par une instruction VBA :
'CurrentProject.Path' signifiant chemin (Path)
de l'application Access courante (CurrentProject).
Seules les 3 lignes de VBA du Module1
ci-contre seront utilises.
On utilisera une fonction
'CheminApplication()' retournant ce chemin, fonction dclars dans un Module VBA.
L'intrt du chemin automatique est que l'application peut tre dplace sur une autre machine,
avec son sous-dossier 'images' et fonctionner correctement.
Pour crer un Module, depuis votre application, utiliser le menu
Crer>drouler la liste sous Macro > Module ou afficher l'Editeur
Visual Basic par Alt-F11 comme sous Excel. Un module1 est dj
prsent, saisir dans la fentre de droite les 3 lignes de code ci-dessus.

Ensat - Informatique Applique - Marc Souques

Page 94

- ACCESS 2007 2010 - Travail dirig Facturation

2. L'autre partie du chemin est : \images\ qui est une constante pour l'organisation que nous avons
choisie (toujours un dossier 'images' sous le dossier de l'application .accdb).
Donc, pour affecter, la proprit 'Image' du contrle 'ImgPhotoRep',
C:\MesDocuments\Access \images\ DupondAlain.JPG crire 'logiquement' :
[ImgPhotoRep].[Image] = CheminApplication() & "\images\" & [NomPhotoRep]

la

valeur

Hors programmation en VBA, cette affectation est grer sous Access par une macro qui utilise l'action
'DfinirValeur' (= affectation) avec 2 Arguments :
Affectation '='
Elment :
[ImgPhotoRep].[Image]
Expression :
CheminApplication() & "\images\" & [NomPhotoRep]
Attention, pour trouver cette action DfinirValeur dans la liste droulante de la macro, il
faut Afficher toutes les actions de cette liste par le bouton ci-contre.
Cette affectation ne doit tre faite que si le 'NomPhotoRep' n'est pas Vide,
on utilise donc la partie conditionnelle de la macro avec la condition (voir ce bouton
pour afficher la colonne Condition) :
[NomPhotoRep] Est Pas Null Null signifie VIDE
Inversement, si le [NomPhotoRep] est Vide, on utilise aussi la partie conditionnelle de la macro avec :
[NomPhotoRep] Est Null et on affecte le nom d'une image spciale "Blank.jpg" :
CheminApplication() & "\images\" & "Blank.jpg"
Rsume de la macro [Macro incorpore] d'affectation :

Une macro qui effectue un traitement (Quoi faire), c'est bien !


Mais O ( partir de quel lment Formulaire ou Contrle) et Quand ( partir de quel vnement de
quel lment) lancer l'excution de cette macro ?
Cet aspect O/Quand est parfois plus difficile dterminer que le Quoi faire.
Nous souhaitons rafficher l'image chaque fois que le
Formulaire active (affiche) un nouvel enregistrement.
C'est partir du Formulaire et
de l'vnement Sur activation que sera dclenche la
macro sans nom car [Macro Incorpore].

Donc :
- le Formulaire, par son vnement Sur activation, dclenche
- une Macro [Incorpore] au formulaire qui, suivant que le champ 'NomImageRep' de la table
'Reprsentant' est Vide ou pas,
- affecte, la proprit 'Image' du contrle 'ImgPhotoRep' du Formulaire, la valeur du champ
'NomImageRep' contenant un nom de fichier ou l'image spciale 'Blank.jpg,
- tout en grant le chemin de dossiers menant aux fichiers des images
(C:\MesDocuments\Access\images\) grce
- la fonction VBA 'CheminApplication()' utilisant l'objet 'CurrentProject' et sa mthode
'Path', fonction stocke dans un module VBA (Module accessible par ALT+F11).

Ensat - Informatique Applique - Marc Souques

Page 95

- ACCESS 2007 2010 - Travail dirig Facturation

En plus, on pourra Copier-Coller les 2 lignes de la macro et attacher une nouvelle macro [Incorpore]
l'vnement 'Sur sortie' du contrle 'NomPhotoRep'
pour que suite la validation
par la touche Entre de la saisie manuelle du nom du fichier (donc en sortant du contrle), l'image soit
raffiche immdiatement (sans attendre l'vnement Sur activation du formulaire).
Les limitations de cette version2 sont :
- Les noms des images doivent tre saisis manuellement au clavier dans le contrle du formulaire.
- Il ne faut pas faire d'erreur de saisie pour que :
la correspondance NomImage du contrle NomFichierImage soit parfaite!
On peut lever les 2 contraintes ci-dessus par l'utilisation de la version3 ci-dessous mais c'est un peu plus
compliqu gnrer

Rsum Graphique de cette version 2 :


Table Reprsentant

Saisir
dans

Formulaire Reprsentant
Type de contrle :
Zone de texte
Type de contrle :
Image

Nom : NomPhoto
Source : NomPhotoRep
Nom : ImgPhotoRep
Image : (aucune !)

Image : C:\MesDocuments\Access\images\DupondAlain.jpg

Macro (incorpore)
Logique :

ImgPhotoRep.Image = CheminApplication() & "\images\"

& [NomPhotoRep]

Technique :
"Affecter"

Condition d'affichage :
Si [NomPhotoRep] est pas VIDE alors
Affecter l'image du champ [NomPhotoRep]
Sinon
Affecter l'image particulire BLANK.jpg

C:\MesDocuments\Access

Ensat - Informatique Applique - Marc Souques

Fin TD8

Page 96

- ACCESS 2007 2010 - Travail dirig Facturation

3. Images et Table : Version 3 base sur Champ Texte


et Procdure-VBA d'affectation
En TD, vous ne grerez pas cette version 3 mais vous avez les explications si besoin.
Exemple : Formulaire Client et photo en version3. Il s'agit encore de grer une image
changeant chaque enregistrement d'un formulaire.
Le principe est le mme que celui de la version2, on stocke toujours les
images l'extrieur de l'application Access dans un dossier nomm
'images' situ sous le dossier 'Access' contenant l'application 'Facxxa2007
.accdb'.
L'objectif est ici :
- de ne plus avoir saisir manuellement au clavier le nom de l'image
dans un contrle 'NomPhoto' de type texte.
- mais de choisir la souris un fichier de NOTRE dossier 'images'
Les Ajouts, Modifications et Suppressions sont automatiss via 2 boutons.
PUISSE.jpg
Le contrle
peut ne plus tre affich car ni sa
lecture, ni son criture manuelle ne sont ncessaires.
L'ajout / Modification, via le bouton, ouvre la fentre suivante qui :

affecte automatiquement le nom


exact du fichier choisi au champ
'NomPhoto' de la table Client.
Cette fentre, qui est la caractristique
principale de cette Version3, est base
sur l'environnement de programmation
VBA suivant :
Le module
fait
rfrence une ressource de Windows
(Dfinition de la Boite de dialogue
Ouvrir un fichier dans un fichier .dll) et
dfinit la fonction Function OuvrirUnFichier () qui sera appele dans le module du formulaire Client
par la procdure suivante :
Private Sub BtAjoutModif_Click() associe au Clic du bouton
La logique de traitement, hors fentre ci-dessus, est ma mme que celle de la version2 mais ici elle est
traite en VBA avec gestion des erreurs
ATTENTION : La programmation utilise ncessite un paramtrage particulier d'Access au niveau de
l'diteur VBA.
Vous devez ouvrir l'diteur VBA (ALT+F11), menu OUTILS > Rfrences et disposer (au moins)
des Rfrences ci-dessous :

Ensat - Informatique Applique - Marc Souques

Page 97

- ACCESS 2007 2010 - Travail dirig Facturation

Si besoin, compltez vos rfrences

Voir le code VBA comment sur le fichier.accdb pour explications complmentaires :


Exemple de code comment pour ajouter ou modifier l'image.
Private Sub BtAjoutModif_Click()
Dim NomFichier As String
' Gestion des erreurs
On Error GoTo Catch01
' rcuprer le chemin physique de la photo
' par la boite de dialogue OuvrirUnFichier dfinie dans le module 'BoiteDialogueOuvrirFichierImage'
NomFichier = OuvrirUnFichier(Me.Hwnd, "Slectionner une photo :", 2)
'Explication des paramtres
'Handle = le handle de la fentre (Me.Hwnd)
'Titre = Titre de la bote de dialogue
'TypeRetour (Dfinit la valeur, de type String, renvoye par la fonction)
'1 = Chemin complet + Nom du fichier
'2 = Nom fichier seulement

' si la boite renvoie un nom de fichier non nul


If Len(NomFichier) > 0 Then
' pour TypeRetour = 1 (Chemin complet + Nom du fichier)
'ranger le chemin + nom du fichier dans le controle i mgPhoto pour afficher la photo
'Me.imgPhoto.Picture = NomFichier
' pour TypeRetour = 2 (Nom fichier seulement)
'ranger le chemin + nom du fichier dans le controle imgPhoto pour afficher la photo
Me.ImgPhoto.Picture = CurrentProject.Path & "\images\" & NomFichier
' affecter au controle NomPhoto
' affecter au controle NomPhoto
Me.NomPhoto = NomFichier
End If

(version 1 : Chemin complet + Nom du fichier)


(version 2 : Nom du fichier)

RedimentionnerPhoto
Exit Sub

Si vous souhaitez utiliser ce principe, vous pouvez simplement copier le code depuis
le fichier Fac14a2007.accdb de correction et le coller dans votre application sans
maitriser ce code en gardant dans votre application le contrle Image nomm
ImgPhoto et en gardant le dossier Images.

Ensat - Informatique Applique - Marc Souques

Page 98

- ACCESS 2007 2010 - Travail dirig Facturation

4. Rsum :Saisir, Stocker, Modifier et Supprimer


des images dans des enregistrements de Table.
Le fichier Fac14a2007.accdb prsente les 3 solutions pour grer des images-enregistrement.
1) Images et Table : Version1 base sur Champ OLE
Table Produit et ses champs:

Formulaire Produit :
Simple sans programmation
Pas Performant avec :
-taille importante de .accdb
-saisie par Coller (pas de
insrer un ficher.)

2) Images et Table : Version 2 base sur Champ Texte et Macro d'affectation


Table Reprsentant et ses champs :

Programmation avec
1 Macro de 2 lignes
(donc simple)
Pas Performant avec
saisie clavier du nom
du fichier
Saisie
au clavier

Performant avec :
-taille rduite de .accdb
- chemin pour dossier
'images' automatique

Macro [Incorpore]

3) Images et Table : Version 3 base sur Champ Texte et Procdure-VBA d'affectation


Table Client et photo en version3 et ses champs:

VBA

Saisie
la souris
Programmation avec VBA et Boite d'Ouverture de fichier de WINDOWS intgre en VBA.
Performant : - taille rduite .accdb , - saisie assiste par Boite d'Ouverture de fichier et
-chemin pour dossier 'images' automatique (pas stock dans champ 'NomPhoto')
Ensat - Informatique Applique - Marc Souques

Page 99

- ACCESS 2007 2010 - Travail dirig Facturation

Ch19. Les tables avec champs longueur


variable
Utiliser le fichier Fac14a2007.accdb pour la suite

1. Champ de type Mmo


Dans la table Client, ajouter un Champ Commentaire de type Mmo.
Le type Mmo est une variante tendue du type Texte. Sa taille s'adapte
dynamiquement son contenu et Access ajoute la possibilit de mettre en
forme ce texte (gras, italique, couleurs, ) par la Proprit Format du
texte : Texte enrichi.
On peut saisir dans le champ de la table directement ou saisir dans une fentre spcifique accessible par
MAJ+F2 pour bnficier d'un bouton Police permettant les enrichissements de : Police, Taille, Style
(gras, italique, soulign) et Couleur du texte.
Dans le formulaire Client, en mode Cration, cliquer Ajouter des champs existants puis glisser
le champ Commentaire sur le formulaire. Un contrle
de type 'Zone de texte' (de longueur infinie) est ajout.
La source du contrle est le champ Commentaire de la
table.
On peut saisir dans le contrle du formulaire directement (et mettre en forme en slectionnant du texte puis en
dplaant la souris vers le haut, une barre d'outils flottante apparait) ou saisir dans une fentre spcifique accessible
par MAJ+F2 pour bnficier d'un bouton Police permettant les enrichissements de : Police, Taille,
Style (gras, italique, soulign) et Couleur du texte.

2. Champ de type Pice jointe


Dans la table Client, ajouter un Champ Fichiers joints de type Pice
jointe.
Le type Pice jointe est une nouveaut Access. Ce type de champ peut stocker
des documents de types divers (Word, Excel, Image, Pdf, ). Il amliore le
type Objet OLE vu au Chapitre prcdent avec plusieurs amliorations : un
seul champ peut contenir PLUSIEURS fichiers et un environnement est
propos l'utilisateur pour grer de manire interactive ces documents
(choisir, ajouter, supprimer, ouvrir, enregistrer sous).
Cependant, les fichiers joints sont rellement incorpors dans le fichier .accdb ce qui peut poser des
problmes de taille du fichier qui augmente rapidement.
Dans le formulaire Client, en mode Cration, cliquer Ajouter des champs
existants puis glisser le champ Fichiers joints sur le formulaire. Un contrle de
type 'Pice jointe' est ajout. La source du contrle est le champ Fichiers joints de
la table.
La proprit de formatage Afficher en tant que : Image/Icne permet l'affichage du
fichier si possible (par exemple pour une image).
On peut saisir dans le contrle par double clic puis Ajouter
On peut aussi ouvrir un document non directement
affichable (fichier pdf ci-dessous).

Ensat - Informatique Applique - Marc Souques

Page 100

- ACCESS 2007 2010 - Travail dirig Facturation

3. Champ avec plusieurs valeurs


Les Clients parlent plusieurs langues et les Langues sont parles par plusieurs Clients, grer cet aspect.
Voir la table Langue
(donne dans le fichier Fac14a2007.accdb)

avec Nom Langue : Index SANS Doublon


Dans la table Client, ajouter le Champ Ref Langue (le type serait Numrique en thorie pour tre
compatible avec le Num Langue de la table Langue) mais on slectionne ici directement le type
Assistant liste de choix pour grer le type (qui sera Numrique) et la manire de saisir par liste
droulante avec plusieurs valeurs.
tapes de l'assistant :
Je veux que la liste recherche (des donnes) dans une table ou requte Suivant
Table Langue Suivant
>> pour choisir tous les champs (Num Langue, Nom Langue) de la table Langue Suivant
Nom Langue (le nom du champ de la table Langue) pour critre de tri pour avoir une liste trie Suivant
Garder la colonne Nom Langue comme visualise avec la cl primaire (Num langue) cache Suivant
Liste des langues comme tiquette du contrle et cocher

Termin

Valider OUI.

Message

Le champ cr par l'assistant est Numrique :


Noter que le nom de champ que nous avions donn Ref Langue a disparu au profit de Liste des langues
qui tait simplement annonc plus haut comme tiquette de contrle.
Les proprits de ce champ Liste de langues, gnres par les tapes de l'assistant ci-dessus sont :

La saisie est faite par Liste droulante


C'est la 1 colonne droulant (Num Langue= numrique) qui est affecte
au champ courant Liste de langues qui est lui aussi Numrique.
La 1 colonne (Num Langue) est masque (0cm), seule la 2 colonne
(Nom Langue) est montre (2,54 cm).
Cette liste droulante peut stocker plusieurs valeurs !

La proprit Autoriser plusieurs valeur est une nouveaut Access.


Ce champ peut donc stocker plusieurs noms de langues.
Il se pose en concurrent de la dmarche Classique consistant dire :
Un Client
parle
N Langues.
Une Langue
est parle par
N Clients
Donc grer une table intermdiaire de croisement (solution classique que nous
verrons plus loin sur cet exemple des langues titre de comparaison)
- Voir et modifier les relations
cres automatiquement :
Double cliquer sur la relation de gauche
pour la modifier et activer l'intgrit
rfrentielle ce qui donne la prsentation
de la relation de droite. (1 et
apparaissent
seulement
quand
l'Intgrit rfrentielle est active).

Ensat - Informatique Applique - Marc Souques

Page 101

- ACCESS 2007 2010 - Travail dirig Facturation

Dans le formulaire Client, en mode Cration, cliquer Ajouter des champs


existants puis glisser le champ Liste des langues sur le formulaire. Un
contrle de type Liste droulante' est ajout.
Comme on le voit ici en mode Affichage, il permet la multi slections ce qui est
une nouveaut d'Access. Ce type de contrle (Liste droulante) a t dfini dans
les proprits ci-dessus du champ Liste de langues.
La source du contrle est le champ Liste des langues de la table.
Remarque : un champ multi valeurs est HORS NORME des bases de donnes
Relationnelles. Ici, Access innove pour simplifier certains dveloppements
simples mais est moins performant dans certains cas que la dmanche classique ci-dessous.
Nous allons voir la solution classique pour comparer et avoir des critres de choix entre ces 2 dmarches.

A. Dmarche Classique Relationnelle


La table Langue est dj cre.
Le formulaire Langue est dj cre.

Pour grer Les Clients parlent plusieurs langues et les Langues sont parles par plusieurs Clients, on
veut crer la table intermdiaire entre Client et Langue et y grer la proprit Niveau pour connaitre,
par Client et par Langue, le niveau pratiqu.
Rappel de 2 cas de relation N / N :
Une Commande vend
plusieurs Produits.

Un Produit est vendu dans plusieurs Commandes.


Un Produit est fourni par plusieurs Fournisseurs.

Un Fournisseur

fournit

plusieurs Produits.

On souhaite que la saisie du niveau soit faite dans une liste de niveaux de rfrence.
Crer une table Niveau
Crer un formulaire Niveau
(menu Crer>Plus de formulaire> Assistant>Table Niveau )

Ensat - Informatique Applique - Marc Souques

Page 102

- ACCESS 2007 2010 - Travail dirig Facturation

Crer la table intermdiaire pour le


croisement des Clients et des Langues.
Voir la cl primaire composite
C'est seulement le couple
Ref Client Ref Langue qui doit tre sans
doublon donc cl primaire.
Grer les proprits de Choix des 3 champs :
1) Proprits de Ref Langue pour saisie par liste droulante.

La 1 colonne est affecte Ref Langue


mais
elle
est
masque
(0cm)
donc c'est la 2 colonne qui est affiche
dans Ref Langue.

Le rel champ Ref Langue


La relle valeur stocke

Ref Langue est


remplac par la
lgende Langue pour
les affichages

sans sa Lgende : Langue.


sans la 2 colonne Nom Langue affiche.

2) Proprits de Ref Client pour saisie par liste droulante.

La 1 colonne est affecte Ref Client


mais
elle
est
masque
(0cm)
donc c'est la 2 colonne qui est affiche
dans Ref Client.

Dans la requte pour Contenu, c'est [Nom] & " " & [Prnom] qui affiche DUMANS Benoit.

La cl primaire est base sur les 2 champs cl trangre.


3) Proprits de Ref Niveau pour saisie par liste droulante.

La 1 colonne est affecte Ref Niveau


mais
elle
est
masque
(0cm)
donc c'est la 2 colonne qui est affiche
dans Ref Niveau.

Ensat - Informatique Applique - Marc Souques

Page 103

- ACCESS 2007 2010 - Travail dirig Facturation

Tirer les Relations :

Crer le formulaire ci-dessous en mode assistant avec :


- la table Client et son Num Client, Nom et Prnom pour simplifier
- la table ClientLangue avec tous ses champs sauf Ref Client (inutile comme pour tout les sous
formulaires de pointer vers le formulaire principal)
- valider l'affichage avec sousformulaire qui a t dtect d'aprs les Relations entre les tables.
- disposition Tabulaire (Tabulaire pour les sous formulaire, c'est souvent le mieux !)
- style choisir (Access )
- enregistrer Client et ses langues FP et Client et ses langues SF.

Comparaison entre la solution Table intermdiaire ClientLangue et Champ Multi-valeurs.


1) Champ Multi-valeurs :
- SIMPLE gnrer : un champ
- LIMITE dans la longueur de la liste des Langues lorsque la liste n'est pas droule,
- PEU de place prise dans le formulaire :
- PAS de valeur comme le Niveau dpendant du Client et de la Langue (grosse limite).
- Langue et ses Clients (voir page suivante) : Bien en consultation, MAL en saisie (grosse limite).
2) Table intermdiaire ClientLangue :
- COMPLEXE gnrer : une table 2 champs minimum : Ref Client et Ref Langue avec Liste droulante
- PAS DE LIMITE dans la longueur de la liste des Langues car Sous-formulaire,
- BEAUCOUP de place prise sur le formulaire :
- POSSIBLE valeur comme le Niveau dpendant du Client et de la Langue.
Bilan : Multi-valeur plus simple MAIS moins bien que Table intermdiaire privilgier.
Nous avons prsent ci-dessus un Client

et ses Langues

Ensat - Informatique Applique - Marc Souques

Page 104

- ACCESS 2007 2010 - Travail dirig Facturation

On peut aussi prsenter Une Langue et ses Clients.


1) Version Champ Multi valeurs :

2) Version Table intermdiaire :

Bien en Consultation.
Mauvais en Ajout

4. Formulaire bas sur un modle de formulaire


A. Crer un modle de formulaire
Ouvrir le formulaire X Formulaire modle de forme. Ce formulaire a t cr pour dfinir un modle de
formulaire au niveau de la forme (Police, Couleur, Bordure) pour appliquer une charte graphique des
formulaires existants ou de nouveaux formulaires. Passer en mode Cration. Eventuellement, modifier
la couleur de fond de l'en-tte du formulaire et autres
Ce formulaire tant dfini, le transformer en "Modle de rfrence" pour de futurs formulaires :
Menu Organiser > Mise en forme automatique > Assistant format automatique > Options >
Personnaliser > Crer un nouveau format et le nommer 'A mon modle personnel'.

B. Crer un formulaire bas sur un 'modle' de formulaire


Crer avec l'assistant un formulaire bas sur la table
Produit puis au niveau de l'tape de l'assistant "Quel style
choisir", slectionner 'A mon modle personnel'

Pour appliquer le style un formulaire existant, ouvrir un formulaire un mode cration, ne pas
slectionner un lment du formulaire puis Menu Organiser> Mise en forme automatique> Assistant
format automatique et choisir 'A mon modle personnel'.
En plus :
Le formulaire X Formulaire modle de forme
Tabulaire t cr comme base pour Crer un
nouveau format (procdure ci-dessus A.) et le
nommer 'A mon modle personnel Tabulaire'. Il gre
une prsentation Tabulaire appliquer un
formulaire principal Tabulaire ou pour les sous-formulaires qui sont Tabulaires.

Ensat - Informatique Applique - Marc Souques

Page 105

- ACCESS 2007 2010 - Travail dirig Facturation

Ch20. Les Modes d'utilisation de


l'application
Utiliser le fichier Fac15a2007.accdb pour la suite

1. Mode Utilisateur : configuration du dmarrage


1) Options de dmarrage
Si l'application est termine et que l'on doive la confier un utilisateur dbutant, il faut paramtrer
certaines options comme ci-dessous par le Bouton Office (Fichier en V 2010) > Options> Base de
donnes active pour verrouiller l'application dans la seule UTILISATION sans possibilit de passer en
mode CREATION :
- pas de touches spciales (comme F7 pour activer le volet de gauche)
- pas de mode Page
- pas de modification de structure des tables
- pas de volet de navigation gauche
- pas de menu complet
- pas de menu contextuel
Dsactiver les options ci-dessous cercles

Fermer la fentre puis fermer l'application.

Ensat - Informatique Applique - Marc Souques

Page 106

- ACCESS 2007 2010 - Travail dirig Facturation

2) Activer les options de dmarrage


Redmarrer l'application pour que ces options prennent effet.
Vous tes maintenant en mode Utilisateur seulement (pas dveloppeur).
Impossible de passer en mode Cration sur un formulaire par exemple.
3) Dsactiver les options de dmarrage
Pour passer outre ces options de dmarrage et que le dveloppeur que vous tes puisse nouveau
modifier l'application, maintenez enfonc la touche MAJ pendant que vous ouvrez l'application.
Vous tes maintenant en mode DEVELOPPEUR complet (pas simple utilisateur).
Ce verrouillage est donc facilement contournable pour qui connat l'astuce de la touche MAJ .
On peut annuler l'effet de la touche MAJ pour rellement contrler l'ouverture de l'application. Il faut
dans ce cas programmer un peu de VBA dans des Modules (hors cadre de ce cours)

Utiliser le fichier Fac15a2007 1 Utilisateur .accdb pour tester le travail ci-dessus

2. Mode Partage de donnes entre plusieurs


utilisateurs en rseau local
Ouvrir Fac15a2007.accdb si vous disposez d'une application installe sur un

disque rseau partag pour utiliser l'application


en mode PARTAGE

de Donnes
pour plusieurs utilisateurs (car sur disque-rseau partag)
TESTER plusieurs si possible

Ensat - Informatique Applique - Marc Souques

Page 107

- ACCESS 2007 2010 - Travail dirig Facturation

Ch21. Les Macros avances


Utiliser le fichier Fac16a2007 .accdb pour la suite
Un Groupe de macros = une ou plusieurs Macros rassembles
Une Macro = une ou plusieurs Actions dcrivant la macro
Une Action = un ou plusieurs Arguments prcisant l'action
Un Argument = une caractristique de laction

Groupe de macros
Macro
Action
Argument

1. Tester les vnements dclanchant des macros dans


un formulaire
Depuis le menu de l'application, cliquer le bouton Produits TEST vnements pour visualiser
l'enchanement des vnements se ralisant sur l'lment [Formulaire] et sur le contrle zone de texte
[Dsignation]. Penser cliquer sur Dsignation.
Consulter dans le formulaire Produit TEST EVENEMENTS en mode cration les proprits
d'vnement du Formulaire et de la Dsignation pour comprendre le mcanisme.
Consulter depuis l'onglet Macros le groupe de macros AAGroupeMacro Evenement Produit dans lequel
sont stockes toutes les macros utilisant l'Action BoteMsg.
Voici ci-dessous les vnements disponibles pour ces 2 lments.

Ensat - Informatique Applique - Marc Souques

Page 108

- ACCESS 2007 2010 - Travail dirig Facturation

2. Macro conditionnelle attache un vnement


Objectif :
Vrifier avant denregistrer un enregistrement via le formulaire Client,
que le Code Postal nest pas vide (Null).
Logique de programme ci-dessous :
Si le contrle Code Postal est vide (Null) alors
1) Alerter lutilisateur
par BoteMessage.
2) Atteindre le contrle Code Postal pour proposer lutilisateur de le saisir car cest ce
contrle qui gnre le problme.
3) Annuler lEvnement qui aurait permis la Modification du Formulaire (Mise A Jour) par
passage par exemple lenregistrement prcdent ou suivant par les boutons du bas du
formulaire.
4) Arrter Toutes les Macros qui auraient permis la Modification du Formulaire (Mise A Jour)
comme la macro de Recherche d'un client par Liste droulante
Sinon

1) Prvenir lutilisateur par BoteMessage que le Client est valid.


(Message normalement inutile)

Faire un 'Bip' sonore de manire inconditionnelle (BIP normalement inutile mais ici pour aspect technique)

Procdure en Version 2007:


1) Crer la Macro
Puis par le bouton Conditions, ajouter la colonne Condition
Condition
Action
Arguments de laction
(utiliser le gnrateur dexpression)
BoteMessage
Message : Vous avez
oubli le Code Postal du client
[Formulaires]![Client]!
Bip : Oui
[Code Postal] Est Null
Type : Stop
Autre solution base sur fonction :
Titre : Pas si vite
'Est' est un oprateur (comme =)
EstNull ([Formulaires]![Client]!
[Code Postal] ) retourne Vrai ou Faux

'Null' est une constante (Vide)

...
...

AtteindreContrle
EstNull( ) est
une fonction

Pas
EstNull ([Formulaires]!
[Client]![Code Postal] )

AnnulerEvnement
ArrtToutesMacros
BoteMessage

Pas de
condition

Nom du contrle :
Code Postal

Bip

Message : Ce client est valid


Bip est excut de manire NON
Conditionnelle donc Toujours excut

Pas : inverse la condition (sinon) :

...

signifie 'mme condition que la ligne prcdente' de la colonne Condition

Ensat - Informatique Applique - Marc Souques

Page 109

- ACCESS 2007 2010 - Travail dirig Facturation

Pour information : comparaison Algorithmique et ACCESS


Actions Conditionnelles
Algorithmique Classique
Solution dans ACCESS
Si [Code Postal] = Vide alors
BoteMessage
Si [Code Postal] Est Vide alors BoteMessage
AtteindreContrle

alors AtteindreContrle
AnnulerEvnement

alors AnnulerEvnement
Sinon
BoteMessage
Si [Code Postal] Est Pas Vide alors BoteMessage
FinSi
Bip

Bip

Enregistrer la macro sous le nom :


Formulaire Client, Formulaire, Saisie obligatoire Code Postal
(Nom du formulaire,Nom de llment du formulaire,Nom du Traitement) est la rgle pour
nommer les Macros
Procdure en Version 2010:
1) Crer la Macro
Puis via l'interface, obtenir ce rsultat :

Commentaire

Ensat - Informatique Applique - Marc Souques

Page 110

- ACCESS 2007 2010 - Travail dirig Facturation

2) Attacher cette macro dans le Formulaire 'Client' llment Formulaire (afficher la fentre
'Proprits' puis slectionner le Formulaire) :
- par le carr gris ( l'intersection des 2 rgles gradues)
- par liste droulante de la feuille de proprits
puis choisir l'vnement 'Avant MAJ' ( Avant Mise Jour du formulaire donc de l'enregistrement
correspondant)
AvantMAJ signifie avant que les Donnes du formulaire soient enregistres dans la table sur disque.
3) Tester cette macro.
- En ajoutant un nouveau client sans Code Postal mais avec un Nom et un Prnom puis tenter de passer
au client prcdent par les boutons de navigation en bas de Formulaire.
- En se positionnant sur un client existant, en supprimant le Code Postal puis tenter de changer de client
par la liste droulante de recherche.

3. Rfrence des Actions des Macros


Le tableau suivant regroupe les principales actions par catgories, en fonction de leur utilisation.
Le nom entre parenthses est le nom anglais de l'action pour utilisation dans VBA (Visual Basic pour
Applications) et pour rechercher dans l'AIDE (qui ignore les noms franais).
Les noms de certaines actions sont lgrement diffrents entre les versions 2007 et 2010:
Exemple : BoiteMsg est devenu ZoneMessage, Agrandir est devenu AgrandirFentre

Les actions soulignes ci-dessous ont t vues prcdemment.


Catgorie
Description
Action
AppliquerFiltre (ApplyFilter)
Donnes dans les Restreindre les donnes
formulaires et les
tats
TrouverSuivant (FindNext),
Se dplacer dans les
TrouverEnregistrement (FindRecord),
donnes

Excution

Importer/
exporter

AtteindreContrle (GoToControl),
AtteindrePage (GoToPage),
AtteindreEnregistrement (GoToRecord)
Excuter une commande ExcuterCommande (simuler les menus)
Enregistrer
Excuter une macro, une OuvrirRequte (OpenQuery),
procdure ou une requte ExcuterCode (RunCode),
ExcuterMacro (RunMacro),
SurErreur (OnError)
ExcuterSQL (RunSQL)
Excuter une application ExcuterApplication (RunApp)
AnnulerEvnement (CancelEvent),
Arrter l'excution
Quitter (Quit),
ArrtToutesMacros (StopAllMacros),
ArrtMacro (StopMacro)
CopierVers (OutputTo),
Envoyer des objets
EnvoyerObjet (SendObject)
Microsoft Access

d'autres applications
Transfrer des donnes
entre Microsoft Access et
d'autres formats de

TransfrerBase (TransferDatabase),
TransfrerBaseDeDonneesSQL (TransferDatabase),
TransfrerFeuilleCalcul (TransferSpreadsheet),
TransfrerTexte (TransferText)

Ensat - Informatique Applique - Marc Souques

Page 111

- ACCESS 2007 2010 - Travail dirig Facturation

Manipulation
d'objets

donnes
Copier ou renommer un
objet
Supprimer un objet
Dplacer ou
redimensionner une
fentre

CopierObjet (CopyObject),
Renommer (Rename)
SupprimerObjet (DeleteObject)
Agrandir (Maximize),
Rduire (Minimize),
DplacerDimensionner (MoveSize),
Restaurer (Restore)
Ouvrir ou fermer un objet Fermer (Close),
OuvrirFormulaire (OpenForm),
base de donnes
OuvrirModule (OpenModule),
OuvrirRequte (OpenQuery),
OuvrirEtat (OpenReport),
OuvrirTable (OpenTable)
Imprimer un objet base de OuvrirFormulaire (OpenForm),
OuvrirRequte (OpenQuery),
donnes
OuvrirEtat (OpenReport),
Imprimer (Print)
SlectionnerObjet (SelectObject)
Slectionner un objet

base de donnes
Dfinir la valeur d'un
champ, d'un contrle ou
d'une proprit
Dfinir et supprimer des
variables mmoire
Mettre jour les donnes
ou l'cran
Divers

Afficher des informations


l'cran

DfinirValeur (SetValue)

TRES PUISSANT
DfinirVarTemp
PUISSANT
SupprimerVarTemp
RedessinerObjet (RepaintObject),
Actualiser (Requery),
AfficherTousEnreg (ShowAllRecords)
Echo (Echo),
Sablier (Hourglass),
BoteMessage (MsgBox),
Avertissements (SetWarnings)
EnvoiTouches (SendKeys)

Gnrer des frappes de


touches
AfficherBarreOutils (ShowToolbar)
Afficher ou masquer la
barre d'outils
Bip (Beep)
Emettre une tonalit
Il y a des ACTIONS de Macros, elles doivent tre la base de votre programmation si
vous n'utilisez pas la programmation en langage VBA.

Ensat - Informatique Applique - Marc Souques

Page 112

- ACCESS 2007 2010 - Travail dirig Facturation

Ch22. Modification des donnes des tables


Les donnes des tables peuvent tre modifies manuellement ou automatiquement.

1. Modification manuelle
Cette modification est faite de manire interactive par l'utilisateur : ouvrir le formulaire Client, se
positionner sur le client DURAND Alain :
- soit par les boutons standards en bas de formulaire
- soit par notre liste droulante de recherche
Saisir 92000 pour modifier le Code Postal du client courant.

Une fois tap 92000, dans la marge de gauche,


indique 'en cours de saisie' donc 92000 non encore
transfr vers la table source du formulaire. On peut abandonner cette saisie par la touche ESC.
Pour valider la saisie, plusieurs solutions :
- Access enregistre automatiquement les donnes au fur et mesure de la saisie d'un enregistrement
valid. Pour valider un enregistrement, il suffit de le quitter par :
- passer au suivant par exemple,
- rechercher un autre client par la liste droulante ou
- fermer le formulaire.
- On peut aussi Enregistrer manuellement et immdiatement l'enregistrement (avant de le quitter) par le
bouton

du menu Accueil ce qui transforme

en

On n'utilise gnralement pas ce bouton car tout marche trs bien en automatique.

Ensat - Informatique Applique - Marc Souques

Page 113

- ACCESS 2007 2010 - Travail dirig Facturation

2. Modification automatique par Requte


En

Pour les Requtes, nous avons vu :


Initiation
1) requte Slection (plusieurs tables, tri, calcul, slection sur critre)
Nous allons voir :

En Perfectionnement

2) requte Action sur une table


3) requte Action Paramtre par formulaire

A. La requte action
But : Modifier les prix des seuls produits de marque CANON en les multipliant par 2.
Le numro de ces produits commence par CAN.
Crer une requte en mode Cration sur la seule table Produit avec 2 champs :
- Num produit et Prix HT avec CAN* comme critres pour Num produit
Excuter la requte puis retour en mode Cration
Convertir la requte en requte Mise jour par le bouton Mise jour de la zone Type de requte.
Dans la nouvelle ligne Mise jour, inscrire dans le champ Prix HT en utilisant le bouton Gnrateur
de la barre doutils et en choisissant dans le gnrateur: Tables; Produit; Prix HT :
[Produit]![Prix HT] * 2

Enregistrer : R Action Mise jour Prix et fermer cette requte.


Consulter dans la table Produit les prix des produits CANON.
Ouvrir la requte (double-clic sur son nom) pour excuter la mise jour des prix (aucun effet
lcran sauf ventuellement une alerte mais effet de modification des donnes sur la table)
Vrifier les modifications des prix des produits CANON dans la table Produit.
Commentaires : cette requte nous a appris les bases d'une requte Mise Jour sur une slection mais
cette requte est peu intressante car trop spcialise : slection fige sur des produits CANON,
MAJ exceptionnelle en multipliant le prix par 2 !
Nous souhaitons crer une requte de porte plus gnrale, dont les critres (slection de produits, type
de mise jour) seront choisis par l'utilisateur de l'application via un formulaire et non pas saisis de
manire fige par le dveloppeur comme ci-dessus.
Remarque : de manire similaire la requte action de type Mise jour, il existe la requte de type
Ajout et Suppression d'enregistrement (voir dans le menu Crer en Cration de requtes).

Ensat - Informatique Applique - Marc Souques

Page 114

- ACCESS 2007 2010 - Travail dirig Facturation

B. La requte action paramtre par formulaire


But : permettre la MAJ des prix dune manire quelconque sur une
catgorie quelconque de produits : Donc, Paramtrer par saisie dans un formulaire
1) Crer le formulaire de saisie des paramtres
En mode Cration (sans assistant), pas de table ou requte pour alimenter en donnes.

En Mode Affichage

Remarque: un contrle Zone de texte affiche Indpendant (en mode cration) tant que sa proprit
Source contrle n'est pas dfinie (par un champ de table ou de requte ou bien par une dfinition de
calcul).
Grer les proprits des 2 contrles Zone de texte comme ci-dessus.
Consquence ici pour ces 2 contrles :
A l'ouverture du formulaire: la zone est vide (car sans source)

Aprs la saisie : seul le contrle lcran est rempli (pas de rpercussion de cette saisie dans une
table : Normal on saisit des critres de mise jour que l'on ne souhaite pas enregistrer)
Enregistrer le formulaire : Saisie variation des prix v1

(saisir prcisment ce nom)

Saisir (en mode Affichage) :


LOG dans Choix Marque (pour les produits de marque LOGitech comme LOG001 ou LOG002) et
- 10% dans Choix Coef (pour rduire les prix de 10%) et penser valider la saisie par ENTREE.

NE PAS fermer ce formulaire


car ses donnes doivent tre utilises
pour une requte de mise jour.
Grer la requte de la page suivante...

Ensat - Informatique Applique - Marc Souques

Page 115

- ACCESS 2007 2010 - Travail dirig Facturation

2) Crer la requte paramtre par le formulaire


But : pour cette requte, on veut que les 2 critres de Mise jour et de Recherche soient dtermins par
les valeurs saisies dans les 2 contrles du formulaire prcdent encore ouvert.
Crer une nouvelle requte en mode Cration avec la TABLE Produit , transformer la requte Slection
en requte Mise jour par le bouton Mise jour.
Champ
Num produit
Prix HT
Table
Produit
Produit
[Produit]![Prix HT]
Mise jour
*( 1+
[Formulaires]!
[Saisie variation des prix v1]!
[Choix Coef] )

Critres

Comme ( [Formulaires]![Saisie variation des prix v1]!


[Choix Marque] & "*" )

ATTENTION : PAS d'espace avant * :


* signifie "n'importe quelle chaine"
L'oprateur & permet de juxtaposer (concatner) plusieurs lments.
Enregistrer la requte: R Action Mise jour Prix Paramtre.
Ne pas fermer la requte.
Consulter les prix des produits dans la table Produit.

Fermer la table produit.


Excuter la requte par le bouton excuter
(et non par
qui affiche seulement la Slection).
La requte utilise les valeurs saisies dans le formulaire "Saisie variation des prix v1".
Remarque : pas dcho lcran de lopration mais effet sur disque consultable depuis la Table Produit.

Fermer la requte de mise jour, le formulaire des paramtres et la table Produit.


Remarque : on peut amliorer la saisie par une liste droulante prsentant les 3 lettres des marques prises
dans Num Produit : la liste est base sur une requte base sur la table produit avec une colonne :

Voir correction du formulaire Saisie variation des prix V2 et


de la requte R Action Mise jour Prix paramtre V2.
On peut aussi amliorer en posant un bouton qui lancera depuis le

Permet d'extraire de
Num Produit
3 caractres partir de
la gauche
Permet de ne garder
qu'un seul nom de
marque

formulaire la requte de mise jour.


Ensat - Informatique Applique - Marc Souques

Page 116

- ACCESS 2007 2010 - Travail dirig Facturation

3. Modification automatique par Macro


Objectif : Mises jour du Stock de Produit depuis la saisie de produits vendus dans la Facture.
Le rsultat de cet objectif n'est pas visible car le traitement est effectu sur le champ de la Table
Produit qui n'est pas affich dans le formulaire.

Utiliser le fichier Fac17a2007 .accdb pour la suite

Mise Jour du stock par DfinirVarTemp et DfinirValeur de macro.

A. Mise jour Automatique Invisible du stock de Produit sur


vnement Saisie de la Quantit commande
Table Produit:
- Ajouter un champ : Qt stock de type Numrique, Rel double et
avec la lgende Quantit en stock
- Crer une requte de Mise jour avec Qt stock = 100 units et l'excuter
par
pour saisir pour tous les Produits une Qt stock pour la future Mise
Jour (MAJ) du stock de produit lors de la facture. Voir rsultats dans Table Produit.
Table CommandeLigneProduit:
- Modification du champ Quantit (Quantit commande dans la facture) Valeur par dfaut : 0
.Valide si : >=0 , Message si erreur : SVP >=0 ,Null interdit : OUI (pour saisie obligatoire)
Formulaire Factures et ses produits FP:
Contrle de type Zone de texte
Formulaire
de type FP

Contrle de type SF

Formulaire
source du
contrle de type
SF

Requte
source du
Formulaire

Ouvrir ce Formulaire en modification pour accder au Contrle de type SF puis accder au


Formulaire de type sous-formulaire Factures et ses produits SF. (Voir dmonstration par l'enseignant)
Accder par la proprit Source du Formulaire (et par ... en fin de ligne) la requte R26 Facture dtail
et y ajouter la colonne Qt stock (pour que cette dernire puisse tre MAJ par la future macro) puis
refermer cette requte.

Ne pas Fermer ce Formulaire (SF)

Ensat - Informatique Applique - Marc Souques

Page 117

- ACCESS 2007 2010 - Travail dirig Facturation

Utilisation de lAction DfinirVarTemp : Dfinir la valeur


d'une variable mmoire .
Action quivalente l'affectation :
Variable = Expression
La variable est persistante et continue d'exister aprs la fin de la macro o elle est cre.
Elle est donc GLOBALE l'application Access (utilisable partout).
Le nombre de variables est limit 255.
L'action SupprimerVarTemp dtruit la variable.
La variable de macro est une nouveaut de la version d'Access.
La mise jour de la quantit en stock est dfinie par :
Qt stock = Qt stock (champ) Quantit (nouvelle valeur du contrle Quantit du formulaire)
+ Quantit (valeur existante avant la saisie de la nouvelle valeur du contrle Quantit si mise jour)
Il faut donc garder la valeur du contrle quantit avant la nouvelle saisie lorsque l'on modifie la
quantit existante 4 par la nouvelle valeur 5 : Qt stock = 100 5 (saisie) + 4 (avant saisie)
Nous allons utiliser les Variables (mmoire) et l'action DfinirVarTemp qui permet d'affecter ( = )
une valeur une variable :
QteEnEntrant = 4 (lire QteEnEntrant reoit 4 par exemple)
1) Macro Sur Entre dans contrle Quantit
Objectif : Garder la quantit du contrle qui existe en entrant dans le contrle pour la MAJ stock future.
Procdure : Depuis les proprits du contrle Quantit, vnement Sur Entre, Gnrateur de
macros puis cliquer sur le bouton Afficher toutes actions et dfinir la macro suivante :
Action :
DfinirVarTemp
(c'est l'action d'affectation lment reoit (=) Expression)
Elment :
QteEnEntrant
(le nom de la variable mmoire est librement choisi)
Expression : (utiliser le gnrateur d'expression pour obtenir la ligne ci-dessous)
[Formulaires]![Facture et ses produits FP]![Facture et ses produits SF].[Formulaire]![Quantit]

Action :

Bip

Action :
Message :
Titre :

BoiteMessage (ZoneMessage en V 2010)


En Test
="Valeur en entrant : " & [VarTemp]![QteEnEntrant] seulement
Mouchard

(pour se rendre compte que la macro s'excute si le haut parleur est actif)

La future MAJ du stock sera :


stock = stock - nouvelle valeur saisie dans le contrle Quantit + QteEnEntrant de la variable

Ensat - Informatique Applique - Marc Souques

Page 118

- ACCESS 2007 2010 - Travail dirig Facturation

Utilisation de lAction DfinirValeur : Dfinir la valeur d'un lment :


un champ de table, ou un contrle de formulaire ou tat ou une proprit de contrle
Action quivalente l'affectation :

Elment = Expression

2) Macro Sur Sortie du contrle Quantit


Depuis les proprits du contrle Quantit, vnement Sur Sortie, Gnrateur de macros puis
cliquer sur le bouton Afficher toutes actions :
Action :
DfinirValeur
Elment :
[Qt stock] (Commentaire : [Qt stock] est le Champ de la table Produit)
Expression : [Qt stock] - [Quantit] + [VarTemp]![QteEnEntrant]
Ici, adresse IMPLICITE pour le Contrle
(le contrle est dans le Formulaire courant)
Action :

Pour faire rfrence la Variable mmoire, il


faut la prfixer par [VarTemp]!

Bip (En test pour se rendre compte que la macro s'excute si le haut parleur est actif)

Action :
BoiteMessage (ZoneMessage en V 2010)
Message :
="Reste en stock maintenant : " & [Qt stock]
Titre :
Gestion de STOCK
Deux macros incorpores ont donc t cr :

Tester la procdure de mise jour du stock dans la facture puis


Vrifier le rsultat directement dans la Table Produit (en fermant si ouverte) en ouvrant cette table.

En plus, s'il vous reste du temps, pour tester l'affectation une proprit de contrle :
Contrle : Quantit Evnement : Sur Rception Focus
Action :
BoiteMessage (ZoneMessage en V 2010)
Message :
Prix Invisible ensuite !
Titre :
Evnement : Sur Rception Focus
Action :
DfinirValeur
Elment :
[Prix Ht].[Visible]
Expression : Non
Contrle : Quantit Evnement : Sur Perte Focus
Action :
BoiteMessage (ZoneMessage en V 2010)
Message :
Prix Visible ensuite !
Titre :
Evnement : Sur Perte Focus
Action :
DfinirValeur
Elment :
[Prix Ht].[Visible]
Expression : Oui

Tout ceci offre de larges possibilits de traitements


Voir le fichier Fac18a2007 .accdb pour la correction.

Ensat - Informatique Applique - Marc Souques

Page 119

- ACCESS 2007 2010 - Travail dirig Facturation

Ch23. Traitements de synthse


1. Formulaire Tableau Crois Dynamique (TCD)
Objectif : Calculer la Moyenne des Quantits de produit vendues par Client et par Catgorie.

A. Crer la requte source du futur formulaire

Excuter la requte :

Futur Regroupement des


lignes par TCD :
-pour Durand et
-pour Imprimante
7 + 1 + 3+ 6 = 17
Moyenne :
17 / 4 = 4.25

Enregistrer : R28 Produits vendus pour analyse TCD

Ensat - Informatique Applique - Marc Souques

Page 120

- ACCESS 2007 2010 - Travail dirig Facturation

B. Crer le formulaire TCD bas sur la requte


Slectionner la requte R28 Produits vendus pour analyse TCD
Menu Crer / Plus de formulaire / Tableau Crois Dynamique
Un tableau crois dynamique vide est propos avec 4 zones :
- champ de critre de regroupement en colonne
- champ de critre de regroupement en ligne
- champ de critre de filtrage (slection) en haut
- champ de zone de calculs au centre
Si la fentre de la Liste des champs ci-dessous n'est pas affiche,
cliquer sur Liste des champs dans le ruban.

A l'aide de la souris, glisser depuis la fentre Liste des champs :


-le champ Nom vers la zone Champ de ligne
-le champ Nom catgorie vers la zone Champ de colonne
-le champ Quantit vers la zone centrale de calcul "Placer les totaux"
Pour l'instant, nous n'obtenons aucun calcul de
synthse mais seulement la ventilation (la liste)
des quantits de produit command :
- par Nom de client et
- par Nom de Catgorie.
Cliquer sur le champ Quantit
puis sur l'icone de calcul automatique
du ruban et choisir : Moyenne

Une nouvelle prsentation est propose:


Nous avons :
- la moyenne des quantits de produits
vendus par client et par catgorie
- la moyenne des quantits de produits
vendus par client (toutes catgories
confondues)
- la moyenne des quantits de produits
vendus par catgorie (tous clients
confondus)
- la moyenne gnrale des quantits de
produits vendus (tous clients et toutes
catgories confondus)

Ensat - Informatique Applique - Marc Souques

Page 121

- ACCESS 2007 2010 - Travail dirig Facturation

On peut cacher la liste des Quantits vendues par Client et par Catgorie :
Cliquer dans le tableau sur le champ Quantit puis sur le bouton du ruban :
Masquer les dtails
On peut grer le format numrique des valeurs affiches:
Cliquer dans le tableau sur le champ Moyenne de Quantit puis sur le bouton du ruban :
Feuille des proprits Onglet Format / Nombre : Standard (pour 2 dcimales)
Rsultat final :

Enregistrer ce formulaire : Ventes analyses par TCD

Ensat - Informatique Applique - Marc Souques

Page 122

- ACCESS 2007 2010 - Travail dirig Facturation

Ch24. La base de donnes finale.

Ensat - Informatique Applique - Marc Souques

Page 123

Anda mungkin juga menyukai