![]()
Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données procd.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici
| La dernière fois, nous avons vu que les requêtes permettent de faire des calculs : Il est possible, tout comme Excel, d'utiliser des champs existants : [SalaireMensuel], des champs dynamiques renseignés lors du lancement de la requête : [Prime] et de simples chiffres : 0.0505. Nous avons vu que, contrairement à Excel, Access n'accepte pas du tout de laisser s'écraser ses formules de requêtes avec des données. Cette possibilité de calculs fait littéralement exploser les possibilités des requêtes. |
| Dans cette leçon, nous allons abandonner les requêtes, bien que nous n'avons pas du tout tout vu en ce qui les concerne, pour nous intéresser au 3ème grand objet d'Access : Les formulaires |
Les tables servent à STOCKER les données, les requêtes servent à EXTRAIRE les données, et faire des calculs, les formulaires vont servir à SAISIR les données
Oui, mais pas de manière vraiment conviviale... Ce ne sont que des colonnes de type Excel... Et, dites-moi si je me trompe, mais si vous avez l'habitude d'utiliser de grandes feuilles de calcul Excel, et que tout à coup vous partez en vacances et que vos collègues, ou un apprenti prennent plus ou moins votre place, vous n'avez pas tellement envie de leur laisser libre accès à vos précieuses feuilles de calcul, non ?
C'est exactement à ça que vont servir les formulaires !
C'est à dire que vous allez pouvoir construire une jolie interface graphique avec des listes déroulantes, des boutons, enfin bref : Une superbe mise en page des données qui va vous permettre de laisser des gens qui s'y connaissent moins bien que vous saisir simplement ou effacer, ou modifier des données dans vos tables sans vraiment de risque d'erreur !
Pour mieux illustrer ce que je voulais vous dire, dans Access, allez dans le menu Outils/Options, et cliquez sur l'onglet "Feuille de données" :

N'est-ce pas très sympathique de choisir ses options dans un cadre aussi agréable que celui-ci ?
Voilà ce que sont les formulaires.
Cliquez sur Formulaires, et sur Nouveau : 
Dans la boîte de dialogue qui apparait, choisissez "Formulaire instantané :
Colonnes", dans la liste déroulante du bas, choisissez "T_Celebrite", et cliquez
sur OK :
REMARQUE : Dans la liste déroulante du bas, ou vous avez choisi T_Celebrite, vous avez constaté que les tables et les requêtes étaient mélangées dans la même liste : Grâce au fait que nous avons commencé toutes nos tables par T et toures nos requêtes par R, comme dans cette liste, tout est rangé par ordre alphabétique, les tables sont naturellement séparées des requêtes... C'est aussi simple que ça !
Dès que vous avez cliqué sur OK, vous voici maintenant l'heureux propriétaire de votre premier formulaire :

Il est possible que vous n'obteniez pas un formulaire tout gris comme moi, mais avec un fond coloré, et l'apparence des champs diffère quelque peu. Ne vous en faites pas, ce n'est pas très important, nous verrons plus tard d'ou ça vient.
Constatez quelques imperfections au sein de mon formulaire : La date de naissance ne tient tout juste pas dans sa zone, l'étiquette "Remarques éventuelles" a été un peu tronqué, à l'inverse, d'autres champs sont manifestement un peu trop larges, comme le salaire mensuel par exemple.
REMARQUE IMPORTANTE : Sure certaines versions d'Access 97, lorsque vous demandez ce même assistant formulaire, il est possible qu'il "oublie" de vous installer les listes déroulantes (Titre, Domaine, Pas et Etat civil), ainsi que la case à cocher qu'il vous transforme en simple zone de texte Oui/Non. C'est un bug... Si ça vous est arrivé, ce n'est pas grave pour l'instant, laissez comme ça.
Nous allons commencer par nous déplacer à l'intérieur de notre formulaire : Vous constatez que contrairement aux tables, vous n'avez sous les yeux qu'un seul enregistrement : Le premier (Napoléon Bonaparte)
Bon, vous constatez que vous pouvez cliquer dans n'importe quel champ. Pour
utiliser le clavier, vous appuyer sur la touche tabulation
: Vous passez de
Titre à nom, ensuite à prénom, etc. Quand vous arrivez sur le dernier champ
(Remarques éventuelles), et que vous appuyez encore une fois sur tabulation
, vous
arrivez au premier champ du 2ème enregistrement (Madame de Carole Bouquet). Pour
revenir en arrière champ par champ, vous appuyez sur MAJUSCULE-Tabulation (![]()
).
En utilisant les touches PAGE UP
et PAGE DOWN
, vous
vous déplacez directement d'un enregistrement à l'autre.
Allez sur le 3ème enregistrement (C'est Georges Brassens normalement). En dessous de votre formulaire, vous voyez ce qu'on appelle les boutons de déplacement :
![]()
|
A |
Veut simplement dire "Enregistrement" |
|
B |
Permet d'aller directement au premier enregistrement (Ici,
c'est Napoléon). Equivalent clavier : CTRL/HOME (![]() |
|
C |
Permet de remonter d'un enregsitrement (équivalent à PAGE
UP |
|
D |
Signifie que nous sommes sur le 3ème enregistrement (Ce
n'est pas d'une utilité transcendantale). Vous pouvez aller directement au
82ème enregistrement directement simplement en écrivant 82 à la place de
3, et appuyez sur ENTER |
|
E |
Permet d'avancer d'un enregistrement (équivalent à PAGE
DOWN |
|
F |
Permet d'aller directement sur le dernier enregistrement
(équivalence clavier : CTRL END : ![]() |
|
G |
Permet d'aller sur un nouvel enregistrement (Dans le but de créer un nouveau client) |
|
H |
Donne le nombre d'enregistrements total du formulaire. Attention : Si vous cliquez simplement sur G, il vous indiquera "Enr. 101 sur 101", même si vous n'avez encore rien écrit |
Absolument oui. Essayons : Triez les enregistrements par ordre alphabétique du prénom. Vous vous souvenez ? il suffit de cliquer avec le bouton droit de la souris sur le prénom, et de choisisr "Tri croissant" (c'était à la leçon 19)
Maintenant, le premier enregistrement est Coluche (il n'a pas de prénom), suivi de Fernandel, Dave, Hardi, Bourvil (pas de prénom non plus), et ça continue avec AL pacino, ALBERTO tomba, etc... Le dernier est bien ZINEDINE zidane ?
Bien entendu. Essayez : Demandez les gens qui gagnent plus de 28000 francs
par mois : Vous devriez obtenir 8 enregistrements :
. Constatez qu'il a,
comme dans les tables, ajouté (Filtré) à côté de 8. Vous pouvez bien entendu les
trier ensuite par ordre du plus pauvre au plus riche, ou par ordre alphabétique,
ou même redemander à a^fficher tous les enregistrements...
Oui. D'ailleurs, j'irai même plus loin, nous SOMMES dans la table T_Celebrite.
Si. En fait, le formulaire n'est qu'une sorte de filtre sur la table : Les requêtes étaient des filtres "techniques", et bien, les formulaires sont des filtres "esthétiques". Vous vous rappelez à la leçon 21 ?Avec les requêtes c'était le même principe : Si vous changez les données dans les requêtes, ça change en fait dans la table
Exactement. Faites ce test :
Petite astuce : Vous pouvez toujours travailler avec le clavier, sans jamais utiliser la souris pour modifier les données des formulaires : Même si vous êtes sur une case à cocher : Si vous êtes sur "Decede" (vous vous êtes déplacé jusque là avec la touche tabulation, et un petit liseré gris apparait alors), vous pouvez utiler votre BARRE D'ESPACEMENT pour mettre ou enlever la coche
Evidemment. En fait, les requêtes et les formulaires travaillent vraiment drectement dans les tables.
Comme d'habitude, oui.
Bon, enlevez les XXX à côté de Bonaparte, et faites un simple exercice : Recréez le même formulaire qu'on vient de faire, et sauvez-le cette fois sous F_CelebriteAssistantInstantaneColonne.
Pour supprimer un enregistrement, cliquez dans la zone de sélection de
l'enregistrement sur la gauche de l'écran :
. Quand vous cliquez,
cette zone devient grise foncée :
. A ce moment, vous pouvez effacer un enregistrement
en appuyant sur la touche DELETE
. Essayez : Vous avez
un message d'avertissement :
. Si vous dites oui, vous allez vraiment effacer
l'enregistrement y compris dans la table... Répondez donc non pour éviter celà
(encore que comme vous pouvez retélécharger la
base de données telle qu'elle était au début de cette leçon à tout moment,
ce n'est pas très important)
Voilà. Vous avez tout compris. Je me suis un peu répété simplement parce que comme ce formulaire ne montre qu'un enregistrement à la fois, ce n'était peut être pas si évident de faire la relation.
Oui. Nous pouvons. Nous allons le faire immédiatement. Fermez le formulaire
F_CelebriteAssistantInstantaneColonne que vous venez de recréer, et faites à
nouveau
. Mais cette fois, choisissez "Formulaire instantané Tableau",
et choisissez toujours T_Celebrite, et OK. Voici le résultat :
Exactement. C'est très sympa, mais regardez de plus près : Comem la table comporte un certain nombre de champs, il y a plein de choses tronquées : Le titre n'est pas complet (Monsie, Madam), Le domaine non plus, l'état civil non plus, le salaire mensuel est carrément illisible ainsi que la date de naissance !
L'assistant "Formulaire instantané Tableau" ne travaille pas très bien avec des tables qui ont de nombreux champs
Absolument. Ou alors on peut carrément baser ce formulaire sur une requête qui, elle, ne comporte pas autant de champs que la table ! On va essayer : Fermez ce formulaire totalement moche, et ne le sauvegardez pas. Retournez dans les requêtes et allez visualiser "R_CelebriteCalculSalaireAvecPrime500" Vous vous souvenez ? C'était une requête avec un champ calculé...
Déjà oublié ? Retournez donc jeter un coup d'oeil à la leçon 28 pour vous rafraîchir la mémoire, sinon ça va être difficile.
Alors, maintenant, créez un formulaire "Assistant instantané tableau", et
choisissez "R_CelebriteCalculSalaireAvecPrime500", et OK. Vocii le résultat :

Exactement. Avec votre champ calculé "Salaire avec prime" qui est bien là. Comme dans la requête quoi...
Oui, nous allons remédier à celà bientôt. Pour l'instant ne vous en préoccupez pas.
Evidemment non. Dans la requête non plus. Si vous essayez de changer un
Salaire avec prime, par exemple, essayez de changer les 100000 francs de
Napoléon en 12000 francs, vous ne pouvez pas : Vous avz toujours le message
d'erreur dans la barre d'état en dessous de votre écran : ![]()
Bien sûr : Le formulaire est basé sur la requête, la requête est basée sur la table DONC ce que vous changez dans le formulaire (Ajout, modification, suppression) sera instantanément répercuté dans la table.
Oui. Bon, fermez votre formulaire, et sauvegardez-le sous "F_CelebriteCalculSalaireAvecPrime500AssistantInstantaneTableau"
Oui, mais c'est explicite :
| F_ | pour "Formulaire |
| Celebrite | Ca vient de la table Celebrite |
| CelebriteCalculSalaireAvecPrime500 | En fait ça vient de la requête R_CelebriteCalculSalaireAvecPrime500 |
| CalculSalaireAvecPrime500 | Ca explique le calcul en 2 mots |
| AssistantInstantaneTableau | Pour expliquer comment nous avons fait ce formulaire |
Evitez d'appeler vos formulaires F_1, F_2, F_3, etc. uniquement parce que vous manquez d'imagination ou que vous avez la flemme de leur donner un nom plus explicite, parce que quand vous en aurez 30 ou 40, je vous garantis que vous ne saurez plus quel formulaire fait quoi, et vous allez devenir fou...
Bien, faites un petit exercice : Créez un nouveau formulaire en Assistant Instantané Tableau, basé sur la R_CelebriteCinemaFrancais (Voyez comme le nom de la requête est explicite : Comme elle commence par R, je n'ai pas besoin de vous spécifier que c'est une requête, et le nom est suffisamment évoquateur pour ne pas avoir à le réexpliquer)
Vous n'avez pas tous les enregistrements évidemment : ![]()
Non puisque ça provient de la requête... Or, la requête est complète par rapport à elle-même...
Exactement : Essayez de filtrer tous les "Michel" avec le bouton droit de la souris
Exactement. C'est tout ce que je voulais dire. Bien : fermez ce formulaire, et appelez-le F_CelebriteCinemaFrancais.
Nous allons voir maintenant comment créer un formulaire un petit peu plus
personnalisé... Jusqu'ici nous n'avons pas pu vraiment donner notre grain de
sel. Faites encore une fois Formulaire, Nouveau 
Il n'est pas intéressant : Il va vous concevoir un formulaire qui ressemble esthétiquement à une table : Pas vraiment d'intérêt ici.
Ah celui-là est plus sympa : C'est pour créer un graphique (comme dans Excel) mais on prend directement les données des tables. On verra plus tard les graphiques.
Pour l'utiliser, il faut posséder égaleemnt Excel : Si vous ne savez pas ce que c'est qu'un tableau croisé dynamique, Essayez d'en créer un directement avec Excel (Dans Excel : menu Données/Rapport de tableau croisé dynamique), mais ça sort largement du cadre de ce cours.
Oui : maintenant, vous allez choisir donc
, OK, et "Assistant
formulaire", choisissez comme d'habitude T_Celebrite, et OK.
Vous arrivez dans cette première boîte de dialogue :
. Il s'agit de
sélectionner les champs de votre table qui vont apparaître dans le formulaire.
Bon, dans 99% des cas, nous avons besoin de tous les champs, puisque le but même
du formulaire est de saisir des données. Cliquez donc sur la double flèche
>> et SUIVANT.
La 2ème boîte de dialogue permet de choisir la présentation : 
| Colonne simple | C'est comme le premier formulaire que nous avons créé tout à l'heure : Un seul enregistrement par écran |
| Tabulaire | C'est comme le formulaire instantané tableau : Plusieurs enregistrements sur un même écran |
| Feuille de données | C'est une présentation qui ressemble à une table comme une soeur jumelle : Intérêt très limité |
| Justifié | C'est une présentation que nous n'avons pas encore vue, on ne pouvait pas la choisir dans les formulaires instantanés, c'est seuleemnt ici qu'on peut la sélectionner. |
Afin de se rendre compte de ce qu'est la présentation en Justifié, sélectionnez-là et cliquez sur SUIVANT.
Cette boîte de dialogue est sans doute la plus amusante :
. C'est ici que vous
pouvez choisir l'apparence générale de votre formulaire : Cliquez dans les
différents thèmes : Bleu, expédition, etc. pour vous rendre compte des
différents choix. Si vous travaillez avec Access 97, vous avez d'autres noms et
d'autres choix mais le principe est le même. Et, justement, c'est là que c'est
subtil : Ce que vous allez choisir comme thème maintenant va être mémorisé par
Access, et toutes les prochaines fois que vous allez choisir un formulaire
instantané Tableau ou Colonne simple, il va se rappeler de ce que vous
choisissez maintenant, et vous réappliquera le même thème toutes les fois
suivantes.
Choisissez Fax (International si vous êtes avec Access 97), et cliquez sur SUIVANT
Ceci est la dernière boîte de dialogue :
. Donnez dès maintenant
le nom de votre formulaire : F_CelebriteSemiPersonnalise, et comme il n'y a plus
de bouton Suivant, cliquez sur TERMINER. Voilà :

C'est ça : Ce sont les étiquettes qui sont juste au dessus des champs (Nom qui est au dessus de Bonaparte par exemple). Et un seul enregistrement par écran.
Oui, contrairement au style Tableau, ou parce qu'il affiche plusieurs enregistrements sur un même écran, on ne peut pas avoir trop de champs, ici, ce style de formulaire est particulièrement adapté aux formulaires basés sur des tables qui possèdent un grand nombre de champs sans qu'ils se chevauchent.
Bon, on constate malgré tout des imperfections : Par exemple, le champ contenant la date de naissance est vraiment beaucoup trop large... Mais bon, c'est un détail, mais quand même ce n'est pas très très pratique.
Fermez ce formulaire.
Non. Vous lui avez donné le nom F_CelebriteSemiPersonnalise dans la dernière boîte de dialogue. Il l'a déjà sauvé.
Oui. Essayez : Créez un nouveau formulaire "Formulaire instantané : Colonnes", basé sur T_Fournisseur pour changer.
Oui. C'était pour vous montrer que chaque présentation de formulaire a son importance. Bon fermez ce formulaire sans le sauvegarder.
REMARQUE : Si dans la table, vous avez pris soin d'infdiquer les légendes des champs, les formulaires ensuite basés sur cette table reprennent les légendes des tables, d'ou l'immense intérêt des légendes
| Le formulaire est une interface utilisateur permettant de saisir et de visualiser les données des tables et des requêtes à l'écran de façon esthétique et conviviale. Il existe plusieurs styles de foirmulaires : Les formulaires en colonne (Un seul enregistrement à l'écran) et en tableau (Plusieurs enregistrements à la fois sur l'écran). Tout comme les requêtes, les formulaires puisent directement dans les tables : Tout changement apporté à une donnée (Ajout, suppression, modification) sera immédiatement effective sur la table sous-jacente. Nous avons vu deux manières de faire des formulaires : De manière semi automatique (Assistant formulaire), ou complètement automatique (Assistant instantané colonne ou tableau). |
Pour voir les solutions, il vous suffit de sélectionner le questionnaire ci-dessus : 3 petites étoiles *** apparaîtront en face des bonnes réponses. |
|
Créez une base de données appelée Video.MDB dans laquelle vous allez entrer vos différents filsm que vous avez en cassette vidéo ou DVD. L'exercice consiste à pouvoir saisir vos films convivialement à l'aide d'un formulaire F_Video qui sera un formulaire instantané colonne, sans thème particulier (le formulaire doit être simplement gris, standard) Voici 3 films qui vous allez rentrer à titre d'exemple : (Vous les entrerez DANS LE FORMULAIRE, PAS dans la table) - Le Gendarme à St-Tropez, Film français, Comique,
avec De Funès comme acteur principal. Il dure 95 minutes, il est en
cassette vidéo Pour simplifier, ne créez pas de tables-sattelites pour créer vos listes déroulantes, mais faites les en Local, même si ce n'est pas très "pro" A vous de déterminer quels éléments vous avez besoin (Tables ? Champs? Requêtes ? Formulaires ? Sous-Tables ? Listes déroulantes ? Types de données ? Cases à cocher ? etc.). Pensez à remplir les légendes des champs dans les tables |
Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de procd.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.