Tutoriel réalisé avec Access 2013
Ce tutoriel est la suite de l’article sur la création des tables et relations et l’article sur la création du formulaire principal et de ses sous-formulaires. Vous pouvez télécharger la base de données créée précédemment au bas de l’article.
SOMMAIRE
Création de la requête pour l’état Access
Pour l’instant, nous avons paramétré l’application pour une utilisation interne, mais le but est bien sûr d’imprimer les factures créées.
Pour cela, nous allons créer un état, mais pour imprimer une facture en particulier, nous devons créer une requête pour avoir une boîte de dialogue à l’ouverture.
Cliquez sur Création de requête de l’onglet Créer et ajoutez les tables T_Clients, T_Date_facture et T_Factures. Pour la table T_Clients, ajoutez tous les champs sauf Téléphone et E-mail, pour la table T_Date_facture, ajoutez ID_Date_facture, Date_Facture et Mode_de_paiement, et pour la table T_Factures, ajoutez ID_Tarif, Désignation, Quantité et Prix_unitaire. À la ligne Critères du champ ID_Date_Facture, saisissez [Saisissez un numéro de facture]. De cette manière, à l’ouverture de l’état, nous aurons un message demandant de saisir un numéro de facture. Fermez ensuite la requête en l’enregistrant sous le nom de R_Etat.
Création des états Access
Nous allons maintenant créer les états. Le premier sera le récapitulatif de toutes vos factures et le second vous permettra d’imprimer une facture.
Création de l’état E_Imprimer_toutes_les_factures
Cliquez sur Assistant État de l’onglet Créer.
Sélectionnez tous les champs de la table T_Clients sauf les champs Téléphone et E-mail, ceux de la table T_Date_Facture sauf les champs ID_Client et ceux de la table T_Factures sauf les champs ID_Facture et ID_Date_facture qui ne seraient pas utiles ici puisque répétitifs. Cliquez sur Suivant.
Gardez l’affichage par défaut et cliquez sur Suivant.
Cliquez sur Suivant.
Cliquez sur Suivant.
Choisissez l’Orientation Paysage et cliquez sur Suivant.
Nommez cet état E_Imprimer_toutes_les_factures et cochez Modifier la structure de l’état. Cliquez sur Terminer.
Maintenant, tout comme le formulaire, vous devez réagencer la présentation. Dans la partie En-tête, renommez E_Imprimer_toutes_les_factures en Factures établies que vous placerez en Gras, réduirez à son contenu pour le placer vers le centre de l’état avant de réduire la partie En-tête état. Dans la partie En-tête de page, renommez ID_Client en N° Client. Pour ne pas multiplier les étiquettes, supprimer l’étiquette Civilité, Prénom, CP et Ville et renommez Nom en Nom du client. Déplacez les étiquettes se trouvant après la Ville vers une autre partie. Placez toutes les étiquettes en Gras, centrées grâce à l’onglet Format, réduisez-les à leur contenu et alignez-les en haut. Réduisez ensuite la partie En-tête de page au maximum.
Supprimez le contour du contrôle de la Civilité en allant dans l’onglet Format. Centrez tous les contrôles et réduisez-les à leur contenu. Pour faire simple, indiquez les mêmes largeurs que les contrôles du formulaire, toujours grâce à la Feuille de propriétés
de l’onglet Création, et accolez-les pour faire coïncider les étiquettes et leur contrôle. Réduisez enfin la partie En-tête de groupe T_Clients_ID_Client.
Les étiquettes et contrôles sont peut-être mélangés entre la partie En-tête de groupe ID_Date_facture et Détail. Dans ce cas, basculez entre le Mode État et le Mode création
pour remettre de l’ordre. Renommez ID_Date_facture en N° facture, Date_facture en Date et ID_Tarif en Référence. Faites ensuite exactement les mêmes étapes que pour l’En-tête de page et l’En-tête de groupe T_Clients_ID_Client à savoir centrer et mettre en gras, réduire au contenu, aligner en haut, réduire les parties et retirer le contour du contrôle du Mode de paiement. S’il vous manque des champs, cliquez sur Ajouter des champs existants
de l’onglet Création et recherchez les champs manquants comme Prix_unitaire, puis placez-le à l’endroit adéquat et renommez-le en Prix unitaire. Si un triangle vert apparaît sur une étiquette, cliquez sur le losange jaune
, qui apparaît lorsque vous cliquez sur l’étiquette, puis Associer une étiquette avec un contrôle… et sélectionnez le nom du contrôle correspondant.
Comme pour le formulaire, ajoutez une Zone de texte grâce aux contrôles, renommez-le et saisissez la formule comme dans le formulaire. Modifiez également le Format en Monétaire et retirez son contour
.
Pour une meilleure visualisation, décalez les éléments de la partie En-tête de groupe ID_Date_facture et Détail vers la droite.
Voici un exemple de ce que vous devriez obtenir avec des factures établies grâce au formulaire :
Création de l’état E_Imprimer_une_facture
Pour créer une facture comme toute facture que vous recevez, relancez l’Assistant État .
Cette fois, choisissez la requête R_Etat et sélectionnez tous les champs. Cliquez sur Suivant.
Cliquez sur Suivant.
Cliquez sur Suivant.
Cliquez sur Suivant.
Cliquez sur Suivant.
Nommez l’état E_Imprimer_une_facture, cochez la case Modifier la structure de l’état et cliquez sur Terminer.
Comme pour l’état précédent, vous devez déplacer des contrôles et étiquettes situés à droite de l’état pour les déplacer soit dans la partie En-tête de groupe ID_Date_facture, soit Détail.
Pour que la présentation ressemble le plus possible à une facture, j’’agrandis a partie En-tête état et remplace le titre E_Imprimer_une_facture par FACTURE N° en Gras et police 24. Je viens placer le contrôle ID_Date_facture à côté de ce titre et je lui applique la même mise en forme en cliquant sur la mise en page à copier, puis le bouton de l’onglet Accueil et je clique sur le contrôle (comme sur Word). Appliquez un contour de 3 points à FACTURE N°. Vous pouvez donc supprimer l’étiquette correspondante. Récupérez ensuite l’étiquette et le contrôle Date_facture pour le placer dans l’En-tête état, soit en glissant les éléments soit en les coupant et les collant. Renommez l’étiquette Date :, placez-la en Gras et recopiez la mise en forme sur le contrôle. Placez ensuite tous les contrôles des coordonnées du client à droite de l’En-tête état et supprimez leurs étiquettes. Appliquez une mise en forme identique sans Gras. Faites de même avec le Numéro client (que vous renommerez) et le Mode de paiement, mais conservez leurs étiquettes.
Ramenez les éléments restants vers la droite et placez-les de manière lisible comme pour le formulaire et l’état, renommez l’étiquette ID_Tarif en Référence et Prix_unitaire en Prix unitaire. Réduisez au maximum les parties En-tête de page et En-tête de groupe ID_Client une fois que vous aurez déplacé les étiquettes dans la partie En-tête de groupe ID_Date_facture.
Pour le total, procédez de la même manière que pour l’état précédent et dans le Pied de page, supprimer les 2 contrôles présents et insérez 3 nouvelles Zones de textes identiques à celles que l’on a insérées dans le sous-formulaire dans la partie Pied état pour calculer le Total HT, la TVA et le Total TTC. Pour gagner du temps, vous pouvez même faire un copier-coller de l’un à l’autre. Faites bien attention à ne pas insérer ces contrôles dans le Pied de page auquel cas vous auriez des erreurs à la place des résultats.
Pour séparer les titres du détail de la facture, vous pouvez insérer un Trait disponible dans les contrôles et le placer dans la partie En-tête de groupe ID_Facture_facture.
Bien sûr, n’oubliez pas les mentions obligatoires sur chaque facture que vous rajouterez en insérant des Zones de texte . Un prochain article traitera de ces mentions en même temps que la création de devis et facture sur Excel. Ce tutoriel est bien assez long comme ça 🙂 .
Maintenant, vous pouvez enregistrer les modifications de votre état et le lancer. À l’ouverture, vous avez un message vous demandant le numéro de facture :
Et vous devriez obtenir ceci :
Pour gagner du temps, ouvrez votre formulaire F_Clients en Mode création et, dans le sous-formulaire S/F_Date_facture, insérez un bouton
. Choisissez Opérations sur état > Imprimer un état, cliquez sur Suivant, choisissez l’état E_Imprimer_une_facture et cliquez sur Terminer. Replacez le bouton comme vous le souhaitez et fermez votre formulaire en l’enregistrant. Désormais, lorsque vous établirez une facture vous pourrez l’imprimer de suite en saisissant son numéro.
Création de l’interface de l’application Access
Pour terminer, nous allons créer l’interface de l’application que nous venons de créer.
Nous allons commencer par créer un état simplement avec la table T_Tarifs en ajoutant tous ses champs sauf Date et en choisissant une Orientation Paysage. Renommez le titre T_Tarifs en Catalogue, ID_Tarifs en Référence et Prix_unitaire en Prix unitaire et repositionnez les étiquettes et contrôles. Supprimez les éléments du Pied de page et fermez en enregistrant votre état. Renommez-le dans la barre de navigation Catalogue.
Voici votre catalogue :
Créer un formulaire avec l’Assistant formulaire avec les champs de la table T_Clients et nommez-le F_Fiches_client. Présentez-le à votre guise, ajoutez un bouton de recherche comme nous l’avons fait dans le formulaire F_Clients et enregistrez-le.
Allez maintenant dans l’onglet Créer > Création de formulaire .
Cliquez droit sur la partie Détail > En-tête/pied de page de formulaire, insérez votre logo en haut à gauche dans la partie En-tête de formulaire et écrivez le nom de votre société.
Vous pouvez ajouter la date et l’heure à droite en cliquant sur Date et heure de l’onglet Création. Choisissez le format et cliquez sur Ok.
Dans la partie Détail, vous allez insérer 5 boutons :
- Créer ou modifier une fiche client ;
- Ajouter ou modifier un produit au catalogue ;
- Imprimer le catalogue ;
- Consulter ou établir une facture ;
- Quitter.
Pour chacun d’eux, vous allez insérer un bouton et le paramétrer.
- Premier bouton : Opérations sur formulaire > Ouvrir un formulaire > F_Fiches_client > Ouvrir le formulaire et afficher tous les enregistrements. Choisissez le texte et saisissez Créer ou modifier une fiche client. Cliquez sur Terminer.
- Deuxième bouton : créez le bouton et refermez la fenêtre. Allez dans la Feuille de propriétés
, à l’onglet Évènement, sur la ligne Sur clic, cliquez sur et choisissez le Générateur de macro. Pour créer cette macro, sélectionnez dans le menu déroulant OuvrirTable et indiquez les données suivantes :
Fermez en enregistrant et, dans l’onglet Format, à la ligne Légende saisissez Ajouter ou modifier un produit au catalogue.
- Troisième bouton : Opérations sur état > Imprimer un état > Catalogue. Saisissez Imprimer le catalogue > Ouvrir le formulaire et afficher tous les enregistrements.
- Quatrième bouton : Opérations sur formulaire > Ouvrir un formulaire > F_Clients. Saisissez Consulter ou établir une facture.
- Dernier bouton : Applications > Quitter une application et gardez l’image.
Dans la Feuille de propriétés , à l’onglet Format, masquer le Sélecteur. Replacez correctement les boutons et agrandissez-les si nécessaire, réduisiez le Pied de formulaire au maximum, fermez ce formulaire et nommez-le Menu.
Il ne reste plus qu’à afficher ce menu à l’ouverture de cette base de données.
Pour cela, allez dans Fichier > Options > Base de données active et, à la ligne Afficher le formulaire, sélectionnez Menu. Vous pouvez également cocher la case Compacter lors de la fermeture, ce qui vous évitera d’avoir à le faire manuellement. Cliquez sur Ok et fermez votre base de données.
Voici votre interface, mais vous pouvez bien sûr ajouter d’autres « raccourcis » :
Toutes mes félicitations pour être arrivé jusqu’à la fin de ce tutoriel qui était assez long, je vous l’accorde, mais vous avez maintenant une application prête à l’emploi pour gérer vos factures 🙂 .
Bonsoir,
J’aimerais bien que tu essayes de nous donner une méthode pour transformer le Net à payer de la facture en lettres.
Par exemple, j’ai un total de 1200,00 $ et je le veux en lettres, Payé : Mille deux cents dollars
Cela fait appel à du code :
Bonjour je cherche dans l’espace privé la base de données facture avec l’état facture, mais je ne le trouve pas.
Sinon, top votre site ! Super pédagogique ! J’adore.
Bonjour Aurélien,
La base de données présente au bas de l’article sert à reprendre le fil pour cette partie du tutoriel, il est donc normal que vous ne trouviez pas l’état.
Bonjour,
J’ai quelques remarques pour améliorer la facture :
– Un champ pour l’unité de mesure
– Numéro de facture automatique pour chaque nouvelle facture
– Mise à jour des prix
– Logo
Bonjour,
Je vous remercie pour vos suggestions cependant le numéro de facture automatique se fait déjà dans le tutoriel, la mise à jour des prix a été expliquée dans le premier volet de la série et je n’ai pas réexpliqué comment insérer un logo dans l’état étant donné que je l’avais expliqué dans le premier tutoriel pour créer un état.
Bonjour
D’abord super blog : j’y apprends beaucoup de choses !
Concernant ce tutoriel pour faire une facture, j’ai essayé de créer d’autres états pour faire aussi un devis, bon de commande, bon de livraison… qui correspondent à ce n° de facture, et j’ai mis d’autres commandes boutons à côté de celui existant (dans le tuto) pour lancer l’impression de ces autres documents. Mais, comme j’ai fait des copier-coller de l’état E_imprimer_une_facture, en changeant l’intitulé (E_imprimer_un_devis par exemple) et en changeant la mise en page, j’ai un problème : la petite fenêtre « veuillez saisir un numéro de facture » qui apparaît et qui me renvoie toujours vers la facture !
C’est quoi l’astuce ? Merci
Bonjour,
C’est tout à fait normal, car la « question » porte sur le numéro de facture (regardez la requête en mode création). Il faudrait donc copier-coller cette requête et modifier les champs pour bon de commande, bon de livraison…
Bonjour,
Tout fonctionne parfaitement sauf que je rencontre un problème lorsque je veux créer une facture à un client qui a déjà une facture dans la base. En effet, quand je cherche le client pour remplir la facture, ça me met bien le nom de la personne et ça me sort également la première facture effectuée à ce client. Du coup, je ne peux pas créer une seconde facture pour un même client. Comment pourrait-on faire ? Merci d’avance.
Bonjour Maxime,
L’utilisation de ce formulaire est expliquée à la fin de la 2e partie.
Super tuto ! Un grand merci ! Ça m’aide beaucoup dans ma petite entreprise !
Supers tutos.
C’est génial, tous vos tutos sont excellents.
Continuez ainsi et encore BRAVO !!!!
Bonjour,
Je me demande si c’est possible d’utiliser ce procédé pour faire des devis. Sinon, peux-tu expliquer comment faire ?
Très bon tuto, ça m’a été d’une grande aide.
Bonjour Madeleine,
Une base de données de ce type est prévue prochainement, mais je n’ai pas encore fait les recherches pour la créer.
Bonjour, quand je crée l’état, le prix unitaire ne s’affiche pas. Que puis-je faire ?
Bonjour,
Vous n’avez peut-être pas inséré le contrôle dans l’état en mode Création.
J’en profite pour vous faire part d’une chose utile lorsque l’on veut afficher une étiquette + sa donnée associée au même endroit (cela évite d’avoir des blancs entre des étiquettes et des données).
Exemple : lorsque l’on veut afficher « Facture n°2014001 » ou « Facture du 19/02/2014 » et que « 2014001 » et « 19/02/2014 » sont des données…
Remarque : inconvénient -> la mise en forme (format) est commune pour l’étiquette et la donnée.
Pour cela, il faut insérer une « zone de texte », supprimer son étiquette (car inutile) et dans le champ « indépendant » faire : Propriétés > Données, puis, dans Données sources, écrire :
= "Facture n°" & [no_facture]
OU l’autre exemple :
= "facture du " & [date_facture]
Voilà.
Merci encore pour le tuto sur les factures, ça m’a grandement été utile.
Merci beaucoup Aidel pour cette astuce que je testerais dès que possible 🙂
Bonjour Lydia,
J’ai suivi avec intérêt vos cours pour créer une facture avec Access.
Tout fonctionne bien ! Merci.
J’essaye maintenant d’utiliser vos cours pour élaborer une application Access dans SharePoint online, via un abonnement office365.
La plupart des points de votre cours fonctionnent.
Mais, je ne parviens pas à appliquer votre code VBA pour ajouter des articles à une facture et je ne vois pas comment créer les États dans ce type de création.
Pouvez-vous m’apporter votre éclairage sur ces deux points ?
Merci par avance.
Cordialement
Florian
Bonjour Florian,
Je suis désolée, mais je ne connais pas du tout SharePoint online.
Bonjour Lydia,
J’ai suivi vos conseils, tout reprit de A à Z et la base de données fonctionne parfaitement. Merci encore pour tout, j’en ai encore appris sur Access.
Bonne continuation.
Cordialement.
Bonjour Lydia,
Suite à l’application Access « Facturation », j’ai construit une base de données « Adhérents » et je voudrais ouvrir la base « Facturation » via la base « Adhérent » par un bouton de commande.
Pouvez-vous me renseigner ?
Cordialement.
Bonjour Jean-Michel,
Je vous invite à consulter cet article.
Lydia, bonjour !
Suite à vos conseils, je me suis rendu sur le lien préconisé pour un bouton de commande pour ouvrir une autre base.
Malheureusement, cela ne fonctionne pas.
Voici le chemin basique Office : C: Program Files-Microsoft Office-Office15-MSACCESS (icône de lancement base Access) et, ensuite, mon chemin de ma base « Facturation » : C:Jean-mi-Amag-Facturation – Facturation-Amag.
Puis, enfin, voici mon code VBA :
Shell """C:\Program Files\Microsoft Office\Office15\MSACCESS"" ""C:\Jean-mi\Amag\Facturation\Facturation-Amag.accdb""", vbMaximizedFocus
Si quelqu’un peut m’aider, il sera le bienvenu.
Pour info, j’utilise Office 2013.
Bonjour Jean-Michel,
Effectivement, chez moi non plus, ça ne fonctionne pas. Par contre, si vous placez ce code VBA en procédure évènementielle sur clic en l’adaptant à votre cas, cela fonctionne (Test étant le nom du fichier et Commande1 le nom du bouton) :
Option Compare Database
Private Sub Commande1_Click()
Shell """C:\Program Files\Microsoft Office 15\root\office15\MSACCESS.EXE"" ""C:\Users\Lydia\Desktop\Test.accdb""", 1
End Sub
Bonjour,
J’ai rencontré un problème. Lorsque je vais sur F_Clients en mode formulaire, je rentre le mode de paiement puis je sélectionne un produit dans la liste déroulante « Référence », un encadré s’ouvre et m’indique
« Le moteur de base de données Microsoft Access ne peut pas trouver d’enregistrement dans la table « T_Date_Facture » avec le(s) champ(s) « T_Factures_ID_Date_Facture » correspondant à la clé. »
Qu’est-ce que cela veut dire ?
Sinon 2e question :
J’ai inventé des produits au départ et j’ai fait des factures bidons pour vérifier que tout marchait correctement sauf que maintenant le numéro Référence des produits commence à 16 (j’avais créé 16 produits que j’ai supprimés après) et mes factures à 4 (j’ai aussi fait 4 factures), mais je souhaiterais « remettre les compteurs à zéro », comment procéder ?
Merci !
Bonjour Stéphanie,
Avez-vous vérifié les liens entre vos tables (les noms des tables indiquées sont-ils corrects) ?
Concernant votre 2e question, un tuto est prévu mercredi.
Bonjour,
Merci pour ses tutos 🙂
Une fois arrivé à la fin de celui-ci, est-il possible de lancer le formulaire « menu » dans une fenêtre du type Windows (par exemple créée sous VBA express), afin de ne pas avoir la fenêtre Access ouverte ? Ceci pour des raisons de sécurité, si le programme devait être utilisé par une autre personne, afin d’éviter qu’elle ne « s’amuse » à cliquer un peu partout.
Bonjour,
Apparemment, oui, toujours en VBA : http://www.developpez.net/forums/d384162/logiciels/microsoft-office/access/contribuez/faq-ouvrir-formulaire-ouvrir-access/
Bonjour Lydia,
J’ai un problème, j’ai fait un sous-formulaire. Lorsque je suis en mode formulaire, je vois très bien mon sous-formulaire, mais il y a seulement une facture qui s’affiche. Toi, dans ton tuto, les factures apparaissent. Moi, dans le client numéro 1, il y a 2 factures et j’en vois seulement une. Pour voir l’autre, il faut que je clique sur la flèche du bas. Je suis capable de créer une autre facture le total fonctionne très bien. Je vois que j’ai plusieurs factures par le total HT en bas. Peux-tu me dire quelles erreurs j’ai faites ? Merci, j’aime bien travailler avec tes tutos, c’est très bien expliqué.
Bonjour France,
Dans ma base de données aussi, je dois changer de facture avec les flèches.
Bonjour, grand merci pour ce tuto, il m’a été très utile. Cependant j’aimerai ajouter un champs « quantité en stock » pour chacun de mes articles et qu’a chaque fois que je valide une ligne de la facture que la quantité achetée soit retirée du stock. Une indication pour moi svp.
Bonjour,
Surement en VBA.
Bonjour, tout d’abord je vous remercie pour ces tutoriels qui m’ont été très utiles pour la réalisation de ma base de données. En revanche, j’ai récemment rencontré un problème : le pied de mon état apparaît sur une deuxième page lorsqu’il y a trop de lignes dans ma facture. Bien qu’ayant modifié le paramètre « hauteur automatique », ce problème persiste. Comment pourrais-je le résoudre ?
Bonjour,
Si votre facture est longue, le pied de page sera forcément plus loin, sinon, essayez de le placer dans le pied d’état.
Merci. Vos tutos sont super !
Bonne continuation.
Bonjour,
Quand j’imprime ma facture, j’ai toujours une deuxième page qui s’imprime avec simplement le haut de la page.
Merci d’avance pour votre réponse.
Alain
Bonjour Alain,
Il faudrait que vous regardiez du côté du pied de page ou pied d’état qui doit être trop long.
Bonjour Lydia,
Je viens de m’inscrire car je trouve ton site et la manière de présenter comment créer une facture avec Access très bien faits. Étant novice en Access, je souhaiterais adapter la facture suivant ce dont j’ai besoin. Est-il possible de créer un bouton dans le formulaire pour avoir soit la facture en français soit la facture en néerlandais ?
Yannic
Bonjour Yannic,
Dans ce cas, il faudrait créer 2 états (l’un en français, l’autre en néerlandais). Puis, dans le formulaire de saisie de la facture, créer des boutons : l’un qui enverrait vers l’état français et l’autre vers l’état néerlandais.
Re-bonjour Lydia,
Merci pour la réponse. Les boutons que tu me parles, ce sont des boutons « commande » ? Peux-tu m’en dire un peu plus ?
Maintenant, encore une autre question, dans le formulaire de saisie de la facture, la description des produits, serais-je obligé d’utiliser une seule langue ? Comment faire pour pouvoir choisir soit l’une ou l’autre langue ?
Oui, ce sont les boutons de commandes. Pour le formulaire, il faudrait, dans ce cas, indiquez, dans la table des prestations, chaque prestation avec les 2 langues, donc en double, et créer un bouton qui permettrait de filtrer le sous-formulaire pour n’afficher que la langue voulue en n’ayant bien sûr l’info dans la table des prestations pour qu’Access sache à quelle langue correspond la prestation.
Oui, c’est encore l’embêtant du jour. Ok, pour l’explication. Mais, dans la table des prestations, il faut créer une colonne en français et une colonne en néerlandais alors ? Ou bien on crée une table en français et une table en néerlandais ? Et comment faire pour créer un bouton qui filtre le sous-formulaire ?
Non, vous saisissez les prestations les unes en dessous des autres (les deux langues mélangées). Pour le filtre, vous trouverez le code VBA sur internet car je ne l’ai pas en tête.
Que dois-je taper sur internet pour trouver le code VBA car je ne trouve pas ?
https://www.google.fr/?gws_rd=ssl#q=filtrer+sous+formulaire+access+vba
Savez-vous me trouver le code VBA pour la langue ?
Il n’y a pas de code pour l’état, créez simplement une macro : Access vous guidera.
Ok. Mais je parlais du code VBA de la langue pour le filtre du sous-formulaire. Savez-vous me le trouver ?
Le plus simple, dans ce cas, serait de baser le sous-formulaire sur une requête (filtrée selon la langue), car c’est compliqué d’expliquer comme ça surtout si vous ne connaissez pas le VBA.
Merci beaucoup pour les renseignements Lydia. Je vais essayer de me débrouiller. Si j’ai encore des questions, je reviendrais vers toi.
Bonjour Lydia,
C’est grâce à tes tutos que je me suis lancé dans Access. Je suis en train de faire une application pour bon de commande. C’est quasiment la même chose que la facture à quelques différences près. Je souhaiterais savoir s’il y a un moyen d’afficher des lignes vides automatiquement dans l’état de la facture jusqu’au pied d’état quand on a par exemple 2 ou 3 articles.
Cordialement et joyeux Noël à tous.
Bonjour et bonne année Dylan.
Je ne pense pas, car l’état ne peut afficher que les informations que lui donne la table en lien avec.
Bonjour,
Je vous remercie pour le temps que vous mettez à faire des tutos bien expliqués. Comme plusieurs, cette base de données me sert pour ma petite entreprise.
J’ai une question. J’ai modifié la facture pour livraison, donc j’ai besoin régulièrement de questionner la base de données sur le champ date afin de voir les livraisons avec nom, adresse, téléphone, produit, total de la commande pour la date X ou entre deux dates. Malheureusement, je n’y parviens pas. Les jumelles qui sont dans la fiche client ne me permettent pas de faire une recherche sur le champ date_facture (moi date_livraison), même si je mets le signe #. Pourriez-vous m’aider ?
Pour résumer, je voudrais faire une recherche sur une date donnée ou entre deux dates et qu’il me donne tous les résultats avec les noms, adresses et la description de la commande. J’aimerais avoir un genre de rapport comme E_imprimer_toutes_les_factures, mais juste les résultats de la recherche effectuée.
Merci.
Bonjour et merci Anafolia.
Concernant votre demande, pourquoi ne pas simplement utiliser une requête ?
Bonjour,
Je vais me mettre sur le projet de facturation pour commencer, mais je voudrais, après, faire une application de saisie de tickets de caisse, afin de faire des comparatifs de prix suivant les diverses enseignes pour des produits identiques et faire des comparatifs des prix au fil du temps.
Donc je voudrais savoir s’il était possible de partir sur la base du projet facturation et le modifier pour aller ver mon projet.
Merci pour votre site.
Pascal
Bonjour Pascal,
Le mieux est de créer une base par projet à moins qu’il y ait un lien, car les champs, les relations…ne seront pas les mêmes.
D’abord, je vous remercie pour ce travail que j’apprécie. Je veux juste avoir les concepts de MERISE (MCD et MLD…) de ce sujet.
Je n’utilise pas ce concept.
Vraiment quand j’ai eu à parcourir vos tutoriaux, ça m’a beaucoup intéressé, moi je travaille souvent avec Access.
Bonjour Lydia,
Je suis ravi de vous lire et laissez-moi vous dire que c’est une réponse à un problème. Je me perdais à la conception de champ de calcul. Je travaille actuellement sur la gestion de stock que j’aimerais bien combiner avec la création de factures.
Je vous en faire part.
Bien à vous.
Jonathan
Merci Jonathan.
Est-il possible d’envoyer un état (facture par exemple) par un courriel indiqué sur la fiche client ?
Oui, en le paramétrant en VBA.
Bonjour Lydia,
Tout d’abord merci pour ce remémorage d’Access que je n’ai pas utilisé depuis 4 ans donc compliqué de recomprendre les états, etc. sans une petite aide.
Je suis actuellement à la fin de votre tuto donc j’ai ma base prête à l’emploi, mais j’ai juste un petit détail qui me chagrine et me dérange un petit peu.
N’est-il pas possible d’avoir un numéro de facture qui repart à 1 pour chaque client ?
Exemple : j’ai deux clients Tata et Bernard. Tata passe une commande le 01/01/15 donc sa première commande donc facture #1 et Bernard passe sa première commande le 03/03/15 pourtant elle sera considérée comme une deuxième facture alors oui c’est le cas pour la « société » mais pas le cas pour le client.
J’aimerais également pouvoir avoir un compteur de factures pour pouvoir effectuer une remise toutes les 10 factures plutôt que de les compter à la main, voyez-vous une solution à cela ?
Merci tout de même pour votre aide !
Bonjour Steve,
Je ne vois pas trop comment vous pouvez faire cela, car le principe d’un numéro de facture est qu’il soit unique et que les numéros se suivent. Sinon il faudrait essayer avec un champ numérique et non numeroauto en créant un code VBA qui incrémenterait automatiquement le numéro. Il en sera de même pour votre seconde question, mais si vous redébutez avec Access, ça va être compliqué.
Hello Lydia,
Afin de se passer du choix « mode de paiement » pour ajouter une facture, j’ai créé un bouton, puis sur l’événement sur clic, j’ai ajouté ce code :
Private Sub Commande15_Click()
DoCmd.GoToRecord , , acNewRec
Facture_Payée.Value = True
Facture_Payée.Value = False
End Sub
Ce bouton crée une nouvelle facture, mais je me pose une question : comme puis-je faire pour créer un autre bouton qui supprime la facture courante (il faut supprimer l’enregistrement dans deux tables ?).
Merci pour vos conseils.
Bonjour Sterk,
Oui, effectivement, il faut d’abord supprimer les items de la facture et ensuite la facture elle-même.
Salut, très bon boulot.
Est-ce possible de faire une gestion de stock ? Histoire de connaître le nombre d’éléments qu’il nous reste à vendre et combien on en a vendu ?
Un truc auquel on ajoute manuellement la quantité entrante, mais qui, par contre, calcule et enlève automatiquement la quantité sortante en fonction des factures faites.
Bonjour,
Oui, avec Access, c’est possible.
Vous pouvez me dire comment s’il vous plaît ? J’ai cherché désespérément sur le net, je n’ai rien trouvé.
Encore merci pour ce superbe travail.
Cela ne s’explique pas en un commentaire. C’est prévu pour faire l’objet d’un pas-à-pas payant.
Bonjour,
J’ai réalisé les 3 modules Access pour la création de factures, cela fonctionne très bien. Par contre, j’aurai aimé créer une base sortie de stock liée au compte client.
Est-ce compliqué à réaliser ?
Merci d’avance.
Alain
Bonjour Alain,
Compliqué, tout est relatif ;), mais cela demande différentes manipulations.
Mais encore ? C’est possible ? J’aimerai vraiment le réaliser.
Cordialement.
Alain
Oui, cela est prévu sous forme de pas-à-pas détaillé payant ou application prête à l’emploi, mais je ne peux vous dire de date.
En attendant, vous pouvez peut-être trouver votre bonheur : https://www.google.fr/search?q=stock+access&ie=utf-8&oe=utf-8&gws_rd=cr&ei=upQTVsH6NMH6Usazj_AD#q=gestion+stock+access
Merci.
Cela m’intéresse et aussi merci pour les liens.
Cordialement.
Alain
Bonjour,
Petite question : j’ai deux listes déroulantes (N° chantier, Nom chantier), j’aimerais pouvoir choisir un n° chantier sur la première liste déroulante et que l’autre liste me mette automatique le nom du chantier concerné.
De plus, une fois que j’ai sélectionné un chantier, j’aimerais que ça m’ouvre un formulaire avec un bouton, le problème c’est, que je choisisse Chantier A ou Chantier B, ça m’ouvre exactement le même formulaire.
PS : merci pour vos tutos 😉
Bonne journée
Lauranne
Bonjour Lauranne,
Pour la sorte de RechercheV avec Access, je vous invite à consulter le tutoriel sur les listes en cascade.
Pour le formulaire, il faudrait programmer le bouton sur clic en disant que si le nom du chantier est « Chantier A » ouvrir le formulaire 1, sinon le formulaire 2.
Merci 😉
Avez-vous fait un tuto pour utiliser un devis en tant que facture ?
Avec mes meilleures salutations.
Bonjour,
Non, je suis en train de créer une BDD qui le permettra, elle sera ensuite en vente sur le site, mais peut-être que j’en ferais une formation également.
Bonjour,
J’avoue que je n’ai pas encore vu un tutoriel qui m’a autant impressionné et aidé, merci infiniment. Cependant, j’ai un problème, la référence n’affiche aucune valeur dans la colonne. Aidez-moi s’il vous plaît.
Bonjour Camara,
Avez-vous vérifié votre source de données ?
Toutes les tables sont correctement liées, dans le formulaire principal la référence est bien affichée, mais dans l’état, ça ne s’affiche pas, j’ai vérifié la source, c’est identique à celle du formulaire.
Je vous invite à refaire les manipulations, car les références sont censées être affichées dans le sous-sous-formulaire et vous indiquez le formulaire principal et si les données sont enregistrées dans la table correspondante, il n’y a pas de raison qu’elles ne s’affichent pas dans l’état.
Évidemment, dans le sous-formulaire S/F_facture c’est affiché, mais, comme vous le dites, je vais commencer la manipulation, après je reviens. En attendant, merci de votre assistance et de vos brillants efforts pour aider le monde.
Enfin, j’ai repris les manipulations et tout donne comme prévu, merci infiniment Lydia. Grâce à tes tutos, je deviens de plus en plus influent dans mon département et je me maintiens bon.
Bonjour, merci pour ce tuto que je vais adapter pour mes besoins (création d’une base pour gérer des conventions de formation).
J’ai quelques petites astuces pour gagner du temps :
– Pour ne pas avoir à retirer les underscores à chaque fois que l’on utilise un champ dans un état ou dans un formulaire, lors de la création du champ, dans les paramètres, dans légende, mettre le nom de champ qui doit apparaître dans les étiquettes.
– Pour la mise en page des formulaires en mode tableau, sélectionner les champs et étiquettes et aller dans l’onglet organiser et sélectionner Empilé.
Maintenant, je me lance sur ma base.
Bonjour et merci pour ces astuces Séverine.
Ce tuto date un peu et, désormais, j’utilise toujours la propriété Légende (beaucoup plus rapide surtout lorsque l’on recommence un formulaire).
Bonjour,
Je demande pourquoi quand je calcule le montant total sur l’état, j’ai des #####, mais si je mets le curseur, le résultat apparaît. Si je l’imprime, le montant total ne s’affiche pas correctement.
Bonjour,
Le champ est trop petit.
Le problème est réglé, mais mon seul souci, c’est de gérer le stock de mes articles. Par exemple, j’ai 50 articles dans la base de données et je vends 10 articles, je veux dans le stock actuel trouver 40 pour cet article vendu.
Voici la table stock : code_stock-designation-quantite-stock_entree-date_entree-stock_sortie-date_sortie
Désolée, je ne me suis pas encore penchée sur la gestion de stocks avec Access.
Donc comment créer une liste déroulante après avoir saisi les informations sur champ ?
Je ne comprends pas le rapport avec la gestion de stocks.
J’ai un champ désignation et j’ai mis des informations sur ce champ comment le modifier en une liste déroulante.
Il faut voir à la ligne Contenu de la Feuille de propriétés pour mettre la liste des éléments d’une table.
Pourquoi ma zone de liste déroulante ne peut pas contenir plus de 1 022 articles ?
Je ne sais pas, la limite est de 65 535 lignes.
Bonjour, j’ai fait une facture. Dans cette facture, j’ai des remises de prix sur les clients, du coup, j’ai calculé la remise totale pour les clients et je veux calculer la taxe qui se fixe à 18 %. Les calculs, je les fais avec des zones de texte sur Access. Voici ma procédure :
– Ce qui représente le total net :
=Somme([prix_unitaire]-([prix_unitaire]*[remise]/100))
– Taxe(18) :
=Somme([prix_unitaire]-([prix_unitaire]*[TVA]/100))
Bonjour,
Et quelle est la question ?
Bonjour,
Ma question est de trouver le montant taxe.
Bonjour,
=[controlecontenantletotal]*0,18
Comment effectuer des recherches dans toutes les feuilles Excel ?
Merci.
Avec rechercher-remplacer.
Bonjour,
J’ai la version Access 2007 et il ne me pose pas la question « Comment souhaitez-vous afficher vos données ». Est-ce normal ? J’utilise mes données provenant d’une requête qui englobe les données de 3 tables. Merci.
Bonjour,
La suite fonctionne ? Car ce n’est que la présentation.
Oui, mais je n’arrive pas à mettre mes adresses dans le haut de la page.
Je ne comprends pas. Vous voulez dire que vous n’avez pas d’en-tête d’état ?
Salutations,
J’ai suivi le tuto, seulement, lorsque je lance le formulaire, les factures ne défilent pas avec les clients, et, en plus, l’état me renvoie la première facture seulement ! Une solution ? Merci pour le tuto !
Je fais ça très bien sur Excel, mais je plante avec Access…
Bonjour,
Il y a des boutons de navigation en bas qui permettent de « défiler » comme indiqué à la fin du tutoriel.
Bonjour, je viens de découvrir votre site et il est génial !!
Je suis occupé de bosser sur une application de ce genre pour mon père, un plombier, qui ne connait rien du tout en informatique, je veux donc la faire la plus simple possible.
Actuellement, il bosse sur Excel avec deux feuilles de calcul Devis / Facture. En suivant divers avis et en voyant ce que vous avez réalisé, je pense que passer sur Access pourrait être simple.
Mais j’ai quelques questions.
Ayant des interventions chez des locataires, agences de location, est-il possible d’ajouter un lieu d’intervention en générant une nouvelle table (Propriétaire > Invention A, B, ou C) ?
N’utilisant que très rarement le même matériel, les prix ne sont jamais les mêmes. Peut-on utiliser une saisie manuelle, tout en gardant le remplissage automatique dans le genre du tableur disponible sur Excel ?
Et dernière question, un état d’avancement du dossier est-il possible (Devis créé, envoyé, accepté, payé par exemple) ?
Merci d’avance pour ton travail, ainsi que le temps que tu as pris à me lire.
Cordialement.
Bonjour Hervé,
Je ne sais pas pourquoi vous souhaitez générer une table à chaque ajout de lieu d’intervention, mais il s’agit d’une requête de création de tables ou requête d’ajout.
Pour les prix, rien ne vous empêche de saisir des prix manuellement (au pire, ne créez pas de table tarifs).
Pour l’état d’avancement, rajoutez une liste déroulante avec les possibilités.
Merci pour la réponse aussi rapide.
En fait, j’imaginais créer une zone de liste en cascade T_Lieu_Intervention avec en l’ID_client en lien de concordance.
L’idée est trop tordue ou va trop demander en ressource ?
Je ne fais que débuter :/
Un client a-t-il plusieurs lieux d’intervention ? Si oui, alors dans ce cas, oui, c’est pertinent. Il faut une table séparée pour les lieux et vous pourrez ensuite faire votre liste en cascade.
C’est bien ça.
M. Dupont peut demander une intervention chez lui ou chez ses locataires par exemple.
Bonjour Lydia,
Super votre tuto, je suis assistant d’un gestionnaire et suis chargé de créer une facture qui prend en compte les produits achetés et ton tuto a été idéal pour moi, je n’ai rien changé, mais le problème est, qu’au niveau des clients, il y a des sous-clients c’est-à-dire un client qui a d’autres clients qui achètent chez nous. Pour nous faciliter la tâche, on a créé un code pour le client et ce code est lié aux sous-clients. Maintenant, ma question est : est-ce possible de créer une zone de texte au niveau du formulaire où tu saisiras manuellement le code pour chaque client. Merci d’avance pour votre réponse rapide, ça m’aidera beaucoup.
Bonjour Seyba,
Il suffit de rajouter une liste déroulante liée, au niveau de la source contrôle, au champ devant récupérer l’information.
Merci Lydia pour cette réponse, ça m’aide beaucoup, j’ai créé un autre champ vide en créant une zone de texte indépendante et j’introduis manuellement le code pour chaque client, merci encore. Prêt pour d’autres tutos.
Bonjour Lydia,
Tout d’abord, merci pour votre tuto qui m’a vraiment aidé :).
J’ai 2 questions, pourriez-vous m’aider s’il vous plaît ?
1) Est-ce que je peux actualiser assez souvent ma Table T-Tarifs qui est en relation avec un fichier Excel et qui aura des lignes supplémentaires à chaque actualisation ? Dois-je modifier quelque chose par rapport à votre tuto ou cela ne posera pas de problème ?
2) Je n’ai pas trouvé de macro sur le net pour ajuster automatiquement la taille des cellules des noms et prénoms pour que cela fasse « plus propre » dans l’adresse sur la facturation…
Merci d’avance.
Bonjour Jérémy,
1) Non, cela n’a pas d’importance, il faut juste que ça ne remplace pas les tarifs précédents pour le pas impacter les anciennes factures.
2) Lorsque vous êtes sur le contrôle du nom ou du prénom, il y a une propriété « Auto-extensible » dans la Feuille de propriétés qu’il faut passer à « Oui ». De même, pour « Auto-réductible ».
Ok, merci pour votre réponse 🙂
Bonjour Lydia,
Merci beaucoup pour ces tutos que j’ai suivis pas-à-pas.
Je souhaiterai maintenant retrouver sur un « État » toutes les factures de janvier, par exemple, à partir d’une « Requête ».
Quel serait le critère à écrire à la place de [Saisissez un N° de facture] et dans quel champ ?
Merci d’avance.
Bonjour Thierry,
Pour une cliente, j’avais créé un champ dans la requête :
Mois: Format(SérieDate(Année([Date_facture]);Mois([Date_facture]);Jour([Date_facture]));"mm/aaaa")
Et en critère :
[Afficher les factures éditées pour quel mois (au format mm/aaaa) ?]
Ce qui, en indiquant
01/2018
par exemple, affichait uniquement les factures dont le champ Date_facture était de janvier.Bonjour Lydia,
Avant tout, j’aimerais vous féliciter pour votre site ainsi que vos explications qui sont, pour moi, les meilleures de ce que l’on peut trouver actuellement.
Super travail, vraiment, et un grand merci, grâce à vous j’ai pu monter ma propre base de données comme je la voulais ! J’aimerais juste savoir s’il était possible de rajouter des remises sur facture, j’en aurais plusieurs sous forme de %, mais impossible de trouver comment faire, il y a toujours quelque chose qui bloque ! Avez-vous déjà créé un tutoriel à ce sujet ?
Merci beaucoup,
Cordialement.
Bonjour et merci Amélie.
Non, je n’en ai pas créé.
Si c’est pour appliquer une remise sur le montant total, il faut rajouter un contrôle qui contiendra le pourcentage et un autre avec le montant de la remise. Ensuite, il faut adapter les calculs des autres contrôles pour que cela soit correct.
Merci Lydia,
Les remises seraient ligne par ligne (prestation par prestation).
Du coup, j’ai réussi à mettre le montant remisé (caché pour la facture) ainsi que le sous-total de chaque ligne, mais arrivée au total facturé en pied de page le montant ne se s’affiche pas, au lieu de ça, voilà le message : #erreur. La formule étant
=somme([sous_total)]
vu que c’est calculé ligne par ligne, du coup. Avez-vous une solution ?Merci beaucoup pour votre temps !
C’est parce que ce n’est pas dans le pied de page qu’il faut le mettre, mais dans le pied de formulaire. De même pour l’état, ce sera dans le pied d’état.
Bonjour Lydia,
Peut-on personnaliser l’état « imprimer une facture » en faisant, par exemple, des encadrés dans le détail de l’état ? Je voudrais tracer des encadrés/rectangles dans ma partie détail, mais j’ai l’impression qu’il faut passer par du code VBA.
Bonjour Jeremy,
Il n’est pas nécessaire de passer par de la programmation, vous avez 3 possibilités :
– Utiliser les bordures des contrôles ;
– Utiliser le contrôle Ligne ;
– Utiliser le contrôle Rectangle.
Merci pour votre réponse 🙂 . Par contre, dans le détail, ça ne fait pas un rectangle « global », mais j’ai plusieurs rectangles en fonction du nombre de lignes que j’ai…
Dans l’idéal, je voudrais un rectangle à bord arrondi, mais ça, je ne pense pas pouvoir le faire en utilisant le contrôle rectangle.
Ah oui, dans ce cas, il faut passer par du VBA apparemment. À vous de voir, si le temps nécessaire vaut la peine d’avoir des rectangles arrondis 😉
Oui, c’est sûr et n’y connaissant pas vraiment en VBA, le choix va être vite fait 🙂 . Par contre, dans le cas où j’ai plusieurs lignes de produit sur la facture, je peux, avec le contrôle rectangle, n’en faire qu’un seul global ? Car lorsque j’essaie, Access en met sur chacune de mes lignes.
Oui, effectivement, il faudrait voir si utiliser les Lignes résoudrait le problème en en plaçant dans l’en-tête et pied de groupe si vous en avez.
J’ai essayé en les mettant dans l’en-tête de pied de groupe, mais ça fait la même chose 🙁 …
Si vous ne mettez que dans l’en-tête et le pied de groupe, vous n’êtes censé n’avoir que 2 lignes (une au début, une à la fin), après, tout dépend du groupe que vous avez choisi de créer.
Je pense que je n’ai pas dû réussir à faire comme vous m’avez indiqué, car ça ne marche toujours pas 🙁 …
Est-ce que vous arrivez à créer une ligne comme plus haut sur l’état où je renseigne le numéro de facture dans la boîte de dialogue et après « Et vous devriez obtenir ceci : « , il y a l’aperçu de la facture 5 ?
Oui, en fait, mon fichier est identique au vôtre et je suis sur Access 2010.
Pardon, je voulais dire, oui, j’ai le même résultat que vous en temps normal, mais pas quand je veux intégrer le rectangle.
Dans mon exemple, c’est juste une ligne, pas un rectangle.
Donc, oui, pour la ligne.
Donc, utilisez les lignes.
Bonjour,
Je poursuis mon aventure avec ce dernier volet !
Lors de la création des états, j’ai bien tous les contrôles avec leurs étiquettes dans l’état de toutes les factures, mais, dans l’état imprimer une facture, il me manque le contrôle et l’étiquette « Prix Unitaire ».
Je peux la créer, comme vous l’expliquez, mais alors il devient impossible de les « dissocier », à savoir de faire monter l’étiquette dans « en-tête de page » et laisser le contrôle dans « Détail ».
J’ai tout refait deux fois, depuis la création de la requête, mais rien n’y fait, je ne parviens pas au bon résultat…
Avez-vous une solution ?
Merci par avance.
Rémi
Sans insérer « tout » le contrôle, vous pouvez créer un libellé et le nommer Prix unitaire.
Problème résolu !
Merci !
Base de données fonctionnelle, c’est parfait.
Bravo, merci et à bientôt !
Merci Rémi !
Bonjour, je veux savoir comment convertir le montant chiffré d’une facture en lettre dans un formulaire Access 2007 et merci.
Bonjour,
Voici un lien comportant un module à créer en VBA et une correction à effectuer pour le nombre 90 : https://www.developpez.net/forums/d1665050/logiciels/microsoft-office/access/vba-access/convertir-chiffre-lettres/
Bonsoir,
S’il vous plaît, Mme, comment créer une nouvelle facture et le numéro de facture sera changé automatiquement ?
Exemple : on va remplir la facture numéro 1 et lorsque je remplis la facture numéro 2, le numéro de facture sera affiché automatiquement.
Bonjour,
Créez un bouton et, sur clic de celui-ci, en VBA, utilisez la fonction DMax, ce qui aura pour effet d’incrémenter par rapport à la plus grande valeur de la table des factures.