Vocabulaire et création de bases de données
Vocabulaire et création de bases de données
5- Relations (Tables)
✓ Collection de nuplets (tuples en anglais) décrivant des données de
même structure
✓ Tableau à deux dimensions composées d’attributs (ou champs - en
colonnes) et de nuplets (ou enregistrements - en ligne).
6- Clé primaire
Attribut (ou ensemble d’attributs) permettant d’identifier de manière
unique les nuplets de la relation
Exemples :
✓ L’attribut ISBN pour une relation Livre
✓ L’attribut NuméroImmatriculation pour une relation Voiture
✓ L’attribut NuméroCarte pour une relation Emprunteur
7- Clé étrangère
Attribut (ou ensemble d’attributs) d’une relation qui fait (font) référence à
la clé primaire d’une autre relation.
A quoi cela sert ? Exemple d’une mauvaise relation :
Problèmes :
✓ Répétition des noms, prénoms, dates de naissances, ISBN, etc. autant
de fois qu’il y a d’emprunts = Redondance d’information
✓ Comment identifier les nuplets ?
Ne pas mettre toutes les données dans une seule relation !!!
La solution ? Diviser les données en plusieurs relations
⇒ Division en 3 relations associées : Emprunteurs, Emprunts et Livres
⇒ Stockage unique des informations de chaque livre
⇒ Stockage unique des informations de chaque emprunteur
⇒ Stockage unique des informations de chaque emprunt
Attention : Access appelle Relation ce qui en fait s’appelle Association
L’interface d'Access 2007/2010 est un peu garni mais nous allons aborder
son apprentissage en douceur : cliquer sur l’icône (en haut à gauche de la fenêtre
centrale) « Base de données vides ». Sélectionner le répertoire d’accueil et
définissez le nom du fichier base de données dans le menu de droite (ici
note1.accdb). Depuis la version 2007 la terminaison des fichiers n’est plus mdb
(pour master database) mais accdb (pour access database).
Une fois votre fichier ouvert vous rentrez dans l’univers pratique de la
réalisation d’une base de données avec le SGBDR (système de Gestion de Base
de Données Relationnelles) Access.
Laissez-vous guider par les commandes, les fonctions et autres options que
proposent les menus déroulants et les boutons du logiciel. Vous verrez que la prise
en main est assez intuitive et rapide. On y retrouve déjà les rubriques habituelles
de création et gestion de fichiers, d’édition et de manipulation de données.
✓ Création de tables sous Access
A ce stade, vous venez de facto de créer une base de données vide. Il faut
maintenant commencer à organiser son contenu et créer les tables prévues à
l’étape de conception (figurant sur le schéma).
Il est clair que 4 tables (les entités du MCD deviennent des tables) vont être
créées l’une après l’autre.
Pour chacune d'elle, la procédure sera la même :
- renseigner les noms des champs et le type des données (ne pas se
tromper dans les formats). On peut ajouter des champs à n’importe quel
moment en basculant vers le mode création
- enregistrer la table en cours (soit à l'aide d'un clic droit puis
Enregistrer, soit en basculant en mode feuille de données, ce qui
engendre automatiquement une fenêtre demandant si l’on veut
enregistrer les modifications)
✓ Commençons par créer la table Table_Etudiants :
Entrez dans la fenêtre de création de la première table de cette base de données
Access. On repère tout de suite le bouton « Affichage » (cerclé en rouge sur la
figure ci-dessous) qui permet de faire passer l’affichage de la table en mode feuille
de données (contenu) ou en mode création (format / contenant).
Il est logique de commencer par définir le format de la table (contenant) en
précisant la structure des champs des enregistrements, répondant à des types de
données précis. On bascule donc en mode création (en cliquant sur le bouton
"Affichage").
Dès lors la définition précise de chacun des champs composant les
enregistrements peut commencer.
Il est assez simple de définir chacun des champs par son identificateur et
son type. On pourra avantageusement utiliser les cases Description pour saisir des
commentaires et préciser certains éléments. L’unicité de l’information n’étant pas
garantie avec le nom ou même avec le couple (nom, prénom), elle le sera grâce
au numéro ID de l’étudiant. On associe alors (avec le bouton clé primaire, cerclé
en rouge sur la figure, ou à l’aide d’un clic droit souris / choix clé primaire) la clé
primaire sur le champ ID_etudiant
On remarque que la structure des enregistrements est décrite de telle façon
qu’à chaque ligne correspond la définition d’un champ dans l’ordre de leur
rencontre.
On voit que les enregistrements sont affichés les uns après les autres selon la
structure que l’on a définie en mode création, à raison d’un enregistrement par
ligne. Les colonnes de la table correspondent ainsi aux champs des
enregistrements crées (le champ ID_etudiant est automatiquement incrémenté
d’une unité à chaque enregistrement crée, on ne s’en occupe pas).
✓ Continuons en créant la table Table_Enseignants :
Flèche de liste
déroulante
Tables/Requêtes
Liste des champs
sélectionnés
Liste des champs
disponibles Quatre champs de
la table Voyages
Deux champs de
la table Clients
Access 2010
FIGURE B-2 : Feuille de données de la requête VoyageClients
Requête
VoyageClients
Deux champs
de la table
Quatre champs Clients
de la table
Voyages
80 enregistrements
au total
Une feuille de données issue d’une requête permet d’entrer et de modifier des données de la même manière
que dans une feuille de données d’une table. Comme les données sont emmagasinées dans les tables,
chaque modification apportée dans la feuille de données d’une requête est reproduite de manière
permanente dans les tables sous-jacentes et sont automatiquement répercutées dans toutes les vues des
données des autres requêtes, des formulaires et des états. Vous souhaitez changer le nom de deux
voyages et corriger le nom d’un client. La feuille de données de la requête VoyageClients permet d’effectuer
ces modifications.
ÉTAPES
1. Double-cliquez sur marine dans le nom de voyage du premier ou du second
enregistrement de Découverte marine, entrez de la vie sous-marine, puis cliquez
sur un autre enregistrement.
Toutes les occurrences de Découverte marine sont automatiquement corrigées en Découverte de la vie sous-
marine parce que ce nom de voyage est enregistré une seule fois dans la table Voyages (figure B-3). Le nom du
voyage est extrait, sélectionné, à partir de la table Voyages et affiché dans la requête VoyageClients pour
chacun des clients ayant réservé ce voyage.
2. Double-cliquez sur Côté dans le champ Nom, entrez Martin, puis cliquez dans un autre
enregistrement.
Toutes les occurrences de Côté sont modifiées automatiquement en Martin car cette valeur du nom de famille
du client est enregistrée une seule fois dans la table Clients. Ce nom est sélectionné dans la table Clients et est
affiché dans la requête VoyageClients pour chaque voyage que ce client a acheté.
3. Cliquez sur le bouton du sélecteur d’enregistrement à gauche du premier enregistrement,
cliquez sur l’onglet Accueil, cliquez sur le bouton Supprimer du groupe Enregistrements,
puis cliquez sur Supprimer et sur Oui.
La suppression d’enregistrements dans la feuille de données d’une requête se déroule de la même manière que
la suppression dans la feuille de données d’une table. Notez que la barre de navigation indique désormais
79 enregistrements dans la feuille de données (figure B-4).
4. Cliquez du bouton droit sur l’onglet de la requête VoyageClients, puis cliquez sur Fermer.
La modification
d’un enregistrement
de Découverte de
la vie sous-marine
met à jour tous ses
enregistrements
Changez Côté
en Martin
Onglet de
Access 2010
la requête
VoyageClients
Bouton
Supprimer
Côté est
remplacé
par Martin
dans
le Nom
La feuille de
données
contient
79 enregis-
trements
Le mode Création de requête permet d’ajouter, de supprimer ou de déplacer les champs d’une requête
existante, de définir un ordre de tri ou encore d’ajouter un critère pour limiter le nombre d’enregistrements
affichés dans la feuille de données résultante. C’est aussi en mode Création de requête que vous édifierez de
nouvelles requêtes à partir de zéro. Le mode Création de requête énumère les champs que vous pouvez
utiliser dans cette requête, dans de petites fenêtres, les listes de champs. Si des champs de plusieurs tables
interviennent dans la requête, la relation entre deux tables est indiquée par une ligne de jointure, ou
ligne de lien, identifiant les champs qui servent à établir les relations. Michèle vous demande
d’imprimer une liste des voyages de type Aventure qui se déroulent dans les Alpes-Maritimes. Le mode Création
(de requête) vous aide à modifier la requête VoyagesParDépartement pour obtenir le résultat demandé.
ÉTAPES
1. Double-cliquez sur la requête VoyagesParDépartement pour revoir la feuille de données.
La requête VoyagesParDépartement contient le champ NomDépartement de la table Départements, ainsi que
les champs NomVoyage, DateDébutVoyage et Prix de la table Voyages.
2. Cliquez sur le bouton Affichage du groupe Affichages pour basculer en mode Création
de requête.
Le mode Création de requête affiche dans le volet supérieur de la fenêtre les tables utilisées dans la requête. La
ligne de jointure montre qu’un seul enregistrement de la table Départements peut être associé à plusieurs
enregistrements de la table Voyages. La grille de création de requête, ou grille de requête, dans le volet
inférieur de la fenêtre, affiche les noms des champs, les ordres de tri et les critères qui définissent la requête.
ASTUCE 3. Cliquez dans la première cellule Critères du champ NomDépartement, puis tapez
Les critères de requête Bouches-du-Rhône, comme à la figure B-5.
sont insensibles à la
casse des caractères Les critères sont des conditions de restriction que l’on définit dans la grille de création de requête. Dans ce
(majuscules et cas-ci, l’ajout de Bouches-du-Rhône à la première cellule Critères du champ NomDépartement réduit les
minuscules sont enregistrements sélectionnés aux seuls enregistrements qui comportent cette valeur pour le champ
considérées comme
identiques) ; par NomDépartement.
conséquent, Alpes- 4. Cliquez sur le bouton Affichage du groupe Résultats pour revenir au mode Feuille de
Maritimes équivaut
à ALPES-MARITIMES données.
et à alpes-maritimes. Cette fois, seuls trois enregistrements sont sélectionnés, parce que seulement trois voyages contiennent
« Bouches-du-Rhône » dans leur champ NomDépartement (figure B-6). Retenez que cette requête comporte
deux ordres de tri : le NomDépartement et le NomVoyage. Comme tous ces enregistrements possèdent le
même NomDépartement, ils sont automatiquement triés en ordre croissant de NomVoyage. Vous décidez
d’enregistrer cette requête sous un nouveau nom de requête.
5. Cliquez sur l’onglet Fichier, cliquez sur Enregistrer l’objet sous, entrez VoyagesBdR,
cliquez sur OK, puis sur l’onglet Accueil.
Sous Access, la commande Enregistrer de l’onglet Fichier enregistre l’objet en cours, tandis que la
commande Enregistrer l’objet sous permet d’enregistrer l’objet courant sous un nouveau nom. Ne
confondez pas : Access enregistre automatiquement les données quand vous vous déplacez d’un enregistrement
à un autre.
6. Cliquez du bouton droit sur l’onglet de la requête VoyagesBdR, puis cliquez sur Fermer.
Bouton
Affichage
Liste de champs
Liste de Départements
des champs
de Voyages
Cellule Critère
du champ Grille de
NomDépartement création de
requête
Ordres de tri
Access 2010
FIGURE B-6 : Feuille de données des VoyagesParDépartement avec le critère Bouches-du-Rhône
Seuls trois
enregistrements
sont sélectionnés
Les valeurs de
NomVoyage sont
tirées en ordre
croissant
Champ Durée de
la table Voyages
Les sélecteurs de
champs sont les
minces barres grises
au-dessus des noms
des champs
De nouveaux ordres
Les ordres de tri des de tri pour les champs
champs Catégorie et DateDébutVoyage
NomVoyage sont et Durée
supprimés
Access 2010
FIGURE B-8 : Boite de dialogue Rechercher et remplacer
FIGURE B-9 : Feuille de données de VoyagesParCatégories avec ses nouveaux ordres de tri
Bouton
Remplacer
Le bouton Activer/
désactiver le filtre
est enclenché,
indiquant le filtrage
des enregistrements Icône de
filtrage
Access 2010
le filtre
Cliquez sur
le bouton
Affichage
pour obtenir
les résultats
de la requête
Faites glisser
vers le bas le bord
inférieur de la liste
des champs de
Voyages
Ces critères ET
définissent
l’affichage des
voyages de catégorie
Formation dans le
département 75, qui
durent une semaine
ou plus
Access 2010
Figure B-14 : Feuille de données finale de la requête Formation75
Bouton
Enregistrer
Access 2010
du 75 et dont la
durée est supérieure
ou égale à 7 jours
Si le principal outil d’Access pour créer un rapport de qualité professionnelle est l’objet état, vous pouvez
néanmoins mettre en forme et imprimer une feuille de données. L’impression d’une feuille de données ne
vous permet pas d’ajouter des en-têtes ni des pieds de page personnalisés, ni des images, ni des sous-totaux
comme les états l’autorisent mais vous pouvez modifier quelques éléments de mise en forme, tels que la
police et sa taille, les couleurs et le quadrillage. Michèle vous demande d’imprimer une liste des
clients. Vous décidez de mettre en forme la feuille de données de la table Clients avant de l’imprimer.
ÉTAPES
1. Dans le volet de navigation, double-cliquez sur la table Clients pour l’ouvrir en mode
Feuille de données.
Avant d’appliquer les améliorations de présentation, vous visualisez l’aperçu avant impression de la table dans
sa forme actuelle.
2. Cliquez sur l’onglet Fichier, cliquez sur Imprimer, cliquez sur Aperçu avant impression,
puis cliquez sur l’en-tête de l’aperçu pour zoomer dans l’image.
La fenêtre de prévisualisation affiche l’aperçu de la future page imprimée (figure B-17). Par défaut, l’aperçu de
la feuille de données place le nom de l’objet et la date dans l’en-tête, tandis qu’un numéro de page figure en
pied de page.
3. Cliquez sur le bouton Page suivante dans la barre de navigation pour afficher le con-
tenu de la page suivante de l’aperçu.
Les trois derniers champs figurent sur la deuxième page parce que la première page n’est pas suffisamment
large pour les accueillir. Vous décidez de modifier en paysage l’orientation de la page, pour que tous les
champs soient imprimés sur la même page, puis d’augmenter la taille de police pour faciliter la lecture.
4. Cliquez sur le bouton Paysage du groupe Mise en page, puis cliquez sur le bouton Fermer
l’aperçu avant impression.
Vous revenez à l’affichage en mode Feuille de données, où vous pouvez appliquer des choix de police, de taille
et de couleur de police, ainsi que de couleurs de quadrillage et d’arrière-plan.
5. Cliquez sur la flèche de liste de Police du groupe Mise en forme du
texte, cliquez sur Times New Roman, déroulez la liste de Taille de police , puis
cliquez sur 12.
Avec cette taille de police plus grande, le contenu de certains champs n’est plus visible en totalité et vous
devez corriger la largeur de certaines colonnes pour en imprimer et afficher le contenu complet.
6. Utilisez le pointeur pour double-cliquer sur le séparateur des noms des champs
Adresse et Ville, faites de même sur le séparateur des noms des champs CP et Téléphone,
procédez de même sur le séparateur des noms des champs Téléphone et PremierContact,
puis avec le séparateur à droite du nom de champ PremierContact.
Le double-clic sur le séparateur à droite d’un champ augmente ou réduit, si nécessaire, la largeur de la colonne
pour qu’elle affiche la totalité du contenu de ce champ (figure B-18).
ASTUCE 7. Cliquez sur l’onglet Fichier, cliquez sur Imprimer, puis cliquez sur Aperçu avant impression.
S’il vous faut une Tous les champs apparaissent à présent sur une seule page en largeur, en orientation paysage. L’aperçu occupe
copie sur papier de
cette feuille de don- encore deux pages, mais grâce à la taille de police légèrement plus importante, la lecture des données est facilitée.
nées, cliquez sur le 8. Cliquez du bouton droit sur l’onglet de la table Clients, cliquez sur Fermer, puis sur Oui
bouton Imprimer de
l’onglet Aperçu à l’invite d’enregistrement des modifications, cliquez sur l’onglet Fichier, puis cliquez sur
avant impression, Quitter pour fermer la base de données VTA-B.accdb et quitter Access 2010.
puis cliquez sur OK.
Nom de l’objet
dans l’en-tête
Access 2010
Figure B-18 : Feuille de données mise en forme
1. Introduction.................................................................................................2
Page 1 sur 17
Cours ACCESS Les requêtes
LES REQUETES
1. Introduction
Les requêtes vont servir à afficher uniquement certaines données contenues dans les tables selon certains
critères. Elles peuvent aussi faire des calculs sur vos données, ainsi que créer des sources de données pour
les formulaires, les états ou même d'autres requêtes (on peut faire une requête sur le résultat d'une autre
requête). Elles servent encore à modifier des tables existantes ou à en créer des nouvelles.
?? L a r e q u ê t e s é l e c t i o n : C'est celle qu'on utilisera le plus souvent. Elle permet de sélectionner des
enregistrements, de faire des calculs et des regroupements. Elles ressemblent beaucoup aux filtres, mais
permettent, en plus, de travailler sur plusieurs tables simultanément.
?? L a r e q u ê t e d ' A n a l y s e c r o i s é e : Cette requête présente ses résultats sous forme de tableau (de type
Excel). On l'utilisera pour comparer des valeurs, dégager des tendances.
?? L a r e q u ê t e d e C r é a t i o n d e t a b l e : Cette requête crée une table à partir des données qu'elle a extraites
dans une ou plusieurs autres tables.
?? L a r e q u ê t e M i s e à J o u r : Cette requête modifie le contenu d'un ou plusieurs champs d'une ou
plusieurs tables. C'est le moyen le plus efficace pour mettre à jour un grand nombre d'enregistrements
en une seule opération.
?? L a r e q u ê t e A j o u t : Cette requête ajoute les données qu'elle a extraites à la fin d'une table déjà
existante.
?? L a r e q u ê t e S u p p r e s s i o n : Cette requête supprime un ou plusieurs enregistrements dans une ou
plusieurs tables.
Dans la fenêtre principale d'Access, cliquez sur l'onglet "Requêtes", puis sur le bouton "Nouveau".
Page 2 sur 17
Cours ACCESS Les requêtes
Comme nous ne reculons pas devant l'effort, nous allons créer les requêtes par nous même, nous cliquons
donc sur Mode Création, puis, sur OK :
Access nous affiche la liste des tables de la base. Nous choisissons ici les tables sur lesquelles vont porter la
requête. Nous allons prendre pour exemple la requête "liste des clients habitant la ville
de Paris". La requête va donc porter sur la table "Clients", on la sélectionne, et on clique sur "Ajouter",
comme il n'y a aucune autre table à ajouter, on clique sur "Fermer".
Notez qu'on peut aussi faire porter la requête sur le résultat d'une autre requête, dans ce cas, on choisira la
requête dans l'onglet "Requête".
Dans la partie supérieure de la fenêtre se trouvent la ou les tables avec la listes de leur champs, c'est sur ces
tables que vont porter les requêtes. Dans la partie inférieure, se trouve la description de la requête.
Page 3 sur 17
Cours ACCESS Les requêtes
Nous avons un tableau composé de colonnes et de lignes, dans chaque colonne, on indique les champs qui
vont apparaître dans le résultat de la requête ou qui vont servir dans la requête, ici on veut la liste des clients
habitant Saint-Quentin, on veut donc voir apparaître le champ Nom et le champ Prénom, le critère de la
requête va se faire sur le champ ville, on ajoute donc aussi ce champ.
Pour ajouter un champ, on peut, soit le sélectionner dans la table et l'amener avec la souris sur une colonne,
soit on clique sur la ligne "Champ", la liste de tous les champs s'affiche alors et on en sélectionne un dans la
liste. Un des champs proposé s’appelle '*', ce champ signifie "tous les champs de la table", si on choisi ce
champ, tous les champs de la table apparaitront dans le résultat de la requête, en plus des autres champs que
vous aurez choisis.
La ligne "Table" sert à selectionner la table à laquelle appartient le champ sélectionné, dans notre cas, il n'y
a qu'une table, le choix est vite fait.
La colonne "Tri" indique de quelle façon vont être triés les champs dans le résultat de la requête : il y a trois
sortes de tri : Croissant (de A à Z), Décroissant (de Z à A) et non trié. On a choisi ici de trier le résultat de la
requête par nom et par prénom de façon croissante. Le tri se fait toujours de gauche à droite : le résultat de la
requête sera d'abord trié par nom, puis par prénom.
La colonne "Afficher" indique si le champ doit être affiché ou non, ici on veut afficher le nom et le prénom
de chaque client habitant à Saint-Quentin, mais on a pas besoin d'afficher, pour chaque client, la ville dans
laquelle il habite, puisqu'il s'agira toujours de Saint-Quentin, on a donc déselectionné l'affichage du champ
"Ville".
Enfin la colonne "Critères" va indiquer le critère de la requête, on veut la liste des clients habitant Sain-
Quentin, le critère est donc : le champ ville doit être égal à Saint-Quentin, d'où le critère = "Saint-Quentin".
Le résultat de la requête s'affiche sous la forme d'une table que l'on peut modifier comme si il s'agissait
d'une table normale, on peut ajouter des enregistrements, les modifier, faire des filtres, des tris, etc...
Page 4 sur 17
Cours ACCESS Les requêtes
Attention : Les résultats des requêtes, même si ils sont présentés sous forme de tables ne sont pas de
véritables tables qu’aurait généré la requête. Ils ne sont qu'une "vue" faite à partir des tables qui ont servi à
faire la requête. Autrement dit, si vous modifiez quelque chose dans le résultat de la requête, la modification
se repercutera dans la table qui a servi à faire la requête, si on change ici le nom du client, la modification
sera reportée dans la table Clients, si on ajoute un client au résultat de la requête, un nouvel enregistrement
va être crée dans la table Clients, et en plus, cet enregistrement sera incomplêt car seuls deux champs
auront pu être saisis dans le résultat de la requête (les champs nom & prénom).
3.1 Opérateurs
Opérateur Signification
= Egal
<> Différent
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal
Page 5 sur 17
Cours ACCESS Les requêtes
On peut intégrer des fonctions dans les critères de sélection. Access met à notre disposition un très grand
nombre de fonctions (pour en avoir la liste complète, consultez l'aide intégrée à Access). Ce sont les mêmes
fonctions que celles qui sont utilisés dans les contrôles des formulaires (et d’ailleurs dans tous les logiciels
de la gamme Microsoft Office).
Par exemple, parmi ces fonctions, on trouve la fonction Mois ( ), à qui on passe une date en paramètre, cette
fonction renvoie le mois de cette date, par exemple Mois (#10/2/98#) renvoie 2. Une autre fonction, Date ( )
renvoie la date du jour. On peut utiliser ces deux fonctions dans des critères de sélection :
Notez que pour faire référence au champ "Date de la commande" dans la fonction Mois ( ), on a écrit le
champ entre crochets [ ]. On utilise les crochets lorsqu’on travaille avec un champ dont le nom comporte
des espaces. Par extension et par mesure de précaution, on les utilisera avec tout type de champ.
Il existe un très grand nombre de fonctions, pour en avoir la liste et la syntaxe, consultez l'aide intégrée à
Access.
Page 6 sur 17
Cours ACCESS Les requêtes
On peut avoir plusieurs critères de sélection, ces critères étant séparés entre eux par des OU ou des ET, par
exemple : "liste des clients habitant à Saint-Quentin OU à Paris", "Liste des
clients s'appelant Dupont ET vivant à Paris".
La requête ressemble à la précédente, sauf que là, il y a deux critères : le premier Nom = "Dupont" ET le
deuxième Ville = "Paris". Vous noterez au passage qu'il n'est pas nécessaire d'afficher le contenu du champ
"ville" puisqu'on sait que ce sera toujours Paris. Vous me direz que c'est la même chose avec "Nom", certes,
mais c'est mieux d'avoir une liste de nom + prénom qu'une seule liste de prénom.
Les deux critères ne sont plus sur la même ligne. Ils sont sur deux lignes séparées. Le premier est sur la
ligne "Critères", le second sur la ligne "Ou". Si on avait voulu ajouter un troisième critère (Liste des clients
habitant Saint-Quentin OU Paris OU Lille), on aurait ajouter le critère = "Lille" sur une troisième ligne et
ainsi de suite.
Page 7 sur 17
Cours ACCESS Les requêtes
En règle générale :
?? Si deux critères sont séparés par des ET, on les place sur la même ligne.
?? Si deux critères sont séparés par des OU, on les place sur des lignes différentes.
Pour l'instant, les critères de chaque requête que nous avons fait étaient indiqués explicitement dans la
requête. Supposons maintenant que nous voulions faire une requête du type :
« Liste de tous les clients qui habitent dans une ville » mais qu’on veuille
entrer nous même la ville.
On ne connaît pas par avance la ville en question, et on ne va pas préparer autant de requêtes qu'il peut y
avoir de villes (on n'est pas sorti de l'auberge), la solution la plus simple est alors de demander à l'utilisateur
(l'utilisateur, c'est celui qui va utiliser votre requête plus tard) d'entrer la ville, et de faire la requête en
fonction de ce qu'il a entré.
Au lieu d'indiquer une ville, on a mis =[Entrez la ville]. Que va-t-il se passer lorsqu'on va exécuter la
requête?
Habituellement, pour Access, tout ce qui est indiqué entre crochets est le nom d'un champ, si on avait mis
par exemple = [Nom], il aurait cherché les clients qui habitent une ville qui s'appelle comme leur nom. Or
ici, [Entrez la ville] n'est pas un nom de champ, Access ne sait donc pas ce que c'est, et il demande à
l'utilisateur d'entrer la valeur de ce champ inconnu :
L'utilisateur va entrer ici la ville (notez que le message affiché est ce qui était indiqué entre crochets dans la
requête). Maintenant, à chaque fois que Access va rencontrer dans la requête [Entrez la ville], il va le
remplacer par ce qu'à saisi l'utilisateur. Si l'utilisateur a saisi Paris, Access va remplacer dans son critère
=[Entrez la ville] par = "Paris".
Page 8 sur 17
Cours ACCESS Les requêtes
Pour l'instant, nos requêtes ne portaient que sur une seule table, il est possible de faire des requêtes qui
portent sur plusieurs tables simultanément. Dans ce cas, les requêtes peuvent être très complexes.
Par exemple, si nous voulons la liste des clients ayant commandé le produit n° 1 :
On va choisir ici toutes les tables entrant en jeu pour pouvoir faire la requête. Ici on veut la liste des clients,
il faut donc la table clients. "ayant commandé", il faut donc la table commandes, "le produit n°1", il faut
donc la table produits. Il faut aussi faire intervenir la table "Lignes-commandes".
Pourquoi ? parce que c'est elle qui fait la liaison entre la table commande et la table produits. De façon
générale, lorsqu'on fait une requête portant sur plusieurs tables, il faut respecter deux règles :
?? Toutes les tables intervenant dans la requêtes doivent être reliées entre elles, il ne doit pas y avoir de
tables isolées, sinon, Access va essayer de trouver lui-même les relations entre ces tables isolées et
parfois le résultat peut être folkorique.
?? Il ne doit pas y avoir de tables n'ayant rien à faire dans la requête, sinon, Access va se baser sur les
relations entre ces tables n'ayant rien à voir avec la choucroute et celles ayant à voir et va donner des
résultats erronés.
Vous pouvez noter que, une fois les bonnes tables installées avec les bonnes relations entre elles, la requête
est fort simple, il suffit d'indiquer produits=1, et Access, grâce aux relations, va retrouver la liste des clients
ayant commandé ce produit.
Page 9 sur 17
Cours ACCESS Les requêtes
Jusqu'à présent, nos requêtes nous permettaient de répondre à des questions du type : "Liste des clients
habitant Paris", "Liste des produits commandés par le client 1". Grâce aux fonctions de regroupement, nous
allons pouvoir répondre à des questions du type : "Combien de clients habitent Paris ?" ou
"Pour combien à commandé chaque client ?".
Une nouvelle ligne "Opération" apparaît dans la requête, c'est grâce à elle que nous allons faire nos
opérations.
Qu'y-a-t-il de différent ?
Nous avons deux champs : nous allons compter le nombre de clients, chaque client a un numéro, on insère
donc dans la requête le numéro de client, c'est le nombre de ces numéros que nous allons compter, il faut
qu'on compte les clients habitant Paris, d'où le deuxième champ Ville.
Elle indique comment va se faire l'opération, si nous voulons compter, on va choisir l'opération "compte".
Dans tous les champs où il y a un critère de sélection (ici Ville = "Paris"), on choisira l'opération où. Le
résultat de la requête sera une table avec un unique champ, non modifiable, qui indiquera le nombre de
clients habitant Paris.
Page 10 sur 17
Cours ACCESS Les requêtes
Ca se corse !
Ici, on veut, par client, la somme de ses commandes. A partir du moment où on veut un résultat par
catégorie (une somme par client, un nombre de clients par ville, etc…), il y a regroupement, ici on veut la
somme des commandes regroupées par clients, c'est pour ça qu'on a choisi comme opération pour numéro de
client "Regroupement".
Pourquoi a-t-on ajouté le champ "nom" ? Simplement pour ne pas avoir une liste de numéros avec un
montant correspondant. Pourquoi dans ce cas, n'a-t-on pas regroupé les clients par leur nom au lieu de le
faire par numéro et nom ? parce que plusieurs clients peuvent avoir le même nom et qu'on ne veut pas
cumuler le montant des commandes par clients homonymes, on regroupe donc les clients par numéro et
nom.
Enfin, le troisième champ : on veut la somme du montant des commandes : qu'est-ce qu'une commande ?
c'est une liste de prix unitaires * une quantité. A la place d'un champ, on indique donc qu'on veut les prix
unitaires * les quantités. La syntaxe est [nom de la table]![champ de la table], une commande, c'est donc
une liste de [produits]![prix unitaire] * [lignes_commandes]![quantité]. Et on veut la somme de toutes ces
commandes, on choisi donc l'opération "Somme".
Page 11 sur 17
Cours ACCESS Les requêtes
Page 12 sur 17
Cours ACCESS Les requêtes
Les requêtes d'analyse croisée permettent de répondre à des questions du type "qui à commandé combien de
quoi ?". Elles retournent le résultat sous forme d'un tableau comportant des champs en abscisse et en
ordonnée, avec, dans chaque case la réponse à notre question.
Qui Qui
Quoi Combien Combien
Quoi Combien combien
Comment procéde-t-on ?
1. D'abord on crée une requête standard : pour cette requête nous avons besoin du nom dans la table
clients, du libellé du produit dans la table produit et de la quantité commandé dans la table lignes-
commandes.
2. On transforme la requête en requête d'analyse croisée en allant dans le menu "Requête" et en choisissant
"Analyse croisée".
3. Une nouvelle ligne apparaît dans la requête : la ligne "Analyse"
4. Dans cette ligne, on va indiquer si le champ qu'on a choisi va être l'en-tête des colonnes, l'en-tête des
lignes ou la valeur contenue dans les cases du tableau.
5. L'Opération pour les en-têtes est toujours "Regroupement"
6. L'Opération pour les valeurs des cases dépend de ce qu'on cherche, ici on cherche le nombre de produits
acheté, l'opération est donc "Somme"
Page 13 sur 17
Cours ACCESS Les requêtes
Les requêtes faites jusqu'à présent se contentent de retourner le résultat d'une sélection sous forme de table,
cette table, étant, selon le type de requête, modifiable. Il existe cependant d'autres types de requêtes, les
requêtes action, ces requêtes vont permettre de :
Une requête création crée une table à partir des résultats qu'elle produit à partir d'une table existante.
Supposons que nous voulions créer une table "Commandes réglées" qui contiendrait la liste des commandes
déjà réglées.
Attention, si vous sélectionnez une table existante, la table va être écrasée par cette opération
Page 14 sur 17
Cours ACCESS Les requêtes
4. Exécutez la requête avec l'icône point d'exclamation : la table va être créée avec le résultat de la requête.
Si vous vous voulez vérifier avant de créer la table quel sera le résultat de la requête, cliquez sur l'icône:
Une fois que le résultat sera conforme à vos attentes, vous pourrez cliquer sur l'icône point
d'exclamation.
Une requête Ajout copie tout ou partie des enregistrements d'une table (la table source) à la fin d'une autre
table (la table cible).
Toujours dans notre table "Commandes réglées", nous voulons ajouter les commandes qui ont été réglées
depuis la semaine dernière :
3. Access nous demande le nom de la table à laquelle il faut ajouter le résultat de la requête :
4. Comme précédemment, avec les icônes Affichage et point d'exclamation, vérifiez et validez votre
requête.
Page 15 sur 17
Cours ACCESS Les requêtes
Attention :
?? Les enregistrements sont COPIES de la table source vers la table cible et non pas déplacés.
?? Les deux tables doivent avoir des noms de champs identiques (et les mêmes types de données), les deux
structures ne doivent pas nécessairement être identiques.
?? Si la table source comporte plus de champs que la table cible, les champs supplémentaires sont ignorés
?? Si la table source comporte moins de champs que la table cible, les champs dont les noms sont
identiques sont copiés, les autres sont laissés vides.
?? Access ne copie QUE les champs que vous avez déclarés dans la requête (d'ou le champ *)
Les requêtes mise à jour permettent de modifier rapidement tous les enregistrements d'une table ou un
groupe d'entre eux :
Supposons que l'on veuille augmenter de 10% le prix des produits dont le prix actuel est inférieur à 1000 F.
1. On crée une requête, et dans le menu Requête, on clique sur "Requête Mise à Jour"
2. Un champ "Mise à jour" apparaît dans la requête, c'est là qu'on va indiquer la modification qui va avoir
lieu :
Dans la case Mise à Jour, on a indiqué, qu'à la place du prix unitaire, nous voulions [prix_unitaire]*1.1
(soit une augmentation de 10%), ceci pour les produits dont le prix est inférieur à 1000 (critère).
Page 16 sur 17
Cours ACCESS Les requêtes
Les requêtes suppression vous permettent de supprimer un groupe d'enregistrements qui répondent à un
critère donné. Supposons que l'on veuille supprimer de la table commande toutes les commandes
réglées :
1. On crée une requête standard, puis dans le menu Requête, on clique sur Requête Suppression :
2. On exécute la requête ou on vérifie avant que le résultat est conforme à ce que l'on attend.
Attention :
Vérifiez bien le résultat avant d'exécuter la requête, il n'est pas possible de revenir en arrière après
avoir effacé des enregistrements.
Page 17 sur 17
Cours ACCESS les Formulaires / Sous-Formulaires
Présentation....................................................................................................2
Page 1 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Présentation
Le formulaire va nous permettre d’affcher et de modifer le contenu d’une table de façon bien
plus agréable que le mode « feuille de données » qui ne permet qu’un affchage en lignes et
colonnes.
Les informations saisies ou modifées dans le formulaire seront modifées dans les tables à
partir desquelles le formulaire a été créé.
Page 2 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Il existe plusieurs méthodes pour générer un formulaire, nous nous intéresserons seulement
aux deux premières méthodes :
?? Mode création : on va tout faire seul « à la main » sans aucune aide d’Access
?? Assistant Formulaire : Access va nous guider pas à pas dans la réalisation de notre
formulaire
?? Formulaires Instantanés : Ces trois méthodes vont générer rapidement un formulaire à
partir d’une table sans nous poser de questions, son aspect sera rudimentaire et ne nous
donnera pas de grandes possibilités de personnalisations.
Dans la partie inférieure de la fenêtre, nous allons choisir la table à partir de laquelle le
formulaire va être généré : les informations provenant de cette table seront affchées dans le
formulaire, les modifcations ou ajouts que nous ferons dans le formulaire seront répercutées
dans cette table :
Page 3 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Nous allons choisir ici quels sont les champs de la table que nous voulons voir dans le
formulaire, si nous voulons être en mesure de modifer tous les champs de chaque
enregistrement de la table, il faudra tous les choisir, si, par exemple, notre formulaire ne doit
servir qu’a affcher certaines informations, on choisira uniquement les champs pertinents.
Attention : Dans un formulaire, on va pouvoir, comme dans la feuille de données, ajouter des
enregistrements dans la table, les champs non présents dans le formulaire ne seront pas
initialisés (ils resteront vides) lors de l’ajout. (Le seul moyen alors pour remplir ces champs
sera d’aller dans la feuille de données).
Pour choisir les champs à ajouter ou à enlever dans le formulaire, on va utiliser les boutons :
?? > : Ajouter le champ dans le formulaire
?? >> : Ajouter tous les champs dans le formulaire
?? < : Supprimer un champ du formulaire
?? << : Supprimer tous les champs du formulaire
Nous allons ajouter tous les champs du formulaire, cliquez ensuite sur « suivant »
Page 4 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
On choisit ici la façon d’affcher les champs choisis dans le formulaire, il y a quatre façons
d’affcher les champs :
?? Colonne simple : Le formulaire va affcher les champs sous la forme : « nom du champ :
contenu du champ ». Le formulaire va affcher les champs d’un enregistrement à la fois.
?? Tabulaire : Le formulaire va affcher les champs choisis sous la forme d’un tableau : en
haut du formulaire vont être affchés les noms des champs, et, en dessous sous forme de
tableau, le contenu, avec un enregistrement par ligne. Cette façon d’affcher les données
ressemble à la feuille de données.
?? Feuille de données : C’est la même chose que la feuille de données utilisées pour saisir
des informations dans une table, la seule différence est que ne sont affchés ici que les
champs sélectionnés dans l’étape précédente.
?? Justifié : Va affcher les champs choisis les un à la suite des autres, ce n’est pas très beau
(enfn c’est une question de goût).
Nous utiliserons le plus souvent (voire tout le temps) le mode « Colonne simple » ou le mode
« Tabulaire ». Nous choisissons ici le mode « Colonne Simple », puis on clique sur
« Suivant »
Page 5 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
On choisit ici le "décor" que l'on va donner au formulaire, il existe une dizaine de décors
prédéfnis, bien sur, on pourra, par la suite, modifer un décor choisi ici. Choisissez celui qui
vous plaît le plus.
Enfn, on va nommer son formulaire, c'est sous ce nom qu'il apparaîtra dans l'onglet
"Formulaires" de la fenêtre principale d'Access, puis cliquez sur "Terminer", le formulaire est
créé.
Page 6 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Access nous propose alors de commencer tout de suite la saisie dans notre nouveau
formulaire.
Vous pouvez voir ici le formulaire tel qu'il est une fois créé : Il utilise les champs choisis dans
la table sélectionnée, il affche les champs sous forme de "Colonne simple" (un couple nom
du champ - contenu du champ par ligne) et utilise le décor choisi.
Les informations qui vont être saisies ou modifées dans ce formulaire le seront dans la table
qui est associée à ce formulaire.
Pour se déplacer parmi les enregistrements dans le formulaire, on utilise les icônes féchés en
bas du formulaire :
Créer un nouvel
enregistrement
Aller sur le 1 er Aller sur
enregistrement l'enregistrement
suivant
Pour modifer l'aspect et le contenu du formulaire, on clique soit sur le bouton "Modifer"
dans l'onglet "Formulaires" de la fenêtre principale d'Access, soit sur l'icône
Page 7 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Le formulaire est affché en mode modifcation (à gauche) et une boîte à outils s'affche (à
droite), la boîte à outils peut apparaître sous forme de barre d'icône en dessous du menu de la
fenêtre.
Le formulaire est constitué de plusieurs parties : L'en-tête, le détail et le pied. Dans le cas d'un
formulaire de type "Colonnes Simples" (comme c'est le cas ici), l'en-tête et le pied n'ont
aucune importance, ils sont utiles lorsque le formulaire est affché sous forme de tableau (type
Tabulaire ou Feuille de Données), dans ce cas, l'en-tête va contenir le titre des colonnes, le
détail va défnir la façon dont vont être affchées les informations dans chaque ligne du
tableau (nous verrons ça plus tard) et le pied pourra contenir des informations
supplémentaires, comme par exemple, après avoir affché un tableau de nombres, il pourra
affcher la somme de ces nombres.
Tout ce qui se trouve sur le formulaire s'appelle un contrôle : un texte affché sur le
formulaire est un contrôle, un champ d'un enregistrement est un contrôle, une image placée
sur le formulaire est un contrôle : tout ce qui est affché dans le formulaire est un contrôle. La
boîte à outils à gauche affche tous les contrôles possibles que l'on peut placer sur un
formulaire. Ils sont assez nombreux et permettent d'affcher tous les types d'informations
possibles (même du son ou de la vidéo !).
Page 8 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Dans notre exemple, le contrôle à droite est dépendant du champ "nom" de la table
"Clients", il affchera, pour l'enregistrement courant, le contenu du champ "nom". Toute
modifcation dans ce contrôle ira modifer le contenu du champ "nom" de la table "Client"
pour l'enregistrement en cours.
?? Les contrôles calculés : Les contrôles calculés ne vont pas chercher les informations
qu'ils vont affcher dans un champ de la table lié au formulaire mais à partir du contenu
d'autres contrôle du formulaire, par exemple un contrôle dans le formulaire lié à la table
"Produit" pourra affcher le prix TTC à partir des contrôles affchant les prix hors taxe et
la TVA.
Page 9 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
2. Les contrôles :
Voici la liste des contrôles que nous pourrons utiliser, les contrôles non documentés servent,
de façon générale, à insérer dans un formulaire des "objets" provenant d'autres applications
Windows, comme par exemple un fchier sonore Wav, une vidéo AVI, un fchier au format
Word, une page HTML, etc.
Intitulé
Zone de Texte
Groupe d'options
Bouton Bascule
Bouton d'option
Case à cocher
Liste Modifable
Zone de Liste
Bouton Commande
Image
Onglet
Trait
Sous-Formulaire
Rectangle
Page 10 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Pour tous les contrôles placés sur le formulaire, en cliquant dessus avec le bouton droit, on
obtient le menu suivant :
Il va être utilisé pour affcher du texte "statique", c'est à dire qui ne variera pas d'un
enregistrement à l'autre, c'est donc un contrôle indépendant, qui servira typiquement à affcher
par exemple le titre du formulaire, ou le nom d'un champ dont le contenu sera affché à côté
dans un contrôle dépendant. Dans notre formulaire, tous les noms des champs affchés à
gauche sont des contrôles "Intitulé", ce sont des textes statiques ne dépendant de rien, on peut
modifer ce qui est affché sans affecter quoi que ce soit dans la table associée au formulaire.
Page 11 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Ce contrôle est l'un des contrôles les plus utilisés dans l es formulaires, on va, dans ce
contrôle, pouvoir saisir des données. Typiquement, ce contrôle est soit un contrôle dépendant,
soit un contrôle calculé.
Pourquoi ? On peut, dans ce contrôle, saisir des informations, il serait alors judicieux que les
informations saisies puissent servir à quelque chose, si le contrôle n'est lié à aucun champ de
la table associée au formulaire, les informations que l'on va taper vont se perdre dans la nature
dès qu'on sera passé sur l'enregistrement suivant. En revanche, si le contrôle est lié à un
champ de la table, les informations entrées dans ce contrôle seront placées dans le champ lié
au contrôle.
Table Formulaire
Tout ce qui sera entré dans un contrôle dépendant affectera le contenu du champ auquel il est
lié. Bien sur, rien n’interdit de lier un même champ sur plusieurs contrôles dans le même
formulaire (ce qui n’a pas, à priori, d’intérêt).
Dans notre formulaire, tous les contrôles dans lesquels on va saisir des informations sur les
clients sont des contrôles dépendants liés à des champs de la table. Le nom du champ auquel
est lié le contrôle est d’ailleurs écrit dans ce contrôle.
Page 12 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
6. Vous avez pu noter la mention « indépendant », ce qui signife que, pour l’instant, le
contrôle « Zone de Texte » créé n’est lié à rien, on peut taper du texte dedans mais le
texte ne sera sauvé nulle part. Pour dire à Access qu’on veut sauver ce texte dans le
champ « Nom » de la table Clients, on clique avec le bouton droit sur le contrôle et on
clique sur « Propriétés » :
Ici se trouvent toutes les propriétés qui vont défnir l’aspect et le comportement de
notre contrôle, il y en a beaucoup et je ne vais pas les détailler. Celle qui nous intéresse
particulièrement et la propriété « Source Contrôle » de l’onglet « Données ». C’est ici
qu ‘on indique à Access d’où viennent les informations qui vont être affchées dans le
contrôle.
Il y a une fèche qui descend à droite, si on clique dessus, tous les champs de la (ou
des) table(s) liés au formulaire vont s’affcher, on choisi dedans le champ « Nom », et
on ferme la fenêtre de propriétés.
Page 13 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Le contrôle « Groupe d’option » va servir a faire un choix l imité entre plusieurs options et
d’affecter l’option choisie à un champ d’une table. Par exemple, supposons maintenant que
nous ajoutions un champ « vendeur » à la table « Commandes » pour savoir qui a effectué une
vente. Nous allons supposer que notre magasin à trois vendeurs nommés Dupond (vendeur 1),
Durant (vendeur 2) et Martin (vendeur 3). Nous allons d’abord ajouter le champ
« num_vendeur » à la table « Commandes », puis sur le formulaire « Commandes » liée à
cette table, nous ajoutons un contrôle « Groupe d’options »
Nous entrons ici les différents noms des vendeurs et nous cliquons sur « Suivant »
Page 14 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Nous pouvons choisir ici le vendeur qui sera toujours proposé par défaut, nous pouvons
également ne choisir aucun vendeur par défaut.
Nous avons vu que chaque vendeur à un numéro, c’est ce numéro, et nom le nom du vendeur
qui va être sauvé dans le champ « num_vendeur » de la table « Commande », on indique ici,
pour chaque vendeur, son numéro.
Page 15 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
On indique enfn à Access en choisissant dans le menu quel est le champ de la table qui va
contenir le numéro correspondant au vendeur qu’on a choisi.
Page 16 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Vous pouvez voir en bas le groupe d’options avec les trois vendeurs proposés, en en
choisissant un, on sauve dans le champ lié à ce groupe (num_vendeur), le numéro associé au
vendeur choisi.
Ces deux types de contrôles permettent de tracer des traits ou des rectangles sur le formulaire
pour encadrer ou souligner.
Page 17 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Vous vous souvenez de l’assistant « Liste de choix » dans les tables qui permettait, au lieu de
saisir une valeur, de pouvoir choisir dans une liste. Ce type de menu existe également dans les
formulaires, on va pouvoir, grâce à ces deux types de contrôles, pouvoir, par exemple dans le
formulaire « Commande », choisir parmi la liste des clients au lieu de saisir son numéro.
Il y a trois façon de générer cette zone de liste, comme pour la feuille de données, nous
voulons affcher une liste des clients existants dans la table client, pour cela, on
sélectionne la 1 ère option « Je veux que la zone de liste recherche les valeurs dans une
table » (en l’occurrence, la table clients), et on clique sur suivant
Page 18 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
4.
5.
On choisit ici les champs qui seront affchés dans la zone de liste, nous pouvons juger que
seuls les nom et ville sont nécessaires
Page 19 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
6.
Notez que l’option « Colonne clé cachée » est cochée, qu’est-ce que cela signife ?
Nous sommes d’accord que le but de l’opération est de choisir parmi une liste un client et
d’affecter son numéro au champ « n° client » de la table « Commande » afn d’éviter
d’avoir à taper ce numéro. Or, nous avons choisi uniquement les champs Nom & Ville de
la table « Client », et pas le numéro. Access a remarqué que le numéro du client est la clef
de la table « Client », il en déduit que c’est donc le seul moyen d’identifer de façon
unique un client, il va donc ajouter une colonne à notre liste, cette colonne sera cachée, et
c’est le contenu de cette colonne cachée qui sera affectée au champ « n° client » de la
table « Commande ».
Page 20 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
7.
On va indiquer à Access dans quel champ de la table liée au formulaire on veut stocker
cette valeur (ici n° client)
8.
Page 21 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Vous voyez qu’au lieu de saisir un numéro, nous avons une liste dans laquelle nous
pouvons choisir un client, le numéro de ce client, présent dans la colonne cachée de la
zone de liste, sera affecté au champ choisi plus haut (n° client). Magique non ?
Le contrôle « Zone de liste modifable » agit exactement de la même façon, il est différent
parce que c’est un menu déroulant (il faut cliquer sur une petite fèche pour le faire
apparaître) au lieu d’être fxe. Essayez le…
Page 22 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Dès que le contrôle est posé sur le formulaire, l’assistant suivant apparaît :
Comme vous pouvez le voir, toutes les actions possibles d’Access sont réunies ici, il sufft
d’en choisir une et le fait de cliquer sur le contrôle exécutera cette action.
Nous allons prendre pour exemple l’ouverture du formulaire « Clients ».
Page 23 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Nous choisissons donc la Catégorie « Opération sur Formulaire » puis l’action « Ouvrir un
formulaire »
(ne vous préoccupez pas des noms des formulaires affchés ici, ils ne correspondent pas à nos
exemples)
Page 24 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
On choisit « Clients »
Access nous propose deux choix, nous verrons le premier plus tard, nous lui demandons
d’affcher tous les enregistrements dans le formulaire
On peut ici choisir ce qui va être affché dans le contrôle, par défaut Access propose un icône,
on peut affcher à la place un texte ou choisir un autre icône.
Page 25 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Page 26 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Nous pouvons améliorer ce formulaire grâce à quelques contrôles et en faire quelque chose de
plus intéressant : Nous allons affcher tous les clients dans un contrôle « Zone de Liste », et
ajouter sur le formulaire un bouton de commande comme celui que nous venons de créer avec
cette fois, un petit plus : le formulaire qui va s’affcher quand on cliquera dessus n’affchera
plus la totalité des clients mais seulement celui que nous aurons choisi dans la zone de liste.
Pour cela, on crée un nouveau formulaire vide ( directement en mode création) et, comme
plus haut, on crée une zone de liste dedans :
Notez cette fois-ci que, comme le formulaire a été crée à partir d’aucune table, Access ne
demande pas à quel champ de la table nous voulons rattacher ce contrôle. Il est donc
indépendant : il va se contenter d’affcher le numéro, le nom et le prénom des clients : le fait
d’en choisir un dans cette liste ne modifera aucune table.
Nous posons ensuite un contrôle « Bouton de Commande » sur le formulaire. Nous répétons
les étapes précédentes, mais cette fois nous nous arrêtons à la question suivante :
Page 27 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Nous avions, précédemment, affché tous les enregistrements de la table « Clients » dans le
formulaire « Clients ». Nous voulons maintenant, affcher dans ce formulaire que le seul
client correspondant à celui que nous avons choisi dans la liste.
A gauche nous avons les contrôles se trouvant sur notre formulaire : il n’y en a qu’un, il s’agit
d’une zone de liste modifable qui s’appelle « Modifable3 » (le nom choisi par Access
lorsqu’on a créé le contrôle. Il peut être différent).
A droite se trouvent tous les champs de la table associée au formulaire que nous voulons
ouvrir.
Lorsque nous avons crée notre contrôle « Zone de Liste » contenant la liste des clients, nous
avons choisi de faire apparaître dans cette liste le numéro du client, son nom et son prénom.
Access ayant noté que le numéro est la clef de la table « Clients », il ne l’affchera pas (voir
page 19). Il ne l’affchera pas mais il sera toujours présent dans la liste mais il sera caché.
Bon, quand on choisit une des lignes du menu de la zone de liste, Access fait l’opération
suivante : il « regarde « sur quelle ligne on a cliqué, il trouve une ligne « numéro, de client +
nom + prénom », le numéro étant caché. Il ne s’occupe alors que de la première colonne (en
l’occurrence la colonne cachée) : pour Access maintenant, le fait d ‘avoir cliqué sur cette
ligne correspond au fait d’avoir cliqué sur le numéro seulement. Si vous n’aviez pas mis la
colonne numéro de client, il aurait pris la première colonne (nom) et le fait de cliquer sur
toute la ligne aurait correspondu au fait de cliquer sur le nom. OK ? Si vous n’aviez pas
compris la page 19, j’espère que maintenant c’est plus clair.
Page 28 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Bien, maintenant, il faut dire à Access comment il va faire le lien entre ce qu’on a cliqué dans
la liste et la table « Client », on choisit donc à gauche notre contrôle (on a pas trop le choix) et
à droite le champ « nclient » (numéro de client) et on clique sur « <-> « .
Pourquoi ? comme on vient de le voir, le fait de cliquer sur un élément de la liste, correspond
au fait de cliquer sur le numéro, on va lui dire avec cette opération : « Affche dans le
formulaire les enregistrements dont le champ « nclient » est égal à ce qu’on vient de cliquer
dans la liste ».
La liste des clients s’affche (le nom & le prénom, le numéro étant caché)
Une fois qu’on a choisi un, on clique sur le bouton de commande et comme par magie, le
formulaire client s’ouvre avec seulement les informations concernant le client choisi dans la
liste.
Ceci n’est qu’un petit exemple de ce que l’on peut réaliser avec le contrôle « bouton de
commande », vous pouvez essayer d’autres commandes.
Page 29 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Grâce à ce contrôle, nous allons pouvoir affcher des formulaires imbriqués dans d’autres, par
exemple pour affcher une liste d’enregistrement correspondant à un seul enregistrement :
pour une commande donnée, on pourra, dans le même formulaire, affcher toutes les lignes de
cette commande.
Pour cela, on crée le formulaire « facture ». Ce formulaire va être l’en-tête de notre formulaire
fnal : il va contenir les informations sur la commande et sur le client qui l’a passé. On va
donc aller chercher des informations dans deux tables : « Clients » et « Commandes ».
Comme on l’a vu, le formulaire va être généré à partir de deux tables, on ne choisit donc rien
dans le menu « Choisissez la table ».
Page 30 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
C’est ici qu’on va choisir les tables : En haut à gauche se trouvent les tables de la base, en
dessous les champs de la table choisie plus haut et à gauche les champs que nous allons
utiliser dans notre formulaire.
Pour notre en-tête, nous avons besoin des informations suivantes : n° de la commande, n° du
client qui a passé cette commande, la date de la commande, ces informations provenant de la
table « Commande » et le nom, le prénom et la ville du client qui a passé cette commande, ces
informations provenant de la table « Clients ».
A partir de maintenant, nous supposerons que les relations ont été bien réalisées entre les
tables, c’est une condition nécessaire au bon déroulement de la suite des opérations. Si les
relations ne sont pas faites ou mal faites, Access va « tenter » de relier comme il peut les
tables entre elles, et c’est la source de problèmes…
Page 31 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Les relations étant correctement faites, Access, dans une crise d’intelligence remarque qu’a
partir des champs choisis précédemment, on peut faire deux choses : soit affcher les données
par clients, c’est à dire que, avec les champs choisis, on peut affcher un client et en dessous
affcher toutes les commandes qu’il a passé. Soit affcher les données par commande, c’est à
dire que pour une commande choisie, on va affcher les informations concernant le client qui
a fait cette commande. A droite s’affche la façon dont les données seront affchées en
fonction du mode qu’on aura choisi.
J’espère que votre esprit affûté aura remarqué que la deuxième proposition est la bonne, nous
la choisissons donc.
Page 32 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Bon, étape 1 terminée. Nous allons maintenant créer un nouveau formulaire, ce formulaire va
être une sorte de « super formulaire ligne-commandes ». Dans notre formulaire ligne
commande, nous avons seulement le numéro de la commande, le numéro du produit et la
quantité.
Nous allons créer un formulaire « super ligne-commande » qui va contenir sur chaque ligne :
le numéro de la commande, le numéro du produit, sa quantité (tout cela provenant de la table
« lignes-commande »), mais en plus le nom du produit, son prix unitaire, son taux de TVA
(tout cela provenant de la table « produits ») et pour corser l ‘affaire, nous ajouterons le calcul
du montant TTC de la ligne, et hop !
Page 33 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Comme pour notre précédent formulaire, nous allons utiliser deux tables :
Nous choisissons les champs numéro de commande, numéro de produit et quantité de la table
« ligne-commande » et les champs libellé, prix unitaire et tva de la table « Produits ».
Page 34 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Une fois de plus, Access fait preuve d ‘intelligence ! Il se rend compte qu’avec les champs
que nous avons choisi, nous pouvons affcher les données sous deux formes : soit par produit,
dans ce cas il va affcher toutes les lignes de commandes où ce produit est présent, pourquoi
pas ? mais ça ne nous intéresse pas spécialement, soit par ligne de commande, et il va dans ce
cas, affcher les informations sur le produit présent dans cette ligne de commande. Voilà qui
est beaucoup plus intéressant.
Cette fois-ci, nous allons affcher le formulaire sous forme « Tabulaire ». Comme ce
formulaire va contenir la liste des lignes d’une commande, c’est la meilleure façon d’affcher
une liste.
Page 35 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Dans l’en-tête se trouvent les titres des colonnes, et dans le détail, les lignes du formulaire.
Une fois ouvert, il aura cet aspect :
Nous sommes bien d’accord, ce formulaire affche le détail de toutes les commandes. Comme
on peut le voir dans la ère
1 colonne, il concerne plusieurs commandes.
Bien, maintenant, nous allons ajouter un contrôle dans ce formulaire pour calculer le montant
TTC de chaque ligne :
Zone de texte
Intitulé
Page 36 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Nous avons a jouté deux contrôles : un contrôle « Intitulé » pour affcher l’en-tête de le
colonne, et un contrôle « Zone de Texte » dans lequel on va calculer le montant TTC.
Pour calculer le montant TTC, on affche les propriétés du contrôle et dans la propriété
« Source » de l’onglet « Données », on tape la formule de calcul :
Ca marche !
Page 37 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Plus fort, maintenant, nous allons affcher le montant total commandé. Nous sommes toujours
d'accord, le montant total va être le montant total pour toutes les commandes, notre formulaire
pour l’instant ne fait pas de distinction entre les commandes.
Vous avez pu remarquer que le formulaire a en plus de l’en-tête et du détail, une partie « Pied
de formulaire ». Cette partie ne sera affchée que en bas du formulaire, une fois toutes les
lignes affchées. Comme précédemment, nous mettons dans cette partie du formulaire un
contrôle « Zone de Texte » dans lequel nous allons faire le calcul de la somme.
Que contient la formule ? La même que tout à l’heure, mais nous avons ajouté le mot-clef
« somme » avant : Access va calculer la somme de toutes les lignes ici.
Page 38 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Arrivé ici, nous avons notre formulaire « facture » qui contient les informations générales sur
la commande et le formulaire « super ligne commande » qui contient les détails de toutes les
commandes. Il serait bien de pouvoir insérer ce formulaire dans le premier et de lui faire
affcher seulement les lignes commandes correspondant à la commande choisie.
Pour cela, on v a rouvrir notre formulaire « facture » et poser dessus un contrôle « Sous-
Formulaire ». L’assistant suivant s’affche alors :
Access nous demande à partir de quoi il va affcher ce sous-formulaire ? d’une table ou d’un
formulaire existant déjà ? Nous choisissons la deuxième solution et nous choisissons notre
formulaire « super lignes commande ».
Page 39 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
C’est ici que tout se fait. Il va falloir indiquer à Access quel est le rapport entre le formulaire
et le sous formulaire qu’il contient. Si on se contentait d’insérer le sous formulaire tel quel
dans le formulaire, il continuerait à affcher tout le temps la totalité des lignes commandes
quelle que soit la commande affchée dans le formulaire principal.
Nous voulons qu’il affche dans le sous-formulaire les lignes commande correspondant à la
commande affchée dans le formulaire principal.
Quel est le rapport entre les deux ? Comment faire une relation entre les deux ? Simplement :
le formulaire contient le numéro de la commande en cours, le sous-formulaire contient pour
chaque ligne de commande affchée le numéro de la commande concernée. Il va donc falloir
dire à Access que les lignes affchées dans le sous formulaire vont être celles dont le numéro
de commande est celui qui est affché dans le formulaire.
Pour cela, on indique dans la colonne de gauche quel est le champ qui contient le numéro de
commande dans le formulaire principal et quel est le champ qui contient aussi un numéro de
commande dans le sous-formulaire.
Page 40 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Page 41 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Vous avez, pour une commande donnée en haut, son contenu exact et son montant. Vous
noterez que le numéro de commande est répété pour chaque ligne, vous pouvez, comme il est
inutile maintenant puisque déjà présent dans l’en-tête, le supprimer du formulaire.
Page 42 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Voilà pour les sous-formulaires. Il existe une méthode plus simple pour faire ce que nous
venons de faire. Il sufft pour cela, d’abord de bien relier les tables entre elles, ensuite
lorsqu’on crée le premier formulaire de mettre toutes les champs de toutes les tables
concernées dans le même formulaire : n° de commande, n° de client, date venant de la table
« Commande », nom, prénom, adresse venant de la table « Client », n° de commande, n° de
produit, quantité venant de la table « Lignes-commande » et libellé, prix unitaire et tva
venant de la table « Produits».
Et là, ô magie ! Access a deviné tout seul ce que nous voulions faire (grâce quand même aux
relations), et nous propose de faire tout seul ce que nous avons fait avant. Vous remarquez
que l’exemple qu’il nous propose à droite ressemble étrangement à ce que nous avons fait « à
la main ».
Page 43 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Ici on nomme le formulaire, vous pouvez noter qu’il a crée tout seul le sous formulaire et
qu’il en profte pour nous demander son nom.
Page 44 sur 45
Cours ACCESS les Formulaires / Sous-Formulaires
Et voilà le travail ! En cinq secondes, il a fait ce qui nous a pris beaucoup de temps !
Il nous faudra simplement ajouter ensuite dans le sous formulaire le calcul des montant TTC
et le montant total.
Comme quoi, si les relations sont bien faites, Access fait les trois quart du boulot tout seul.
Ici se termine l’histoire des formulaires. Il reste d’autres contrôles comme les boutons
bascule, les images, les objets OLE, etc… Nous ne les utiliserons pas souvent.
Page 45 sur 45