formateur informatique

Cas pratique pour créer une base de données de facturation Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Cas pratique pour créer une base de données de facturation Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Cas pratique complet de gestion de base de données relationnelles
Dans ce cas pratique, nous partons d'une base de données de facturation dans laquelle il n'existe que les tables et leurs relations. Nous allons devoir construire tout le reste.
  • Télécharger la base de données facturation-pratique.accdb en cliquant sur ce lien,
  • L'ouvrir dans Access,
  • Cliquer sur le bouton Activer le contenu situé sous le ruban,
Cette base de données est constituée de quatre tables. La table Clients qui recense les clients, la table Catalogue qui recense les produits à vendre, la table Commandes qui liste les commandes des clients de la première table et enfin la table Détail des commandes qui énumère le détail de chaque commande avec les articles achetés et les quantités. Ces quatre tables sont donc reliées entre elles par le jeu des relations.
Relations et intégrité référentielle entre quatre tables
A ce stade, cette base de données ne contient ni requête ni formulaire.

Formulaire avec sous-formulaire
Nous souhaitons créer un formulaire complexe que nous nommerons Saisie des Commandes. Le formulaire doit contenir les informations des tables Clients et Commandes sur la partie supérieure tandis que le sous formulaire doit contenir les informations des tables Catalogue et Détail des commandes. Un support de formation enseigne sur la création des formulaires avec sous-formulaires : Les formulaires de base de données. Nous savons construire un formulaire avec sous-formulaire à partir de deux tables reliées entre elles mais pas à partir de quatre. L'astuce consiste à regrouper les tables avec des requêtes. Une requête Clients - Commandes et une requête Catalogue - Détail des commandes. Les requêtes sélection étant considérées comme des tables, nous aurons ainsi les deux sources nécessaires pour construire le formulaire avec sous-formulaire présentant les données issues des quatre tables.

Création des requêtes
Commençons par la requête regroupant les clients et leurs commandes.
  • Cliquer sur l'onglet Créer pour activer son ruban,
  • Cliquer sur le bouton Création de requête de la section Requêtes,
Nous passons ainsi directement en mode création.
  • Dans la boîte de dialogue qui apparaît, sélectionner les tables Clients et Commande avec la touche CTRL et la souris,
  • Cliquer sur le bouton Ajouter puis sur le bouton Fermer,
  • Ajouter tous les champs de la table Clients en les cliquant et glissant sur la zone de requête,
  • De la même façon, ajouter tous les champs de la table Commande, sauf numcli,
  • Et enregistrer la requête (CTRL + S) sous le nom Clients-Commandes,
Requête regroupant deux tables pour formulaire
  • Fermer la requête en cliquant sur la croix de son onglet.
Nous avons ajouté numcli de la table Clients (Clé primaire et intégrité référentielle) et non depuis la table Commande (Clé externe) puis numcom de la table Commande (Clé primaire et intégrité référentielle), de façon à ce que les enregistrements puissent être créés depuis le formulaire. Il ne s'agit pas seulement d'une zone de consultation. Réalisons maintenant la requête regroupant le détail des commandes et les produits du catalogue.
  • Cliquer sur l'onglet Créer pour activer son ruban,
  • Cliquer sur le bouton Création de requête de la section Requêtes,
  • Sélectionner les deux tables Catalogue et Détail des Commandes,
  • Cliquer sur le bouton Ajouter puis le sur bouton Fermer,
  • Ajouter tous les champs de la table Catalogue,
  • Ajouter les champs numcom, remise et quantité de la table Détail des commandes,
  • Créer le champ Total permettant de calculer le prix avec remise et quantité selon l'expression suivante : Total: [prix de vente]*(1-[remise])*[quantité],
Dans une requête en mode création, un nouveau champ se crée en lui attribuant un nom suivi de deux points (:). Le reste n'est qu'un calcul faisant intervenir les noms de champ qui doivent toujours être inscrits entre crochets. Nous venons de créer un champ calculé, soit une valeur qui se calcule automatiquement en fonction des données des tables.
  • Enregistrer la requête (CTRL + S) sous le nom Catalogue-Détail,
Requête regroupant deux tables avec champ calculé
  • Fermer la requête en cliquant sur la croix de son onglet.
Nous avons ajouté le champ référence de la table Catalogue (Clé primaire et intégrité référentielle) et non celui de la table Détail des commandes (Clé externe) de façon à ce que les enregistrements puissent être créés depuis le formulaire. De plus et c'est très important, nous avons bien ajouté le champnumcom de la table Détail des commandes. C'est lui qui fait le lien avec la table Commande, donc le lien entre le formulaire et le sous-formulaire.

Création du formulaire
Nous allons créer le formulaire en faisant appel aux deux requêtes précédentes regroupant l'ensemble des besoins :
  • Cliquer sur l'onglet Créer pour activer son ruban,
  • Cliquer sur le bouton Assistant formulaire dans la section Formulaires,
  • Dans la liste Tables/Requêtes, sélectionner la Requête : Clients-Commandes,
  • Ajouter tous ses champs en cliquant sur le bouton double flèche de la zone centrale,
Formulaire avec sous formulaire sur deux requêtes
  • Dans la liste Tables/Requêtes, sélectionner la Requête : Catalogue-Detail,
  • Ajouter tous ses champs de la même manière,
  • Cliquer sur le bouton Suivant,
  • Vérifier que la case Formulaire avec sous-formulaire(s) est cochée sinon la cocher,
  • Conserver l'affichage des données comme proposé par défaut par Clients-Commandes,
C'est ainsi que nous retrouverons les informations du client et de ses commandes sur la partie supérieure et le détail de ses commandes faisant référence au catalogue en sous-formulaire sur la partie inférieure.
  • Cliquer sur Suivant,
  • Choisir Feuille de données pour la présentation,
  • Cliquer sur Suivant,
  • Nommer le formulaire Saisie-commandes,
  • Nommer le sous-formulaire Detail-saisie-commandes,
  • Cliquer sur Terminer.
Formulaire Access conçu sur 4 tables
Le formulaire est créé et s'affiche tel que le présente la figure ci-dessus. Cependant il n'est pas agencé comme voulu. De plus il manque tous les champs de synthèse : Total HT, Tva, Total Ttc.

Formulaire en mode création
  • Cliquer sur la flèche du bouton Affichage dans le ruban,
  • Puis, cliquer sur Mode création dans la liste,
  • Elargir la zone de formulaire pour avoir plus de place,
  • Disposer les éléments du formulaire selon le modèle proposé par la capture ci-dessous,
Agencement formulaire en mode création
N'oubliez pas que pour déplacer un champ indépendamment de son étiquette il faut le cliquer et le glisser depuis sa poignée d'angle supérieure gauche. Pensez de même à utiliser les outils d'alignements et d'ajustements d'espacements dans le ruban Organiser avec les boutons Aligner et Taille/Espace.
  • Se placer en dessous du sous formulaire,
  • A l'aide de la section Contrôles du ruban Création, placer trois zones de texte comme l'illustre la figure ci-dessous,
  • Nommer les zones de texte : total_ht, tva et total_ttc.
Champs calculés, création de formulaire
Attention à l'entête de page qui permet comme dans Word de répéter des informations sur chaque page. Ces informations en revanche ne sont pas visibles en exécutant le mode conception. Aucun champ ne doit donc y être placé.

Les totaux par client
La zone de texte total_ht doit afficher le total hors taxes de toutes les commandes par client. Il s'agit donc de la somme des totaux présents dans le sous formulaire.
  • Fermer le formulaire Saisie-commandes,
  • Et ouvrir le sous-formulaire en mode création,
  • Ajouter une zone de texte nommée HT dans le pied de formulaire,
  • Saisir dans cette zone le calcul : =Somme([total]),
  • Enregistrer le sous formulaire (CTRL + S),
  • Fermer le sous-formulaire,
Champ calculé dans le pied du sous formulaire
  • Ouvrir le formulaire en mode création,
  • Sélectionner la zone de texte total_ht,
Nous allons utiliser le générateur d'expression pour lier la source de contrôle de cette zone de texte avec le champ calculé que nous venons de créer dans le sous formulaire.
  • Dans sa feuille de propriétés, cliquer sur l'onglet Données,
  • Cliquer sur le bouton du générateur d'expression à l'extrémité droite de sa propriété Source contrôle,
  • Dans la liste de gauche Eléments d'expression, déployer Saisie-commandes,
  • Puis, cliquer sur Detail-saisie-commandes,
Ainsi nous affichons dans la liste centrale, tous les objets présents dans le sous-formulaire.
  • Double cliquer sur le champ HT pour établir le lien entre les deux contrôles,
L'expression suivante : =[Detail-saisie-commandes].[Formulaire]![HT] s'affiche dans le générateur d'expression.
  • Cliquer sur Ok pour valider.
Lien entre champs par le générateur expression
Si vous basculez le formulaire en affichage Mode formulaire, vous constatez qu'aucun format numérique ne lui est attribué, expliquant le grand nombre de décimales.
  • Attribuer au champ total_ht un format monétaire avec 2 décimales à l'aide de l'onglet Format de sa feuille de propriétés,
  • Augmenter la taille de sa police et lui attribuer un style Gras,
Mise en forme du formulaire en mode conception
La somme affichée est le total HT. Nous souhaitons le total TTC. C'est pourquoi nous avons ajouté deux zones de texte. La première doit afficher le taux de TVA, la seconde le total avec cette TVA. Nous souhaitons que le taux de TVA puisse varier sur ordre de l'utilisateur selon des valeurs prédéfinies. En fonction de la valeur de la tva, le Total TTC doit s'ajuster :
  • Afficher le formulaire en mode création,
  • A l'aide de la section Contrôles du ruban Création, ajouter une Zone de liste déroulante,
  • Dans l'assistant, cocher la deuxième option : Je taperai les valeurs souhaitées,
  • Cliquer sur Suivant et taper les valeurs: 5.5% et 20%,
  • Puis cliquer sur Suivant et Terminer.
  • Modifier l'intitulé de son étiquette en Choisir un taux,
  • Nommer la liste déroulante choix_taux avec sa feuille de propriétés,
Lorsque l'utilisateur clique sur la zone de liste et choisit un taux, ce taux doit être reproduit dans la zone de texte Tva. Pour cela, il faut écrire l'égalité entre les contrôles.
  • Sélectionner la zone de texte tva,
  • Activer l'onglet Données de sa feuille de propriétés,
  • Définir sa propriété Source contrôle sur =[choix_taux],
Source de contrôle pour un champ dynamique
Si vous basculez en mode formulaire, vous remarquez que le choix d'un taux dans la liste déroulante, reproduit la valeur dans la zone de texte tva.
  • Attribuer le format pourcentage à la liste déroulante et la zone de texte tva,
  • Attribuer la valeur par défaut 0,2 à la liste déroulante toujours grâce à sa feuille de propriétés,

La création d'état
Le didacticiel suivant : Les états Access, forme sur la création des états dans Access et leurs liens avec les formulaires.
L'état Etiquettes Clients
Nous souhaitons créer l'état Etiquettes_clients permettant d'imprimer les étiquettes faisant apparaître le nom du client, son numéro, l'adresse, le code postal, la ville :
  • Sélectionner le ruban Créer,
  • Cliquer sur Assistant Etat dans la section Etats,
La boîte de dialogue de l'assistant apparaît. Toutes les informations que nous souhaitons imprimer par l'état Etiquettes_clients sont contenues dans la table clients. Il suffit donc à l'aide de l'assistant Etat de concevoir l'état à partir de la table Clients :
  • Dans la liste déroulante Tables/Requêtes, sélectionner la Table : Clients,
  • Ajouter les champs Nom, numcli, adresse, code postal, ville en double cliquant sur chacun d'entre eux,
  • Cliquer sur suivant,
  • Ajouter deux niveaux de regroupement, d'abord un sur le nom puis un sur la ville comme le propose la capture ci-dessous,
Niveaux de regroupement, conception état
Il s'agit d'une question de présentation des données pour l'impression.
  • Cliquer plusieurs fois sur Suivant jusqu'à arriver à la dernière étape de l'assistant,
  • Le nommer Etiquettes_clients et cliquer sur Terminer.
Prêt à imprimer, l'état s'affiche alors.
  • Fermer l'état en cliquant sur la croix de son onglet.

L'état Recap_clients
Nous souhaitons créer l'état permettant d'afficher le nom du client, son numéro, les références produits triées, la désignation et le prix total. Cet état doit afficher un total et un pourcentage par client. Les informations permettant de construire cet état sont contenues dans les tables Clients et Catalogue :
  • Cliquer sur le bouton Assistant Etat dans le ruban Créer,
  • Sélectionner d'abord la table clients à l'aide de la liste déroulante,
  • Ajouter les champs nom et numcli,
Avant de cliquer sur Suivant nous devons ajouter les enregistrements de la table Catalogue:
  • Sélectionner la table Catalogue à l'aide de la liste déroulante,
  • Ajouter les champs référence, Désignation et prix de vente,
  • Cliquer sur Suivant,
  • Choisir d'afficher les données Par clients,
  • Cliquer sur Suivant,
  • Ajouter un niveau de regroupement sur le nom,
  • Cliquer sur Suivant,
  • Choisir un tri sur le champ référence,
Nous souhaitons afficher un total et un pourcentage par client :
  • Cliquer sur le bouton Options de synthèse,
  • Cocher les cases Somme, Total uniquement, Calculer le pourcentage du total pour les sommes,
  • Cliquer sur Ok et sur Suivant,
  • Choisir un type de présentation Echelonné en orientation paysage,
  • Cliquer sur Suivant,
  • Nommer l'état Recap_clients et cliquer sur Terminer,
  • Fermer l'état.

L'état Facture
En suivant la même méthode que pour la création du formulaire avec sous formulaire :
  • Créer l'état présenté par la capture d'écran ci-dessous à l'aide de l'assistant Etat.
Bien sûr l'état doit être construit à l'aide des deux requêtes Clients-commandes et Catalogue-Détail. Aucune option de synthèse n'est nécessaire. En revanche, il faut ajouter un niveau de regroupement sur le champ numcli. De la première requête, les champs titre,contact, téléphone, fax et notes peuvent être omis afin de gagner de la place. Pensez à choisir une orientation Paysage et à bien nommer l'état Facture.
état conçu sur 2 requêtes et 4 tables
Vous aurez bien sûr besoin d'ajuster le placement et les dimensions des champs en mode création afin que la présentation soit satisfaisante. Comme nous souhaitons créer un lien entre le formulaire et l'état par le biais d'un bouton Aperçu, nous devons ajouter un saut de page avant section sur l'en-tête de groupe numcli.
  • Afficher l'état en mode création,
  • Cliquer sur la zone de l'en-tête de groupe numcli,
  • Dans sa feuille de propriétés, onglet Format, régler sa propriété Saut de page sur Avant section,
Enregistrements indépendants dans un état avec un saut de page
  • Enregistrer l'état,
  • Puis l'afficher en mode Aperçu avant impression,
Comme vous le constatez, désormais chaque page affiche un client indépendamment. C'est ce que nous souhaitions de manière à ensuite commander l'aperçu d'un client depuis le formulaire. Il faudra être capable de dire à quelle page se rendre en fonction du client consulté. Avant cela, nous souhaitons ajouter pour chaque client la somme de ses commandes HT. Nous allons donc créer un champ calculé qui doit être placé dans le pied de groupe. Or le pied de groupe numcli n'est pas visible sur l'état. Pour l'afficher :
  • Afficher l'état en mode création,
  • Cliquer avec le bouton droit de la souris sur l'état à un endroit où il n'y a pas de champ,
  • Dans le menu contextuel qui s'affiche, cliquer sur Trier et grouper,
Une zone Regrouper s'affiche en bas de la fenêtre Access.
  • Cliquer sur l'option Plus,
  • Avec les flèches, choisir avec une section pied de page,
Du coup la section Pied de groupe numcli apparaît sous la section Détail comme l'illustre la capture ci-dessous.
  • Y ajouter une zone de texte pour le calcul du total hors taxes de la commande,
  • Saisir dans ce champ la formule =Somme([total]),
Total étant le champ calculé de la partie détail pour chaque commande, ce calcul effectuera bien la somme des totaux pour chaque commande.
Champ dynamique pied de groupe état
En affichant l'état en mode aperçu avant impression, vous constatez que vous obtenez bien le calcul de synthèse demandé.

Le lien entre le formulaire et l'état
Un didacticiel explique comment relier un formulaire et un état par le biais d'une condition WHERE.
  • Fermer l'état en cliquant sur la croix de son onglet,
  • Ouvrir le formulaire Saisie-commandes en mode création,
  • A l'aide du ruban Création, ajouter un bouton sous le sous-formulaire,
  • Dans l'assistant, choisir Opérations sur état dans la liste de gauche,
  • Puis sélectionner Aperçu d'un état dans la liste de droite,
  • Cliquer sur le bouton Suivant,
  • Sélectionner l'état Facture dans l'étape qui suit,
  • Cliquer sur Suivant,
  • Choisir l'image de la Loupe,
  • Cliquer sur Suivant,
  • Nommer le bouton Aperçu et cliquer sur Terminer.
L'opération n'est pas encore terminée. En effet le bouton ne fait qu'afficher l'aperçu du client, le premier. Il n'établit pas encore le lien entre le client consulté sur le formulaire et celui qui doit s'afficher sur l'état. Le champ qui permet d'établir ce lien est le champ numcli. Il faut préciser que le numcli de l'état qu'on souhaite afficher doit correspondre au numcli du formulaire d'où on vient. C'est la condition WHERE de la macro attachée au bouton qui permet de réaliser cette acrobatie.
  • Afficher le formulaire en mode création,
  • Sélectionner le bouton,
  • Dans sa feuille de propriétés, cliquer sur son onglet Evénement,
  • Cliquer sur le petit bouton de son événement Sur clic,
Vous basculez ainsi dans l'éditeur de macro.
  • Cliquer dans la zone Condition WHERE de l'action déjà présente,
  • Saisir l'expression suivante :[numcli]=[Formulaires]![Saisie-commandes]![numcli],
Macro pour relier état et formulaire par bouton
Nous traduisons en langage Access ce que nous avons décrit plus haut. Le numéro de client de l'état ([numcli]) doit correspondre (=) au numéro de client du formulaire ([Formulaires]![Saisie-commandes]![numcli]) au moment où nous cliquons sur le bouton.
  • Enregistrer la macro et la fermer,
  • Afficher le formulaireen mode formulaire,
  • Naviguer jusqu'à un client de votre choix,
  • Cliquer sur le bouton Aperçu.
Cette fois vous affichez bien l'aperçu avant impression de la facturation du client que vous étiez en train de consulter depuis le formulaire.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn