Les formulaires et sous-formulaires

Table des matières

I) Présentation	1

II) Créer un formulaire à partir d'une table	1

III) Les contrôles	6

III.A) Le contrôle "Intitulé"	7

III.B) Le contrôle "Zone de Texte"	7

III.C) Le contrôle « Groupe d'options »	9

III.D) Les contrôles « Traits » et « Rectangle »	12

III.E) Les contrôles « Zone de Liste » et « Zone de Liste Modifiable »	12

III.F) Le contrôle « Bouton de commande»	15

III.G) Le contrôles «Sous-Formulaire»	21

Source : http://enseignement.insset.u-picardie.fr/deug/ti/cours/access/

Présentation

Le formulaire va nous permettre d'afficher et de modifier le contenu d'une table de façon bien plus agréable que le mode « feuille de données » qui ne permet qu'un affichage en lignes et colonnes. De plus, le mode «feuille de données» ne permet l'affichage et la modification d'informations ne provenant que d'une seule table.

Le formulaire va nous permettre de manipuler au même endroit des informations provenant de plusieurs tables simultanément : par exemple, dans notre exemple de base de données magasin, nous pourrons avoir un formulaire qui affichera dans la même fenêtre toutes les informations concernant une commande : informations générales sur la commande (provenant de la table «commande», informations sur le client ayant passé cette commande (provenant de la table «clients» et le détail de cette commande (provenant des tables «lignes-commande» et «produits») alors que précédemment, ces données étaient éclatées sur plusieurs feuilles de données. Les informations saisies ou modifiées dans le formulaire seront modifiées dans les tables à partir desquelles le formulaire a été créé.

Créer un formulaire à partir d'une table

Nous allons créer le formulaire associé à la table «clients». Pour créer un formulaire, on se place dans la fenêtre principale d'Access et on clique sur l'onglet «formulaire», puis sur le bouton «nouveau...».

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.

Formulaire Instantané : Ces trois méthodes vont générer rapidement un formulaire à partir d'une table sans nous poser de questions, son aspect sera rudimentaire. nous n'auront pas de grandes possibilités de personnalisation au moment de la création.

Nous allons utiliser la méthode «Assistant Formulaire».

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 affichées dans le formulaire, les modifications ou ajouts que nous ferons dans le formulaire seront répercutées dans cette table :

Nous choisissons ici la table «clients» et on clique sur «OK»

Nous allons choisir ici quels sont les champs de la table que nous voulons voir dans le formulaire, si nous voulons être en mesure de modifier tous les champs de chaque enregistrement de la table, il faudra tous les choisir, si, par exemple, notre formulaire ne doit servir qu'a afficher 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. (Pour remplir ces champs il faudra aller dans la feuille de données ou créer un formulaire de saisie).

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»

On choisit ici la façon d'afficher les champs choisis dans le formulaire, il y a six façons d'afficher les champs.

Colonne simple : Le formulaire va afficher les champs sous la forme : «nom du champ : contenu du champ». Le formulaire va afficher les champs d'un enregistrement à la fois.

Tabulaire : Le formulaire va afficher les champs choisis sous la forme d'un tableau : en haut du formulaire vont être affichés les noms des champs, et, en dessous sous forme de tableau, le contenu, avec un enregistrement par ligne. Cette façon d'afficher 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 affichés ici que les champs sélectionnés dans l'étape précédente.

Justifié : Va afficher les champs choisis les un à la suite des autres, ce n'est pas très beau (enfin c'est une question de goût). Nous utiliserons le plus souvent (voire tout le temps) le mode « Colonne simple » ou le mode « Tabulaire ».

Tableau croisé dynamique : Crée un tableau qui facilité l'analyse interactive des données.

Graphique croisé dynamique : Crée un graphique qui facilité l'analyse interactive des données.

Nous choisissons ici le mode « Colonne Simple », puis on clique sur « Suivant »

On choisit ici le "décor" que l'on va donner au formulaire, il existe une dizaine de décors prédéfinis, bien sur, on pourra, par la suite, modifier un décor choisi ici. Choisissez celui qui vous plaît le plus

Enfin, 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éé.

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 affiche 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 modifié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 fléchés en bas du formulaire

Pour modifier l'aspect et le contenu du formulaire, on clique soit sur le bouton « Modifier » dans l'onglet « Formulaires » de la fenêtre principale d'Access, soit sur l'icône

On passe alors en mode modification

Le formulaire est affiché en mode modification (à gauche) et une boîte à outils s'affiche (à 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 affiché 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éfinir la façon dont vont être affiché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 affiché un tableau de nombres, il pourra afficher la somme de ces nombres.

Tout ce qui se trouve sur le formulaire s'appelle un contrôle : un texte affiché 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 affiché dans le formulaire est un contrôle. La boîte à outils à gauche affiche tous les contrôles possibles que l'on peut placer sur un formulaire. Ils sont assez nombreux et permettent d'afficher tous les types d'informations possibles (même du son ou de la vidéo !).

Les contrôle peuvent être divisés en trois catégories :

Les contrôles indépendants : Ils n'ont aucune relation avec la table qui est liée au formulaire (n'oubliez pas que chaque formulaire manipule des informations provenant d'une table de la base). Par exemple une image placée sur le formulaire n'a pas de relation avec la table, c'est un contrôle indépendant, du texte affiché sur le formulaire (on pourrait par exemple placer un titre "Formulaire Clients" en haut du formulaire), ce texte ne provient pas de la table, il n'a aucun rapport avec elle, c'est donc un contrôle indépendant.

Les contrôles dépendants : Les contrôles dépendants sont liés à la table liée au formulaire, ils vont afficher le contenu d'un champ, toute modification dans ce contrôle ira modifier le champ auquel il est lié dans la table :
Dans notre exemple, le contrôle à droite est dépendant du champ "nom" de la table "Clients", il affichera, pour l'enregistrement courant, le contenu du champ "nom". Toute modification dans ce contrôle ira modifier le contenu du champ "nom" de la table "Client" pour l'enregistrement en cours.

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

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

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 fichier sonore Wav, une vidéo AVI, un fichier au format Word, une page HTML, etc.

Pour tous les contrôles placés sur le formulaire, en cliquant dessus avec le bouton droit, on obtient le menu ci contre :

Ce menu permet de modifier l'aspect (couleur, choix de la police, effets, etc.) ou le comportement (format d'affichage, masque de saisie, etc.) du contrôle, l'option "Propriétés" du menu permet l'affichage et la modification de toutes les caractéristiques du contrôle. Les propriétés varient selon le type de contrôle.

Le contrôle "Intitulé"

Il va être utilisé pour afficher du texte "statique", c'est à dire qui ne variera pas d'un enregistrement à l'autre, c'est donc un contrôle indépendant, qui servira typiquement à afficher par exemple le titre du formulaire, ou le nom d'un champ dont le contenu sera affiché à côté dans un contrôle dépendant. Dans notre formulaire, tous les noms des champs affichés à gauche sont des contrôles "Intitulé", ce sont des textes statiques ne dépendant de rien, on peut modifier ce qui est affiché sans affecter quoi que ce soit dans la table associée au formulaire.

Le contrôle "Zone de Texte"

Ce contrôle est l'un des contrôles les plus utilisés dans les 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.

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 présente, à priori, peu 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. Pour relier un contrôle à un champ, procédez ainsi :

Cliquez dans la boîte à outils sur le contrôle zone de texte

Placez le contrôle sur le formulaire et dimensionnez-le

Access crée en fait DEUX contrôles : il suppose, à juste titre, que l'on va lier ce contrôle avec un champ, il crée donc un contrôle «Intitulé» qu'on à vu avant qui contient le texte «Texte xx» (où xx est un nombre quelconque) et notre fameux contrôle «Zone de Texte» qui contient la mention «indépendant».

On va supposer ici qu'on veut lier ce contrôle au champ «Nom» de notre table Clients (même si il se trouve déjà sur le formulaire, c'est juste un exemple)

A la place de «Texte xx», on va taper «Nom :» (histoire de savoir ce qu'il va falloir saisir dans le contrôle d'à côté)

Vous avez pu noter la mention «indépendant», ce qui signifie 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éfinir 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 affichées dans le contrôle.

Il y a une flèche qui descend à droite, si on clique dessus, tous les champs de la (ou des) table(s) liés au formulaire vont s'afficher, on choisi dedans le champ «Nom», et on ferme la fenêtre de propriétés.

Le contrôle n'est plus indépendant, à la place de la mention «Indépendant», il est affiché «Nom», c'est-à-dire le nom du champ avec lequel il va être lié. A partir de maintenant, lors de l'affichage d'un enregistrement dans le formulaire, le nom du client sera affiché dans ce contrôle, et toute modification de son contenu sera répercutée dans la table.

Le contrôle « Groupe d'options »

Le contrôle «Groupe d'option» va servir a faire un choix limité 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 créer un formulaire «Commandes» liée à cette table. Nous ajoutons ensuite un contrôle «Groupe d'options»

Nous entrons ici les différents noms des vendeurs et nous cliquons sur « Suivant »

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 non le nom du vendeur qui va être sauvé dans le champ «num_vendeur». On indique ici, pour chaque vendeur, son numéro.

On indique enfin à 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.

On choisit l'aspect de notre groupe d'options

On le nomme, et c'est terminé :

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.

Les contrôles « Traits » et « Rectangle »

Ces deux types de contrôles permettent de tracer des traits ou des rectangles sur le formulaire pour encadrer ou souligner. Essayez !

Les contrôles « Zone de Liste » et « Zone de Liste Modifiable »

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. Pour cela, on procède ainsi :

Ouvrir le formulaire
«Commande» en
modification

Choisir le formulaire «Zone de Liste» dans la boîte à outils

Le placer sur le formulaire

Il y a trois façon de générer cette zone de liste, comme pour la feuille de données, nous voulons afficher 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

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

On choisit ici les champs qui seront affichés dans la zone de liste, nous pouvons décider par exemple que seuls les nom et ville sont nécessaires

Access nous affiche à quoi va ressembler notre zone de liste.

Notez que l'option « Colonne clé cachée » est cochée, qu'est-ce que cela signifie ? 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» afin 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'identifier 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».

On va indiquer à Access dans quel champ de la table liée au formulaire on veut stocker cette valeur (ici n° client)

On nomme la zone de liste, et c'est terminé

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

Le contrôle «Zone de liste modifiable» 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 flèche pour le faire apparaître) au lieu d'être fixe. Essayez le...

Le contrôle « Bouton de commande»

Ce contrôle va permettre d'exécuter simplement en cliquant dessus n'importe quelle action d'Access. Toutes les actions possibles d'Access, normalement accessibles par les menus déroulant ou par la barre d'icônes peuvent être reproduites par l'intermédiaire de ce contrôle. Pour comprendre son fonctionnement, nous allons créer un nouveau formulaire vide dans lequel nous allons simplement poser un contrôle «Bouton de commande». Dès que le contrôle est posé sur le formulaire, l'assistant suivant apparaît :

Il y a deux colonnes dans cet assistant :

Le menu Catégories affiche les principales fonctions d'Access :

Déplacement entre enregistrements : Pour se positionner sur un enregistrement précis de la table.

Opération sur enregistrement : Ajouter, Supprimer, Copier, Imprimer un enregistrement

Opération sur formulaire : Ouvrir un formulaire, le fermer, appliquer un filtre dessus, l'imprimer

Opérations sur Etat : Imprimer, Sauver

Applications : Exécuter une autre application comme Word ou Excel

Divers : Exécuter une macro, Imprimer une table complète, ...

Comme vous pouvez le voir, toutes les actions possibles d'Access sont réunies ici, il suffit 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».

Nous choisissons donc la Catégorie « Opération sur Formulaire » puis l'action «Ouvrir un formulaire»

Access nous demande alors quel formulaire nous voulons ouvrir.

(ne vous préoccupez pas des noms des formulaires affichés ici, ils ne correspondent pas à nos exemples)

On choisit « Clients »

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

On peut ici choisir ce qui va être affiché dans le contrôle, par défaut Access propose un icône, on peut afficher à la place un texte ou choisir un autre icône

On nomme le contrôle et c'est terminé.

Notre formulaire ressemble à ça

Quand on cliquera sur le bouton de commande créé, le formulaire «Clients» s'ouvrira et affichera tous les clients de la table «Clients».

Nous pouvons améliorer ce formulaire grâce à quelques contrôles et en faire quelque chose de plus intéressant : Nous allons afficher 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'afficher quand on cliquera dessus n'affichera 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'afficher le numéro, le nom et le prénom des clients : le fait d'en choisir un dans cette liste ne modifiera aucune table. Nous posons ensuite un contrôle «Bouton de Commande» sur le formulaire.

Nous répétons les étapes précédentes, mais en nous arrêtant à la question suivante :

Nous avions, précédemment, affiché tous les enregistrements de la table «Clients» dans le formulaire «Clients». Nous voulons maintenant, afficher dans ce formulaire que le seul client correspondant à celui que nous avons choisi dans la liste. La fenêtre suivante s'affiche :

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 modifiable qui s'appelle «Modifiable3» (le nom est choisi par Access lorsqu'on a créé le contrôle. Il peut être différent pour vous).

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'affichera pas. Il ne l'affichera pas mais il sera toujours présent dans la liste (caché!).

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.

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 : « Affiche dans le formulaire les enregistrements dont le champ « nclient » est égal à ce qu'on vient de cliquer dans la liste ».

On choisit ensuite l'icône et on doit se retrouver avec quelque chose comme ça :

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

La liste des clients s'affiche (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.

Le contrôles «Sous-Formulaire»

Grâce à ce contrôle, nous allons pouvoir afficher des formulaires imbriqués dans d'autres, par exemple pour afficher une liste d'enregistrement correspondant à un seul enregistrement : pour une commande donnée, on pourra, dans le même formulaire, afficher toutes les lignes de cette commande. Le but de la manoeuvre va être de réaliser un formulaire complexe que l'on va nommer «Facture». Il contiendra toutes les informations relatives à une commande : en en-tête le numéro de la commande, sa date, les informations sur le client, et en dessous le détail de cette commande, avec en bas le montant total de la commande. Pour cela, on crée le formulaire «facture». Ce formulaire va être l'en-tête de notre formulaire final : 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 ».

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

Les relations étant correctement faites, Access, remarque qu'à partir des champs choisis précédemment, on peut faire deux choses :

Soit afficher les données par clients, c'est à dire que, avec les champs choisis, on peut afficher un client et en dessous afficher toutes les commandes qu'il a passé.

Soit afficher les données par commande, c'est à dire que pour une commande choisie, on va afficher les informations concernant le client qui a fait cette commande. A droite s'affiche la façon dont les données seront affichées en fonction du mode qu'on aura choisi. J'espère que vous aurez remarqué que la deuxième proposition est la bonne, nous la choisissons donc.

Les étapes suivantes sont classiques : choix de la disposition, de la décoration et du nom, on arrive à la fin à quelque chose comme ça :

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!

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»

Une fois de plus, Access se rend compte qu'avec les champs que nous avons choisi, nous pouvons afficher les données sous deux formes : soit par produit, dans ce cas il va afficher 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, afficher les informations sur le produit présent dans cette ligne de commande. Voilà qui est beaucoup plus intéressant.

Cette fois-ci, nous allons afficher le formulaire sous forme «Tabulaire». Comme ce formulaire va contenir la liste des lignes d'une commande, c'est la meilleure façon d'afficher une liste.

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

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 affiche le détail de toutes les commandes. Comme on peut le voir dans la 1ère colonne, il concerne plusieurs commandes.

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

Nous avons ajouté deux contrôles : un contrôle « Intitulé » pour afficher 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 affiche les propriétés du contrôle et dans la propriété «Source» de l'onglet «Données», on tape la formule de calcul.

La formule de calcul est : ( [prix unitaire] + ( [prix unitaire] * [tva] / 100 ) ) * [quantite]

Si on affiche maintenant le formulaire, on obtient :

Ca marche !

Plus fort, maintenant, nous allons afficher le montant total commandé. Nous sommes toujours d'accord, le montant total va être le montant total pour toutes les commandes, notre formulaire pour 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 affichée que en bas du formulaire, une fois toutes les lignes affiché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.

Et voilà le travail : en bas du formulaire apparaît la somme totale.

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 afficher seulement les lignes commandes correspondant à la commande choisie.

Pour cela, on va rouvrir notre formulaire «facture» et poser dessus un contrôle «Sous-Formulaire».

L'assistant suivant s'affiche alors :

Access nous demande à partir de quoi il va afficher 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».

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 à afficher tout le temps la totalité des lignes commandes quelle que soit la commande affichée dans le formulaire principal.

Nous voulons qu'il affiche dans le sous-formulaire les lignes commande correspondant à la commande affiché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 affichée le numéro de la commande concernée. Il va donc falloir dire à Access que les lignes affichées dans le sous formulaire vont être celles dont le numéro de commande est celui qui est affiché dans le formulaire.

Pour cela, on indique dans la colonne de gauche quel est le champ qui contient le 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.

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.

Il existe une méthode plus simple pour faire ce que nous venons de faire. Il suffit 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».

Access affiche alors :

Et là, 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 ».

Il nous propose le format d'affichage

Ici on nomme le formulaire, vous pouvez noter qu'il a crée tout seul le sous formulaire et qu'il en profite pour nous demander son nom.

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 travail tout seul!

IUT Digne les bains	Section Géomatique	Formulaires

P. AUSSAGUEL	Version du 17/10/2003 - formulaires.sxw	Page 31

Pierre AUSSAGUEL

2003-09-28T17:48:54