Note : la base de données résultant de ce tutoriel en 3 parties est disponible sur cette page.
Ce tutoriel est la suite de l'article sur la création des tables et relations. Vous pouvez télécharger la base de données créée précédemment dans l' Espace membres.
Création du formulaire principal Access : Nous allons maintenant créer le formulaire. Pour cela, ouvrez l' Assistant Formulaire de l'onglet Créer, choisissez la table T_Clients et sélectionnez tous les champs, choisissez la disposition en Colonne simple et cliquez sur Terminer en choisissant Modifier la structure du formulaire.
Nous allons modifier la présentation du formulaire mais vous pouvez bien sûr l'adapter à vos besoins. Supprimez le titre T_Clients en cliquant dessus et en appuyant sur la touche Suppr et réduisez la partie En-tête de formulaire en ramenant la barre de Détail au plus près. Supprimez également les étiquettes Civilité, Prénom, Nom, CP et Ville qui n'indique que leur titre. Modifiez l'étiquette ID_Client en N° Client.
Vous pouvez dimensionner vos contrôles de manière identique en affichant la Feuille de propriétés de l'onglet Création et en modifiant les données des lignes Largeur et Hauteur de l'onglet Format. Évitez de trop réduire les contrôles auquel cas vos données seraient masquées en Mode formulaire et vous seriez obligé de cliquer dessus et de vous déplacer à l'intérieur.
Sélectionnez tous les contrôles en traçant un rectangle avec votre souris et indiquez une hauteur de 0,552 cm. Profitez-en pour modifier la police en Century Gothic et une taille de 11. Appliquez une police Gras pour les étiquettes. Pour ces étiquettes, sélectionnez-les et cliquez droit > Taille > Au contenu et réajustez la hauteur à 0,552 cm. Centrez les étiquettes ID_Client, Civilité, Prénom, Nom et CP.
Voici les tailles en largeur de chacun de mes contrôles :
Dans la Feuille de propriétés , sélectionnez la sélection Formulaire et indiquez une Largeur de 35 cm. Sélectionnez tous les contrôles et retirez le contour en allant dans Format > Contour > Transparent.
Enfin, déplacez les éléments de manière à avoir ce genre de présentation :
Pour terminer la présentation de ce formulaire, insérez un bouton de contrôle grâce aux contrôles de l'onglet Création. Si aucune boîte de dialogue ne s'ouvre, voici la solution qui m'a été donnée par un abonné : cliquez, lorsque la liste des contrôles est ouverte, sur Utiliser les Assistants Contrôle . Supprimez le contrôle créé puisqu'il ne nous sert à rien, recliquez sur Bouton et faites un clic sur la zone Détail. Maintenant vous avez la boîte de dialogue du contrôle qui s'ouvre.
Choisissez Déplacements entre enreg. et Rechercher un enregistrement et cliquez sur Terminer. Ce bouton vous permettra de rechercher facilement un client. Replacez le bouton de cette manière :
Comme nous n'utiliserons pas ce formulaire pour modifier les coordonnées des clients (même si c'est possible), nous n'avons pas besoin de connaître l'état de l'enregistrement. Nous allons donc masquer le sélecteur qui est la ligne verticale avec une flèche à gauche du formulaire en Mode formulaire . Dans la Feuille de propriétés , à l'onglet Format, à la ligne Afficher sélecteur, changez le Oui en Non. Fermez le formulaire en enregistrant les modifications.
Renommez le formulaire en cliquant droit dessus dans le panneau de navigation > Renommer > F_Clients.
Création des sous-formulaires Access : Nous allons maintenant créer les sous-formulaires.
Création du sous-formulaire S/F_Date_facture : Ouvrez le formulaire F_Clients en Mode Création et agrandissez la partie Détail en descendant la partie Pied de formulaire. Dans l'onglet Création, cliquez sur la flèche des contrôles pour afficher toute la liste, cliquez sur Sous-formulaire/Sous-état et faites un clic sur la zone Détail.
Cliquez sur Suivant.
Choisissez la table T_Date_facture dans le menu déroulant et sélectionnez tous les champs. Cliquez sur Suivant.
Laissez les paramètres par défaut et cliquez sur Suivant.
Saisissez le nom S/F_Date_facture et cliquez sur Terminez.
Avant de modifier la présentation de ce sous-formulaire, cliquez droit dessus > Sous-formulaire dans une nouvelle fenêtre . Dans la Feuille de propriétés , à l'onglet Format, à la ligne Affichage par défaut, changez Feuille de données en Formulaire double affichage. Profitez-en pour masquer le sélecteur comme vu précédemment. Puis, fermez le sous-formulaire et son formulaire en les enregistrant, puis rouvrez le formulaire principal F_Clients en Mode Création .
Supprimez l'étiquette S/F_Date_facture située au-dessus du sous-formulaire et, dans la Feuille de propriétés , dans l'onglet Format, modifiez la Largeur à 26,984 cm et la Hauteur à 12,832 cm. Replacez le sous-formulaire sous les coordonnées du client et agrandissez la zone Détail en largeur manuellement. Supprimez l'étiquette et le contrôle ID_Client. Comme pour le formulaire principal, modifiez la police et la taille des étiquettes et contrôles. Renommez ID_Date_facture en N° facture, Date_facture en Date et Mode_de_paiement en Mode de paiement. Puis, appliquez une police Gras aux étiquettes et réduisez la taille à leur contenu.
Modifiez la hauteur des étiquettes à 0,554 cm et voici les tailles en largeur de chacun de mes contrôles :
-
ID_Date_facture : 1,801 cm ;
-
Date_facture : 2,515 cm ;
-
Mode_de_paiement : réduisez-la manuellement.
Pour ce sous-formulaire, je ne retire par la bordure car cela sera plus facile à saisir plutôt qu'à rechercher où se trouve le contrôle lorsque vous serez en Mode formulaire mais je souhaite que, par défaut, la date du jour s'affiche. Pour cela, je me place sur le contrôle Date_facture et, dans la Feuille de propriétés , dans l'onglet Données, à la ligne Valeur par défaut, saisissez Date ().
Il ne vous reste plus qu'à centrer les contrôles ID_Date_facture et Date_facture en les sélectionnant et en cliquant sur de l'onglet Format et à replacer les étiquettes et contrôles de cette manière :
Création du sous-formulaire S/F_Factures : Ce sous-formulaire devra être en disposition Tabulaire. Pour cela, nous devons donc créer ce dernier de manière classique en tant que formulaire, puis l'intégrer en tant que sous-formulaire. Cliquez sur l' Assistant Formulaire de l'onglet Créer.
Choisissez la table T_Factures dans le menu déroulant et sélectionnez tous les champs, puis, choisissez la table T_Date_Facture et sélectionnez le champ ID_Date_facture afin de faire le lien entre les 2 sous-formulaires. Cliquez sur Suivant.
Laissez les paramètres par défaut et cliquez sur Suivant.
Choisissiez la disposition Tabulaire et cliquez sur Suivant.
Saisissez le nom S/F_Factures, cochez Modifier la structure du formulaire et cliquez sur Terminer.
Dans l'onglet Création, choisissez le Thème Secteur et fermez le formulaire en l'enregistrant.
Ouvrez le formulaire F_Clients en Mode Création .Dans la Feuille de propriétés , sélectionnez, dans le menu déroulant, S/F_Date_facture et, dans l'onglet Format, modifiez la Largeur à 26,984 cm et la Hauteur à 12,832 cm. Puis, agrandissez la partie Détail du sous-formulaire. Dans cette partie, insérez le sous-formulaire créé en cliquant sur le bouton Sous-formulaire/Sous-état .
Sélectionnez Utiliser un formulaire existant et S/F_Factures, puis, cliquez sur Suivant.
Laissez les paramètres par défaut et cliquez sur Terminer.
Supprimez l'étiquette S/F_Factures, replacez et agrandissez ce sous-formulaire.
Dans la Feuille de propriétés , sélectionnez, dans le menu déroulant, S/F_Factures et, dans l'onglet Format, modifiez la Largeur à 25,291 cm et la Hauteur à 8,704 cm. Supprimez l'étiquette de titre S/F_Factures ainsi que l'étiquette et le contrôle T_Date_facture_ID_Date_facture. Renommez l'étiquette ID_Facture en N° Item, ID_Tarif en Référence et supprimez l'underscore (_) entre Prix et unitaire. Nous supprimerons T_Factures_ID_Date_facture à la fin une fois que le bon fonctionnement du formulaire sera vérifié mais nous le renommons N° facture pour le moment.
Sur le contrôle ID_Tarif, cliquez droit > Remplacer par > Zone de liste déroulante . Puis, dans la Feuille de propriétés , dans l'onglet Données, sur la ligne Contenu, cliquez sur .
Choisissez la table T_Tarifs et fermez la boîte de dialogue. Cliquez sur chaque champ de la table, puis cliquez droit sur l'onglet S/F_Factures : Générateur de requêtes > Fermer et enregistrez les modifications.
À l'onglet Format de la Feuille de propriétés , indiquez 4 à la ligne Nbre colonnes. Pour l'instant, nous n'avons qu'un menu déroulant mais rien ne se passe lorsque l'on saisit une référence. Pour que les données se répercutent dans Désignation et Prix_unitaire automatiquement, à l'onglet Évènement et à la ligne Après MAJ, cliquez sur le menu déroulant pour choisir [Procédure événementielle] puis cliquez sur .
Entre Private Sub ID_Tarif_AfterUpdate() et End Sub, saisissez :
Me![Désignation] = Me![ID_Tarif].Column(1)
Me![Prix_unitaire] = Me![ID_Tarif].Column(2)
Puis, fermez la fenêtre VBA, le code sera enregistré automatiquement. Lorsque vous sélectionnerez une référence, la désignation et le prix unitaire se rempliront automatiquement.
Sélectionnez les étiquettes, modifiez leurs hauteurs à 0,556 cm, réduisez-les à leur contenu et placez-les le plus haut possible en haut de l' En-tête de formulaire. Pour cela, sélectionnez-les, cliquez droit > Aligner > Haut et déplacez-les en haut. Enfin, réduisez la taille de l'En-tête de formulaire au maximum et modifiez la hauteur des contrôles à 0,559 cm.
Voici les tailles en largeur de chacun de mes contrôles :
-
ID_Facture : 1,683 cm ;
-
T_Factures_ID_Date_facture : 2,312 cm ;
-
ID_Tarif : 0,701 cm ; 5,6 cm ; 1,701 cm. Pour cette colonne nous paramétrons chaque dimension car la colonne ID_Tarif n'a pas besoin d'être aussi large que la colonne Désignation par exemple ;
-
Désignation : 7,011 cm ;
-
Quantité : 1,905 cm ;
-
Prix_unitaire : 2,418 cm.
Sélectionnez tous les contrôles et placez-les au centre en cliquant sur de l'onglet Format, sauf Désignation que vous laisserez à gauche, faites de même avec les étiquettes et placez-les en Gras, puis, alignez-les en haut. Faites ensuite coïncider l'étiquette et son contrôle. Pour réaliser une sorte de tableau, accolez chaque contrôle et basculez entre le Mode Création et le Mode formulaire pour voir le résultat. Enfin, réduisez la partie Détail au maximum :
Avant de tester ce formulaire, nous allons rajouter les totaux.
Pour commencer, ajoutez une Zone de texte grâce à la liste des contrôles de l'onglet Création et cliquez sur la partie Détail. Renommez l'étiquette Total et indiquez Total_étiquette dans la Feuille de propriétés , à l'onglet Autres, à la ligne Nom. En cliquant sur le contrôle créé avec cette étiquette, à la ligne Nom, saisissez Total et dans le contrôle ou à la ligne Source contrôle de l'onglet Données de la Feuille de propriétés , saisissez =[Quantité]*[Prix_unitaire]. Dans l'onglet Format, choisissiez, à la ligne Format, Monétaire. Replacez ensuite le contrôle à la suite des autres et cliquez sur le carré gris dans le coin supérieur gauche pour le couper et le coller dans la partie En-tête de formulaire. Puis, réduisez l'étiquette à son contenu, réalignez les étiquettes et les contrôles en haut, appliquez une hauteur de 0,582 cm aux 2 éléments et une largeur de 1,995 cm au contrôle et finissez par réduire les 2 parties au maximum. Recentrez également l'étiquette et son contrôle.
Les mises en page des formulaires et états sont fastidieuses mais, une fois faites, la présentation s'adaptera à toutes vos fiches et sera bien plus agréable .
Nous allons créer 3 nouvelles Zones de texte mais cette fois-ci l'étiquette et son contrôle seront placés dans le pied de formulaire de ce même sous-formulaire. Renommez la première étiquette TOTAL HT et sur la ligne Nom de la Feuille de propriétés , Total_HT_étiquette, la deuxième TVA et TVA_étiquette et la troisième TOTAL TTC et Total_TTC_étiquette. Puis, pour la première étiquette de contrôle, modifiez son nom en Total_HT dans la Feuille de propriétés , renommez le deuxième TVA et le troisième Total_TTC. Les noms sont importants pour les formules que nous allons utiliser puisqu'elles font référence à ces noms. Pour éviter des erreurs, ne renommez jamais une étiquette comme un contrôle, sinon Access ne saura pas à quel élément faire référence.
Notez qu' Access ne peut pas calculer la somme d'un champ calculé, autrement dit je ne peux pas faire la somme de la colonne Total de la partie Détail directement, je saisis donc dans le premier contrôle que nous venons de créer =Somme([Quantité]*[Prix_unitaire]).
Pour le contrôle de la TVA, saisissez =[Total_HT]*0,196 et, pour le contrôle du TOTAL TTC, =[Total_HT]+[TVA]. Modifiez, pour ces 3 contrôles, leur Format en Monétaire puis retirez-leur le contour . Mettez les étiquettes et contrôles en Noir et Gras et centrez-les grâce à l'onglet Format. Réduisez les étiquettes à leur contenu et modifiez la Hauteur des contrôles à 0,556 cm et la Largeur à 2,392 cm. Replacez les étiquettes à égales distances et alignez-les à Gauche . Venez accolez le contrôle Total TTC à son étiquette en glissant le carré gris dans l'angle supérieur droit pour ensuite placez les 2 autres contrôles dans son alignement pour éviter un effet d'escalier. Puis, venez replacez le tout dans l'alignement de la colonne Total de la partie Détail en sélectionnant le tout et en le glissant au plus près du début de la partie Pied de formulaire. Réduisez l'espace en dessous au maximum.
Notre formulaire est terminé mais pour éviter d'avoir à trop scroller pour voir apparaître les sous-formulaires, dans la Feuille de propriétés , choisissez, dans le menu déroulant Formulaire, et, dans l'onglet Format, indiquez, à la ligne Largeur 31,995 cm, puis sélectionnez le premier sous-formulaire ( S/F_Date_facture) et indiquez une Largeur de 29,783 cm et une Hauteur de 13,018 cm, enfin, pour le second sous-formulaire ( S/F_Factures) indiquez une Largeur de 27,598 cm et une Hauteur de 10 cm.
Enregistrez le tout et votre formulaire devrait ressembler à ça :
Vous pouvez maintenant tester votre formulaire mais je vous conseille de copier cette base de données car si vous entrez des items ou factures, vous aurez beau supprimer les lignes dans le formulaire ou dans la table correspondante, la numérotation automatique ne recommencera plus à zéro. Une solution existe mais autant ne pas perdre de temps .
Si le test est correct, vous pouvez supprimer l'étiquette N° de facture et son contrôle du sous-formulaire S/F_Factures et replacez les étiquettes et contrôles correctement. Nous laisserons par contre le sélecteur de ce sous-formulaire car si l'enregistrement n'est pas encore pris en compte le total n'est pas recalculé. Un enregistrement enregistré est indiqué par une flèche et un enregistrement non enregistré par un crayon .
Pour rechercher un client existant, vous utiliserez le contrôle que nous avons créé soit en vous plaçant d'abord sur le champ sur lequel la recherche doit porter (par exemple, le nom) et en cliquant sur le bouton pour saisir le nom à chercher, soit vous vous placez où vous le souhaitez, vous cliquez sur le bouton et, avant de lancer la recherche, changez Regarder dans Champ actuel en Regarder dans Document actif.
Désormais, pour saisir une facture vous utiliserez ce formulaire :
Pour naviguer dans ce formulaire :
- La première barre de navigation vous permet de naviguer parmi les items de la facture ;
- La deuxième vous permet de naviguer parmi les factures du client ;
- La troisième vous permet de naviguer parmi les clients.
Pour ne pas rencontrer de problème, choisissez d'abord le Mode de paiement, ce qui créera un N° facture, puis saisissez vos items en choisissant une Référence, puis une Quantité.
Dans la troisième et dernière partie de ce tutoriel, nous découvrirons comment créer les états et l'interface.
Téléchargez " Créer une facture avec Access - Partie 2/3 - Création du formulaire principal et de ses sous-formulaires " au format PDF Je vous propose un fichier annexe dans l'Espace Membres contenant la base de données utilisée dans ce tutoriel.