Vous êtes sur la page 1sur 14

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'exercice
Cet 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 abords


L'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 Access


Pour 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 champ
Date 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 Clients


La 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 facture


Cette 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 produit
Nous 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. Introduction
Dans 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 requte
Dans 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.