1. Exercice Access: facturation.Cet exercice Access de cration
d'une base de donne est reprise des formations d'YBET informatique
donnes enentreprise ou dans notre salle de formation informatique.
L'accs la base de donne cre dans cet exemple n'est accessible
qu'aux participants aux formations. Par contre, les copies d'cran
et textes explicatifs devraient permettre un utilisateur normal de
refaire la base de donne.
1. Introduction.Dans la premire partie de la formation Access,
nous avons vus bon nombre de fonctionnalits, sans nous attacher une
relle cration d'une base de donne. Cette partie du cours Access
utilise les 13 premiers chapitres de la formation. Ce chapitre va
nous permettre de mettre de l'ordre dans nos ides par un exercice
Access: une facturation. Dans cet exemple, je me rfrerais
systmatiquement aux chapitres concerns de la formation. Nanmoins,
les utilisateurs avancs Access pourront directement crer cette
facturation. Cet exercice analyse l'entiret de la cration d'une
base de donnes Access, depuis le choix des champs, jusqu'aux
contraintes, en expliquant systmatiquement pourquoi on choisi telle
ou telle solution. J'essayerais d'analyser chaque fois les
diffrentes possibilits.
2. L'exerciceCet exemple d'utilisation d'une base de donne
Access va nous permettre de crer la facturation d'une petite
entreprise. Cet exemple est donc thorique puisque des applications
(gestion commerciale, point de vente, ...) sont dj dveloppes, pour
des sommes modiques (Ciel Gestion commercial revient 299 hTVA). Les
desiderata de cette base de donne sont: 1. Liste des clients 2.
Liste des produits 3. Reprise automatique des prix, description,
taux TVA de la fiche produit dans la facture en fonction du code du
produit. 4. Possibilit de modifier les prix en cours de facturation
5. Blocages des entres de nouveaux clients, produits en cours de
facturation. 6. Etats, impressions et formulaires d'entres 7. et
d'autres qui vont intervenir en cours de choix de nos contraintes
et limitations Dans la partie "Cours Access avanc", nous ajouterons
la gestion de stock
3. Les sujets abordsL'exercice va de paire avec la formation
Access et termine la premire partie du cours YBET informatique.
Nous verrons au cours des diffrents parties: 1. 2. 3. 4. 5. 6. 7.
Cration de tables, choix des champs, contraintes Base de donne
relationnelle. Listes de choix Cration des requtes, champs calculs
Cration d'un formulaire, sous-formulaire Utilisation des macros de
base (menu d'entre de la facturation) Utilisation de macros et
procdures vnementielles
La suite > 2. Cration des tables, choix des champs Access
1. Introduction.La premire partie de cet exercice Access bas sur
une facturation va tre de dterminer quelles tables sont crer, quels
champs utiliser. Bref, c'est la partie la plus difficile de
Microsoft Access puisque les choix de cette partie de l'exercice
vont conditionner tous les dveloppements de notre application de
facturation, et mme de limiter ou d'tendre les fonctionnalits de
notre base de donne.
2. Choix des tables AccessPour cette facturation, nous pourrions
utiliser une seule table mais cette solution est peu pratique. En
effet, chaque ligne de facture (produit vendu), nous devrons
remplir tous les champs: coordonnes du client, date, ... La
solution rside dans une base de donne relationnelle. Notre
application va rassembler 4 tables qui seront relies: 1. La table
facture va reprendre l'en-tte de facture, soit le numro, la date,
le client 2. La table Client va reprendre les coordonnes du client
3. La table Contenu facture va reprendre les lignes de la facture,
soit les quantits, prix, taux TVA, ... 4. La table produit reprend
notre liste de produits. Le choix des tables n'est pas du au
hasard. Nous pourrions reprendre les tables facture et client dans
une mme table. Nanmoins, ceci nous obligerait retaper les
coordonnes du client chaque nouvelle facture. De mme, dans le cas o
nous tapons chaque fois la description, prix, ..., nous pouvons
supprimer la table produits. Vous pouvez vous rfrer au au cours
Access en ligne pour les types de champs et pour les proprits des
champs
3. Choix des champs dans la table facture.Cette table est la
principale de notre exercice Access, c'est le point central de
notre application de facturation. Elle reprend: 1. 2. 3. 4. Numro
de facture Date de la facture Code du client donnes annexe tel que
l'chance, ... Ces donnes ne seront pas vues dans cet exercice
Types, contraintes et proprits des champs.
Numro de facture:
Taille du champ peut tre entier long. Comme le numro de facture
est obligatoire et unique, plusieurs possibilits possibles: 1. null
interdit et index sans doublons 2. Cl primaire Le choix portera
consquence puisque dans le deuxime cas, le numro sera
automatiquement incrment. Par contre, la remise zro ncessite la
suppression et la reconstruction du champDate facture:
Le format date peut tre choisi personnellement, il ne gre que
l'affichage. Par facilite, choisissons la valeur par dfaut comme la
date actuelle en slectionnant la fonction Access maintenant() De
nouveau, null interdit L'indexation n'est pas obligatoire, mais
conseille dans certains cas.Code Client:
Ce champ va reprendre les mmes contraintes que dans la table
client. Par facilit, slectionnons la taille 10 caractres. Je laisse
chacun le soin de crer le masque de saisie en fonction de sa propre
entreprise.
Nous devons autoriser les doublons. Par contre, l'indexation
fera gagner du temps dans les recherches futures. Null interdit
n'est pas obligatoire mais: . Null interdit et chane vide autorise
NON oblige rentrer un code client correct . Dans le cas contraire,
vous pouvez utiliser un client vide pour une vente comptoir par
exemple.
4. Choix des champs dans la table ClientsLa deuxime table va
reprendre les coordonnes du client. La liaison avec la table
facture ci-dessus est le code du client. Les proprits du champ
doivent donc tre strictement identiques dans les 2 tables. Vous
pouvez donner un nom diffrent au code client dans chaque table,
mais ce n'est pas conseill. Ils seront distingus par le nom de la
table ultrieurement. Pour viter d'encoder 2 codes client pour la
mme entreprise , le champ code client sera utilis comme cl
primaire. Les proprits des autres champs sont normal, mais vous
pouvez imposer que toutes les coordonnes soient remplies (ou non).
Pour viter 2 codes diffrents pour le mme client, vous pouvez
utiliser le code TVA comme "index sans doublon". Dans ce cas, il ne
sera pas possible de rentrer 2 clients diffrents non assujettis la
TVA. Par contre, vous pouvez utiliser cette proprit pour le nom du
client par exemple. Vous le voyez, les possibilits de contraintes
des champs de la table clients sont nombreuses, mais chacune
imposera des limitations futures.
5. Choix des champs dans la table Contenu factureCette table
reprend toutes les lignes de la facture. Nous pourrions la relier
en relationnelle notre table client (par le code client), mais
finalement, la relation ne se fait que vers l'en-tte de facture. Le
numro de la facture va donc servir de relation avec la facture ne
elle-mme. Le contenu en lui-mme doit obligatoirement reprendre: 1.
le code du produit 2. la quantit. Le choix des autres champs est
plus dlicat, mais les renseignements obligatoires sur le document
commercial est: le prix unitaire, le taux TVA, la description. Ces
3 champs peuvent tre repris de la table produits directement ou
recopis lors de la cration de la facture de cette table. Si nous
reprenons directement les proprits de la table produit, un
changement de prix dans notre table produit influencera directement
l'impression d'anciennes factures. De plus, il ne sera pas possible
de modifier le prix ou la description en cours de facturation. La
solution consiste donc effectivement crer les champs Prix,
description et taux de TVA. Lors de l'introduction de la ligne de
facture, nous utiliserons une procdure vnementielle pour rcuprer
les donnes de la table produits par dfaut (mais nous pourrons faire
des modifications ventuelles).Changer le prix dans la table produit
ne modifiera pas le prix dans les anciennes factures. Nous
utiliserons des champs calculs pour rcuprer le total hors TVA de
chaque ligne D'autres champs peuvent tre ajouts, comme la rduction
par ligne. Attention, l'utilisation du format % pose quelques
problmes, mais vous pouvez utiliser un format nombre standard avec
des contraintes, ou mme une liste de choix pour le taux de TVA.
C'est la solution adopte ici avec une table reprenant les taux de
TVA.
6. La table produitNous reprenons forcment le champ Code
produit, avec des proprits identiques celui de la table "Contenu
facture". Comme le contenu de ce champ doit tre unique dans la
table et qu'il doit tre index, nous allons dsigner ce champ comme
cl primaire. Le reste des champs reprend la description, le prix et
le taux de TVA. Ceux ci sont normalement obligatoires.
7. Questions sur cet exercice?1. Pourquoi avoir utilis une
structure de base de donne relationnelle dans cet exercice? 2. Quel
est l'avantage d'utiliser le champ "Code client" comme cl primaire
dans la table Clients? Pourquoi ne puis-je pas utiliser le numro de
facture comme cl primaire dans la table "Contenu facture"? 3. Quel
intrt de crer ou non les champs descriptions, prix et taux de TVA
dans la table Access "Contenu facture"? 4. Dans les proprits du
champ "code produit" de la table "Contenu facture", quelle
avantages (ou dfaut) de ne pas rendre le code produit
obligatoire?
Exercice Access: requte et champ calcul.Nous avons cr les champs
de notre facturation, avec quelques contraintes. Cette partie de
l'exercice de la formation va utiliser les requtes Access et les
champs calculs.
1. Calcul dans les champs.Lors de la cration de la table
"Contenu Facture", nous n'avons pas cr de champ reprenant le
montant total de la ligne. Si a avait t le cas, nous aurions du
utiliser la condition valeur par dfaut et valide si pour garantir
le rsultat. Pour rappel, un calcul Access peut se faire dans les
requtes ou dans les formulaires et tats. Comme le champ total
(rduction comprise) va tre utilis dans tous les formulaires et tats
utilisant les donnes de "Contenu facture", nous allons utiliser la
solution requte. Crons une requte Access en mode assistant en
utilisant la table "Contenu Facture". Ajoutons le champ calcul
total: [quantite]*[prix]*(1-[Rduction]/100). Attention si vous avez
utilis des noms de champs diffrents. Si le nom du champ de la table
comporte des espaces, vous devez insrer les [ ] manuellement,
Access ne les rajoute pas d'office.
2. Visualisation de notre relation.Par le chapitre du cours sur
la cration d'une base de donne relationnelle, nous avons vu qu'il y
a 2 mthodes de travail. 1. Relier 2 tables par une requte. Cette
solution est la plus facile, mais n'affiche les enregistrements que
si le champ de liaison existe dans les 2 tables 2. En utilisant un
formulaire et un sous formulaire intgr. Cette mthode affiche
toujours quelques chose, mais la prsentation des sous formulaire
laisse souvent dsirer. Nous allons crer une requte relationnelle,
non pas pour crer une vritable requte, mais plutt pour afficher la
structure de notre base de donne Access. Utilisons le mode Cration
et slectionnons les 4 tables cres au chapitre prcdant. Si la
relation entre les tables ne se fait pas, vous pouvez slectionner
le champ dans une table et le glisser avec la souris sur le champ
correspondant de l'autre table. Cette requte que nous appellerons
relation va nous servir de rfrence pour les exercices futurs.
Un conseil, insrez au moins un champ pour avoir l'accs cette
requte facilement.
3. Question de l'exercice.1. Quel intrt d'utiliser des champs
calculs dans la requte plutt que dans un formulaire ou dans un tat
pour cette facturation. 2. Pourquoi ne pas construire notre base de
donne relationnelle partir des requtes Access et prfrer les
formulaires et tats.
4: Premire partie formulaire.Maintenant que nous avons cr la
structure de notre facturation, nous allons mettre en place les
formulaires. Cette partie va dbuter le formulaire facture de notre
exercice Access. Nous allons crer le formulaire en deux partie, la
partie en-tte qui reprend la table facture et la table client,
l'autre qui reprend le contenu de la facture et les produits. Ceci
est conditionn par la pratique, mais aussi par le bon sens. Un
utilisateur rentre d'abord le numro de facture, date, ... suivi des
coordonnes du client avant de rentrer les produits. De plus, dans
notre exercice exemple, il nous font scinder la relation chane.
Cette premire partie du formulaire reprend la cration d'un
formulaire et les bases relationnelles. En effet, nous allons
obliger rentrer un code d'un client existant. A ce stade, nous
allons permettre de double cliquer sur la case code client pour
rentrer les coordonnes d'un client et le reprendre ensuite. Dans
Access avanc (le niveau 2 de la formation Access), nous jouerons
sur la scurit imposant un mot de passe pour encoder de nouveaux
clients.
1. Cration du formulaire de base.La premire partie de notre
formulaire Access va nous permettre d'encoder l'entte de la
facture: numro, date et code client. Jusqu'ici rien de bien
compliqu, sauf que nous allons modifier le champ "code client" pour
en faire une zone de liste modifiable. Crons notre formulaire en
mode assistant, type justifi en slectionnant la table Facture et
passons en mode modification. Enregistrons-le sous le nom facture
Notre but est de relier sur ce formulaire la table client. Nous
allons donc crer dans ce formulaire Facture un sous formulaire
Client.
Comme contenu de notre sous formulaire, slectionnons la table
Client. Comme champ de liaison, slectionnons Code client pour
chaque table.
La prsentation en mode modification semble correcte, pourtant,
en affichage, les coordonnes du client sont en mode tableur. Pas
trs propre, et surtout obligation d'utiliser les ascenseurs pour
vrifier l'adresse du client, la prfrence ira plutt un mode ligne de
informations.
La modification de cette apparence est lie au formulaire "Sous
formulaire client", pas au formulaire Facture. Fermons notre
formulaire et ouvrons le formulaire client en modification.
Affichons les proprits du formulaire. Comme affichage par dfaut,
slectionnons Formulaire unique au lieu de feuille de donne. Le tour
est jou. Puisque nous sommes dans les proprits du formulaire "Sous
formulaire client", modifions d'autres proprits. Nous pouvons par
exemple empcher d'utiliser ce formulaire pour rentrer ou modifier
des donnes. Cette mthode empche l'utilisateur de crer directement
de nouveau client ou de modifier des coordonnes existantes.
Voici dj une prsentation un peu plus agrable.
3. Exercice, crez le formulaire
Comme suite de l'exercice, crez un formulaire Access permettant
de rentrer et modifier les clients. A l'aide de ce formulaire,
rentrez quelques clients de votre entreprise.
4. Modification de notre formulaire facturation.Commenons nos
premiers essais dans notre formulaire de facturation. Si nous crons
une nouvelle facture, avec un client existant, ses coordonnes sont
automatiquement affiche dans le sous-formulaire. Par contre, si le
code du client n'existe pas, ou si nous ne connaissons pas le code
du client, impossible de corriger ou de rentrer un nouveau client
si vous avez interdit cette possibilit dans le sous formulaire
client (comme ci-dessus).
De nouveau, les choix pralables vont modifier notre manire de
travailler. Si nous autorisons de rentrer de nouveaux clients dans
le formulaire facture, nous risquons de recrer des clients
existants, sans compter que nous pouvons interdire de crer de
nouveaux clients sans une vrification de la comptabilit par
exemple. Nous ne pouvons pas non plus rechercher un client
existant.. Dans les 2 chapitres suivants, nous allons voire 2
mthodes pour corriger ces fonctionnalits: 1. List de choix dans le
code du client. 2. Double click sur le code client (dans la partie
facture) qui fait apparatre le formulaire client. Cette dernire
possibilit est utilise en bloquant la liste.
5: liste de choix pour client.1. IntroductionDans l'exercice
Access prcdant, nous avons bloqu la cration d'un client en cours de
facturation pour obliger passer un autre formulaire. Ceci pose
diffrents problmes. Le principale est de ne pas pouvoir rechercher
un client (mme s'il existe dj). Nous allons utiliser une liste de
choix lie une requte pour afficher les codes et les noms de clients
disponibles. Cette fonction "Zone de liste" pourrait se faire dans
la table, mais nous allons l'utiliser dans cet exercice par le
formulaire. Ceci permettra lors du choix du code client d'afficher
le code et le nom du client. Ceci oblige toujours crer le client
dans un formulaire, puisque c'est un choix de dpart de la
conception de cette base de donne facturation.
2. Cration de la requteDans le formulaire facture, utilisez la
bote outils pour slectionner la commande Zone de liste droulante
(nous pouvions galement slectionner zone de liste). Slectionnons
"Je veux que la liste droulante recherche les valeurs dans une
table ou une requte" et slectionnons notre table client. L'astuce
va tre de slectionner le code client et le nom du client (vos
pourriez en slectionner plus). La case cocher va nous permettre de
masquer (ou non) la premire colonne (le code du client).
Si vous cachez la premire colonne, elle sera automatiquement
prise comme valeur sauvegarder. Par contre, dans l'autre cas (ou si
vous slectionnez plus de 2 champs, vous devez signaler quel champ
doit tre utilis:
Nous allons stocker la valeur dans un champ. Le tour est jou
Cas d'un seul champ affich
Cas de 2 champs affichs. Le choix dans la zone de liste
influence le code client dans la partie facture et la partie
client. De mme, taper le code de client dans la zone facture
affiche le nom du client dans la liste de choix. Par contre, vous
n'avez pas d'affichage des coordonnes du client tant qu'un code
client valide n'est pas affich dans la zone facture. Cette solution
a un lger problme. Nous avons finalement un double emploi entre le
code de la liste de choix et celle du formulaire au niveau facture.
Si nous supprimons le champ code client (de la table facture), nous
supprimons galement la relation entre les 2 tables. Ceci est li au
choix de stocker dans un champ plutt que de mmoriser:
Dans ce cas, il nous suffisait de supprimer le code client et de
dfinir dans le formulaire ce nouveau champ comme "code client" de
la table facture dans les proprits de la zone modifiable.
La prochaine tape va tre de permettre via un autre formulaire de
crer un client existant. Pour cela, nous passerons par une macro et
une procdure vnementielle.
3. Formulaire client.Une autre solution serait de crer un bouton
avec une macro pour afficher le formulaire client cr prcdemment (ou
un autre puisque client permet de rentrer de nouveaux client ou de
modifier les coordonnes des clients existants). Reprenons notre
formulaire de facturation et insrons un bouton de commande. Comme
macro associe, slectionnons "Opration sur formulaire, ouvrir un
formulaire". Slectionnons le formulaire client (nous ne crons donc
pas un formulaire spcifique). Dans cette mthode, il faudra nanmoins
rentrer le code du client manuellement, sans compter que le code
d'un nouveau client sera refus dans la facturation tant que le
formulaire ne sera pas rafrachi (en gros quitter le formulaire
et le rouvrir) Mme si ce n'est pas la mthode la plus adquate, elle
a le mrite d'exister. La mthode suivante va corriger cela par
l'utilisation d'une vritable macro et d'une procdure
vnementielle.