Tutoriel réalisé avec Access 2013
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 au bas de l’article.
SOMMAIRE
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 :
- ID_Client : 0,989 cm ;
- Civilité : 1,905 cm ;
- Prénom : 2,989 cm ;
- Nom : 3,811 cm ;
- Adresse : 5,423 cm ;
- CP : 1,217 cm ;
- Ville : 5,714 cm ;
- Téléphone : 3,811 cm ;
- E-mail : 6,693 cm.
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)
Note : si vous rencontrez des difficultés à utiliser la syntaxe de ce code, consultez l’article sur la mise à jour de champs Access.
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 accoler le contrôle Total TTC à son étiquette en glissant le carré gris dans l’angle supérieur droit pour ensuite placer les 2 autres contrôles dans son alignement pour éviter un effet d’escalier. Puis, venez replacer 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.
Comment utiliser le formulaire des factures sur Access ?
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. Toutefois, une solution existe .
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.
Bonne soirée. C’est à propos d’Access.
Dernier article : Création d’une facture avec Access – Partie 2/3.
Je reçois les messages suivants quand j’essaie de tester le dernier sous-formulaire :
1- Un problème est survenu durant la communication entre Microsoft Access et le serveur OLE ou le contrôle ActiveX. Fermez le serveur OLE, puis redémarrez en dehors de Microsoft Access. Recommencez ensuite l’opération initiale à partir de Microsoft Access. En fermant cette boîte de message, un autre message apparaît :
2- L’expression Après Maj entrée comme paramètre de la propriété de type événement est à l’origine d’une erreur. Un problème est survenu durant la communication entre Microsoft Access et le serveur OLE ou le contrôle ActiveX.
Je vous admire. Merci beaucoup.
Bonsoir,
À quel moment ce message apparaît-il et quelle version avez-vous ?
Bonsoir et merci pour votre réponse. Quand je passe du mode création au mode formulaire pour essayer le contrôle référence du dernier sous-formulaire, je clique sur la flèche, je sélectionne une désignation, le message apparaît. J’utilise Access 2010. Merci pour votre précieuse aide.
Faites attention à d’abord choisir un moyen de paiement pour générer la facture. Cependant, sur internet, quelqu’un avait le même souci et cela venait de ces tables et clés primaires, je vous invite donc à revoir le premier tutoriel de la série pour voir si vous n’avez pas fait d’erreur.
En fait, le sujet est très intéressant pour moi. Je gère une agence de contrôle technique automobile et on propose des prestations à terme ou le client paye par virement bancaire après établissement d’une facture. Les prix dépendent de plusieurs taxes et sont fixes pour chaque catégorie de véhicules. On aura besoin d’une base donnée qu’on alimente chaque jour au fur et à mesure que les véhicules du client passe au contrôle et cette base englobe tous les clients et tous leurs véhicules et lorsque l’on veut facturer pour ce client, on fait appel à la base de données pour extraire uniquement les véhicules de ce client et uniquement ceux qui n’ont pas encore été facturés. Voilà en bref mon projet de facture si vous pouvez me donner un coup de pouce, je vous serais très reconnaissant.
Bonjour Hakim,
En suivant le dernier article de cette série, vous apprendrez à créer une requête pour l’état ce qui vous sera utile pour votre projet.
Bonjour
Merci pour votre réponse, on attend toujours la dernière partie de cette formation, la partie 3/3.
Si vous êtes inscrit, vous avez dû recevoir un e-mail vous informant de sa parution ce matin.
En fait, j’ai trouvé la dernière partie sur Youtube, mais il manque sa version texte.
C’est corrigé.
Bonjour, j’ai un problème de mise à jour de champ du S/Facture notamment le champ Désignation et Prix_unitaire, j’ai beaucoup essayé mais ça marche pas, j’utilise Access 2007.
Bonjour,
Avez-vous bien placé l’évènement après mise à jour ?
Bien sûr, j’ai cliqué sur le bouton ID_Tarif et ensuite événement, procédure événementielle après mise à jour et j’ai mis le code.
Et avez-vous bien modifié le nombre de colonnes ?
Bonjour Lydia,
Lorsque j’ai 2 ou 3 taux de TVA différents dans le même corps de facture, en bas du formulaire ou en pied d’état, comment faire pour calculer la somme HT de toutes les lignes correspondantes respectivement à chacun des taux ?
Bonjour Gérard,
Vous devriez commencer par créer une table TVA et rajouter un champ dans votre table produits pour la TVA. Ensuite, dans votre formulaire, puis votre état, il faudra rajouter autant de lignes que de taux. Pour calculer chaque montant de taux, peut-être faudrait-il utiliser la fonction IIf afin de n’afficher que le taux concerné.
Mais n’ayant pas testé, n’hésitez pas à revenir donner votre retour à ce sujet.
Bonjour Lydia,
Comment rajouter une colonne « remise » afin d’y appliquer une remise facultative et variable par ligne de produits ?
Merci beaucoup.
Bien cordialement,
Lorenzo.
Bonjour Lorenzo,
Je pense qu’il faudrait tout d’abord recenser toutes vos remises dans une table, et même les mettre en lien avec votre table produits si un même produit ne peut être affecté que par une seule remise, pour ensuite les intégrer à votre formulaire d’édition de factures puis à l’état.
Mais n’ayant pas testé, n’hésitez pas à revenir donner votre retour à ce sujet.
Bonjour,
Merci pour vos tutoriels, je vous félicite, vous êtes une personne très rigoureuse, ça se voit.
Pour répondre à Mohamed Lamsadi, même s’il a probablement résolu son problème, ça peut servir à d’autres. J’ai eu le même cas que lui et donc probablement cela est dû à la même cause, à savoir : les paramètres régionaux.
Dans Panneau de configuration > Région et langue [Onglet Administration], cliquez sur « Modifier les paramètres régionaux » et passez en « Français » (peut-être que comme moi vous étiez en « Arabe »). Le problème ne s’était pas arrêté là pour moi.
Créez une autre base de données Access vide, dans votre base de données d’origine (celle avec laquelle vous avez eu le problème), exportez toutes les tables et formulaires créés auparavant dans votre fichier Access (Fichier > Exporter…) vers votre nouvelle base de données Access vide. N’oubliez pas de recréer les relations entre les tables (tutoriel 1/3).
Voilà. Pour moi, ça a fonctionné, je n’avais plus de message d’erreur.
Merci Aidel.
Bonjour,
Merci Aidel, ta solution a fonctionné pour moi aussi, bien que j’étais déjà en Français donc c’est bien la deuxième manipulation qui règle le problème…
Plus de messages d’erreur à l’exécution de la macro !
Et merci à Lydia pour ton travail, ce sont des tutoriels très instructifs et c’est un travail énorme !
Très bonne continuation !
Merci Céline pour votre retour et contente que cela ait fini par fonctionner 🙂
Bonjour Lydia,
Si j’ai entré trop de lignes de désignation et que je souhaite en supprimer, comment faire ?
Est-il possible de créer un bouton qui permet d’ajouter/supprimer une ligne au niveau de la disposition tabulation ? Si oui, comment ?
Merci.
Bonjour Jean-Michel,
Il suffit de cliquer droit sur le début de ligne à gauche > Couper.
Par contre, concernant votre 2e question, je ne vois pas trop l’intérêt d’un tel bouton étant donné qu’il suffit de réaliser la manipulation expliquée juste avant.
Bonjour,
J’espère que je n’ai pas fait d’erreur pour arriver jusqu’ici.
Site internet ? Je ne savais pas quoi mettre.
Avec le code VBA tel que vous l’avez décrit, je n’ai pas
Column
seul, maisColumnhidden
,Columnorder
ouColumnwidth
. Après avoir inscrit le code, cela ne fonctionne pas. J’ai un premier message d’erreur qui dit : »Espace de chaîne insuffisant » et lorsque je clique sur « OK », un autre message apparaît : « Le moteur de base de données Microsoft Office 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é ».Je vous remercie d’avance, quelle que soit votre réponse.
Bonjour Nicolo,
Avez-vous essayé d’écrire le code tel quel même si Access ne vous le propose pas ?
Bonjour Lydia,
Je vous remercie pour votre réponse et vous félicite pour votre blog très intéressant.
J’utilise Access 2007 et, lorsque j’emploie l’assistant formulaire, je suis obligé de supprimer la liaison qu’il y a entre l’étiquette et le contrôle en cliquant bouton droit de la souris entre les deux, puis « disposition » et « supprimer ».
Je ne l’avais pas fait convenablement la première fois, je suppose, car j’ai tout recommencé et je n’ai plus les messages d’erreur dont je vous ai parlé et j’ai « Column » qui apparaît comme dans votre exemple.
Par contre, cela ne fonctionne pas et je n’ai pas de message d’erreur. Lorsque je clique dans la fenêtre référence et que je choisis une ligne, dans « Désignation », il n’y a rien qui s’affiche et dans « Quantité » et « Prix unitaire » s’affichent simplement la valeur par défaut « 0 ».
Si vous avez une idée de ce que je pourrais faire… Sinon, je pense que je vais tout recommencer, ce ne sera que la troisième fois, je le connaîtrais par cœur.
En tout cas, merci pour tout et bien à vous.
Nicolo
Bonjour Nicolo,
Votre champ n’est pas en lien avec le champ de la table correspondante, c’est sans doute pour cela que ça ne fonctionne pas.
PS : le champ Site internet est fait pour y saisir votre site, pas le mien. Si vous n’en avez pas, ne saisissez rien.
Bonjour Lydia,
Le fait que j’utilise Access 2007 et vous Access 2013 peut-il être la cause de mon problème : le code VBA.
Me![Désignation] = Me![ID_Tarif].Column(1)
Me![Prix_unitaire] = Me![ID_Tarif].Column(2)
Est-il le même, quelle que soit la version d’Access que l’on utilise ?
Bonjour,
Merci pour vos tutos.
C’était un peu laborieux pour ma part. Mais après avoir refait en relisant bien, cela fonctionne.
Par contre, je souhaiterais enregistrer le total des factures dans une table. Comment est-il possible de le réaliser ?
Cordialement.
Bonjour,
Normalement, une table ne doit pas contenir de champ calculé provenant d’un formulaire. Vous risqueriez d’avoir des problèmes par la suite.
Quel est le but de cette manipulation ?
J’ai besoin, si c’est possible, d’utiliser ce total dans un état reprenant les références clients, date de facture, afin d’imprimer un certificat personnalisé (avec photos en pièce jointe, et d’autres renseignements).
Cordialement.
N’étant pas encore formée au VBA, car cela doit surement pouvoir se faire de cette manière, j’ai trouvé un autre moyen pour réaliser cela (c’est un peu bidouillage, mais bon, ça fonctionne). Faites une copie de E_Imprimer_une_facture et supprimez tous les éléments du corps de la facture en laissant les champs de totaux.
Si vous ne souhaitez afficher que le TTC, allez dans les Propriétés > Afficher > À l’écran.
Il suffira donc de modifier ce modèle et d’ajouter des éléments à la requête correspondante si besoin pour ensuite les intégrer à l’état.
Merci pour ta réponse.
Ça fonctionne, je change la mise en page et cela devrait être ok.
Continue tes tutos.
Merci encore.
Bonjour Lydia.
Merci beaucoup pour tes tutos et tes cours.
Mais, s’il vous plaît, j’ai un problème : j’ai terminé la conception d’un formulaire dans le Mode de création, mais il ne peut pas s’afficher au niveau du Mode Formulaire et aussi Mode Page.
C’est quoi le problème et comment je le résous ?
Bravo et merci d’avance.
Bonjour Hadjouabdou,
Si vous avez créé un formulaire avec l’assistant, il n’y a pas de raison que le changement de mode ne soit pas possible.
Bonjour Lydia,
Rien à faire. J’ai recommencé complètement. Je suis, à la lettre, la façon et l’écriture de votre exemple. Lorsque je clique dans mode de paiement, je choisis un mode. Ensuite, je clique dans Référence, je choisis une ligne et il ne se passe rien, c’est-à-dire que mon numéro de Référence change suivant ce que j’ai choisi, mon numéro d’Item reste à 1, ma Quantité reste à 0, mon Prix unitaire reste à 0.00 € et mon Numéro de facture reste à 1.
Si vous avez une idée, elle est la bienvenue…
Merci et bien à vous,
Nicolo
Lydia met à ta disposition les tables et formulaires créés.
Récupère-les. Ce sera peut-être plus simple pour toi.
Cordialement.
PS : ils sont avec le tuto de la 3ème partie.
Bonjour Nicolo,
Cela fait 2 fois que je vous demande de bien vouloir ne pas remplir le champ « Site internet » avec le mien lorsque vous postez un commentaire. Je suis obligée d’effacer le lien et de retirer le Commentluv à chaque fois.
Concernant votre problème :
– il est normal que le numéro d’item et de facture restent à 1, si ce sont les premiers ;
– il est normal que la quantité reste à 0 si vous ne saisissez rien ;
– quant à la désignation et le prix unitaire, vous devez mettre une procédure évènementielle sur la référence pour que ces deux éléments s’affichent (comme expliqué dans le tutoriel).
Comme le suggère Laurent, vous pouvez télécharger le fichier afin de le comparer avec le vôtre pour trouver le souci.
Bonjour Lydia,
Je suis vraiment désolé en ce qui concerne le champ « site internet ». Ce champ était rempli depuis mon premier message et je n’avais pas remarqué qu’il suffisait de cliquer sur « changer » pour aller effacer ce que j’y avais rempli involontairement, je l’avais d’ailleurs signalé dans mon premier message.
Vraiment désolé.
Ne m’en veuillez pas et bien à vous.
PS : Ici je l’ai effacé. Mais je ne sais pas si je dois décocher « commentluv ».
Si je fais encore une bêtise, je m’en excuse d’avance.
Nicolo
Bonjour Nicolo,
Cette fois-ci, c’est parfait 🙂
Bonjour Laurent, bonjour Lydia,
Merci pour l’info. J’ai téléchargé le fichier « formulaire-et-sous-formulaires-créés » et j’ai tout à fait le même problème. Pourtant, je suis sûr que ce fichier fonctionne puisqu’il y a déjà 5 enregistrements. Mais lorsque je veux en ajouter 1, ça ne va pas, je n’ai rien qui s’affiche dans Désignation, le numéro Item, dans mon cas, passe à 18, la Référence que je choisis s’inscrit et le reste prend les valeurs par défaut. Je ne sais pas expliquer pourquoi, mais je pense que c’est lié à la version d’Access.
Merci d’avoir essayé de m’aider.
Cordialement.
Nicolo
Pour ce qui est du numéro d’item c’est normal qu’il « saute » des numéros puisque ce sont des numéros ID. Si vous entrez un produit sur une facture, puis sur une autre et revenez à la première, un chiffre manquera puisqu’il aura été utilisé pour la 2e facture.
Pour le reste, je ne sais pas quoi vous dire, personne ne m’a retourné ce problème depuis que le tuto a été publié.
Bonjour Lydia,
Après une petite recherche sur internet concernant le code Me![…] = …etc., je suis tombé sur cette réponse d’une personne :
« The problem was Security settings. « Disable all macros with notification » wasn’t actually notifying me of anything… I changed it to « Enable all macros » and it works perfect!! »
J’ai donc fait la même chose, et, en effet, chez moi aussi, c’était désactivé et j’ai activé toutes les macros, même si, entre parenthèses, il est écrit que ce n’est pas recommandé. Et maintenant, ça fonctionne. C’était tout simplement un problème de configuration.
Cordialement.
Nicolo
Bonjour et merci Nicolo pour votre retour.
En effet, je n’avais pas du tout pensé aux macros désactivées 🙂
Bonjour Lydia,
Je voudrais vous poser une question sur le fameux code :
Me![Désignation] = Me![ID_Tarif].Column(1)
Me![Prix_unitaire] = Me![ID_Tarif].Column(2)
J’ai lu que vous n’étiez pas encore spécialiste dans le VBA, mais peut-être pourrez-vous répondre à ma question en espérant que la réponse ne soit pas déjà quelque part sur le site, je ne voudrais pas vous embêter avec des questions inutiles.
Que veulent dire ces deux instructions ?
Cordialement.
Nicolo
Bonjour Nicolo,
Effectivement, je débute en VBA, mais je vais essayer de vous l’expliquer.
« Me » désigne le formulaire en cours comme indiqué dans le tutoriel Introduction à Access VBA donc « Me! » + « le nom d’un champ » désigne ce champ dans le formulaire.
Lorsqu’il y a, des 2 côtés d’un signe égal (=), des champs, c’est pour récupérer des valeurs.
Par contre, pour
Column(1)
etColumn(2)
, j’avoue ne pas être sûre, mais je dirais que cela correspond aux numéros de colonnes situées après ID_Tarifs dans la table d’origine.Maintenant, si quelqu’un qui s’y connait mieux en VBA a l’explication, qu’il n’hésite pas à se manifester 🙂
Bonjour Lydia. J’ai besoin de tes idées pour résoudre le problème suivant.
Sur les requêtes, comment doit être inséré un numéro auto dans un champ à l’aide d’une requête ?
Merci d’avance et bye.
Bonjour Hadjouabdou,
Pour créer un numéro auto dans une requête, il faut passer par du code : http://access.developpez.com/faq/?bawac_force_nonce=dc8d22fda3&page=TAReq#IncrementerRequete
Bonjour.
Merci infiniment et un remerciement spécial pour votre temps et vos informations. ^_^ !
Bonsoir Lydia.
Merci pour votre tuto concernant la facturation.
Voici mon problème : quand j’ouvre mon S/F_Factures et que je clique sur ma Référence tout est Ok. Par contre, quand j’ouvre mon F_Client et que clique sur ma Référence, un message d’erreur apparaît : « Vous avez essayé d’affecter la valeur Null à une variable qui n’est pas du type de données Variant ».
Je suis perdu, pouvez-vous m’aider ?
Bonjour Jean-Michel,
Essayez de voir si l’un de vos champs dans les tables du S/F_Factures n’accepte pas la valeur Null. Regardez également les liaisons entre vos différents éléments : formulaire et sous-formulaire, zone de liste déroulante…
Re-bonsoir Lydia.
Petite erreur : dans mon S/F_Facture, quand je clique sur Référence, ok pour la première ligne, mais, quand je me mets sur la deuxième, message d’erreur : « Le moteur de la base de données 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é ».
Merci pour votre aide.
Cordialement.
Il y a forcément quelque chose que vous n’avez pas fait correctement. Regardez de nouveau la vidéo et vérifiez que le code de la procédure évènementielle est bien saisi.
Lydia, je vous remercie. Je vais revoir toute la vidéo de A à Z. Je croise les doigts !
Bon weekend à vous.
Cordialement.
Bonjour,
Merci pour le blog, c’est très efficace, ça m’a beaucoup aidé. Mais je reçois un « #Name? » pour un champ de calcul dans le formulaire.
Est-ce que vous pouvez m’aider ?
Merci d’avance.
Bonjour,
C’est que la source de votre contrôle n’est pas valide. Vérifiez les noms des champs utilisés.
Merci pour votre réponse. Effectivement, dans un de mes fichiers, j’ai pu résoudre ce problème, mais dans l’autre fichier, je n’arrive pas encore à trouver la faute.
Salut, merci pour tout ce que vous faites pour nous.
Ma préoccupation est la suivante : je n’arrive pas à supprimer les étiquettes Nom, prénoms, etc. lorsque je veux établir mon formulaire principal en mode création.
J’utilise Access 2007. Comment procéder ?
Merci.
Bonjour,
Il faut dégrouper vos contrôles et étiquettes.
Bonjour,
Moi aussi =Nom? et j’avais remarqué il n’a jamais inscrit 0.00. Est-ce que je peux avoir fait une erreur avant de faire la facture ? Comme dans Tarifs le prix est en francs, moi je ne le vois pas dans le prix unitaire. Il inscrit seulement 130.
J’ai bien regardé mes contrôles Quantité et Prix_unitaire.
Peux-tu m’aider ?
France
Bonjour,
Comme indiqué plus haut, c’est que la source du contrôle n’est pas valide. Pour ce qui est de 130, il faudrait changer le format en monétaire.
Bonjour, je viens de commencer à travailler sur Access, j’ai créé mes tables et aussi mes formulaires. En mode création, sur les formulaires tout va bien, mais au moment où je mets « Mode d’affichage » rien ne s’affiche.
Alors j’ai rempli 2 lignes de chacune de mes tables, et voilà, il y a quelques formulaires qui s’affichent en « Mode formulaire », mais il reste un qui ne veut pas s’afficher.
Comment pourrais-je faire s’il vous plaît ? Aidez-moi, c’est urgent.
Bonjour,
Désolée, je n’ai jamais été confrontée à ce problème.
Bonjour,
Pour cette facture, je souhaiterais faire apparaître dans le formulaire toutes les références de ma base de données qui sont réparties dans deux tables (produit et prestation). Est-il possible de créer une liste déroulante les regroupant ? Ou alors créer une seule et même table pour les références ? (sachant que la première solution serait la plus fonctionnelle pour moi).
Merci
Bonjour,
Sans passer par VBA, je vous conseillerais de passer par une requête ajout .
Bonjour, dans la case total HT, TVA et TTC, j’ai une
#erreur!
pourtant la formule est bonne et le total fonctionne bien !!Bonjour,
De quel total parlez-vous ? Avez-vous établi une facture lorsque vous dites que vous avez cette erreur ? Car si les champs sont vides, cela peut expliquer cette erreur.
Bonjour, je trouve votre tutoriel très bien, par contre, je souhaiterais, à la place du 2ème sous-formulaire, mettre une sorte de tableau pour inscrire mes désignations sans pour autant qu’il y est une table, car je n’ai pas de produits définis, mais des services rendus qui sont propres à chaque client. Je ne sais pas si je suis bien clair.
En fait, il me faudrait la même chose, une sorte de tableau, avec des lignes qui se crées automatiquement selon le besoin ou on renseigne une désignation avec son prix qui seront propres à chaque facture sans pour autant qu’elle soit enregistrée dans une table, mais que l’on retrouvera à chaque fois qu’on ouvre la facture. Pouvez-vous me dire si c’est possible ? D’avance, merci.
Bonjour,
Il n’existe pas de tableau dans Access comme on peut le voir dans Excel et vous serez obligé de créer une table même si la ligne n’est utilisée qu’une fois.
Bonjour,
Tout d’abord merci beaucoup pour vos tutoriels, ils me sont d’une aide précieuse 🙂
Je bloque sur le champ Somme. En effet, j’ai mis la bonne formule et ça marche sauf que ça ne s’actualise pas. Pour cela, je dois fermer et rouvrir mon formulaire.
Savez-vous pourquoi ?
Bonjour Mathilde,
Si vous changez d’enregistrement, cela doit se mettre à jour, simplement en cliquant sur une autre ligne (même une vide).
Justement ça ne se met pas à jour du tout. La seule solution que j’ai trouvée, c’est de fermer mon formulaire puis de le rouvrir.
C’est uniquement sur le HT ou sur les sommes de chaque ligne aussi ?
C’est uniquement sur ma ligne de total colonne
=Somme([Prix]*[Quantité])
Je n’ai pas de TVA, car j’ai adapté la base pour une association.
Les sommes de chaque ligne s’ajustent bien automatiquement en fonction de la modification des prix. C’est vraiment que sur ce « champ indépendant » de la somme de mes lignes.
Sincèrement, je ne vois pas. Si vous avez suivi le tuto à la lettre, cela devrait se calculer automatiquement.
Merci pour votre aide, je vais recommencer, il se peut que j’aie loupé une étape 🙂
Très bien. N’hésitez pas à donner votre retour ici si vous trouvez quelque chose que vous n’aviez pas fait, cela peut servir à d’autres 😉
Oui, j’espère bien trouver la solution ! 🙂 Je ne manquerai pas de vous la communiquer 🙂
Solution trouvée ! En fait, il fallait, sur les champs quantité et prix unitaire, mettre un évènement « Après MAJ » et le code VBA est : Me.Recalc
Maintenant, tout fonctionne à merveille 🙂
Merci Mathilde 🙂
Bonjour Lydia,
J’adore votre tutoriel c’est très plaisant, mais j’ai complété le sous-formulaire et il ne fonctionne pas si je clique sur référence, il fonctionne seulement si j’entre les données dans la table Facture. Là, il apparaît dans mon formulaire. Où est mon erreur ?
J’ai bien mis procédure événementielle.
Merci.
France
Bonjour France,
Je n’ai pas compris ce qui n’apparaît pas : le sous-formulaire ou les références ?
Dans les 2 cas, je vous inviterais à refaire la manipulation, car il y a forcément quelque chose qui manque.
Lydia,
C’est quand je vais dans références que rien n’apparaît. Il faut que j’inscrive dans la table de factures et, là, cela apparaît ce que j’ai inscrit dans la table.
Je l’ai refait avec tes données, je ne vois pas mon erreur.
Je vous remercie de répondre à mes questions. J’adore vos tutoriels
Merci.
Bonjour France,
La source contrôle est-elle bien sur la référence dans la table correspondante ? Avez-vous bien copié le code VBA ?
Salut, merci pour les tutos. Je suis en période de stage, on m’a demandé de créer une appli sur Access pour gérer les ventes, donner (et enregistrer) des factures et gérer le stock (savoir combien on a d’unités de chaque produit qui changent (en cas de vente + en cas d’achat).
1 – Ils ont beaucoup de clients, une liste déroulante est bien préférable (nom du client, identifient dans mon cas), j’ai testé, mais les autres infos ne changent pas parallèlement.
2 – Les totaux calculés doivent être enregistrés dans une case de la facture.
J’ai eu quelques problèmes, mais j’ai pu me débrouiller.
Merci de me sauver le plus tôt possible.
Bonjour,
1) Il faut créer un évènement sur mise à jour de la liste déroulante pour que les autres champs soient mis à jour.
2) Il suffit de mettre la source du contrôle en fonction du champ total pour avoir le même résultat.
Merci.
Un petit problème : le numéro de facture ne cesse d’augmenter à chaque essai, même si j’enlève les enregistrements. Je veux le réinitialiser avant de donner l’application. 🙂
Dans ce cas : https://www.votreassistante.net/comment-remettre-a-zero-un-champ-numeroauto-table-access/
LOL merci, même si ce n’est pas gratuit et que je ne peux pas payer 🙂 Merci pour l’aide.
Bonjour Lydia,
Je vous remercie pour vous vidéos.
Dans la leçon « Créer une facture avec Access – Partie 2/3 – Création du formulaire principal et de ses sous-formulaires », j’ai rencontré un problème après la saisie du code VBA de « ID_Tarif ».
1- Avec le code VBA tel que vous l’avez décrit, je n’ai pas « Column » !
2- Quand je passe au mode formulaire pour essayer la liste déroulante, il m’affiche un message « Valeur non valide pour ce champ. »
Pouvez-vous m’aider s’il vous plaît !!!
Merci beaucoup !!
Bonjour Ahmed,
Je pense qu’il y a quelque chose que vous avez dû ne pas faire car une autre personne (Nicolo) en a parlé plus haut (du même problème) et, après avoir refait le formulaire, cela fonctionnait. Je pense que le second problème provient de là également.
Bonjour Lydia,
Déjà merci pour tes tutos, ils m’ont bien aidé 🙂
Mais je rencontre un petit problème pour la mise en page du formulaire…
Je m’explique : quand j’essaye de supprimer mes étiquettes (exemple : civilité), ça me supprime automatiquement le champ civilité…ils sont liés…et pareil quand je veux modifier la taille d’un seul champ, tous les champs prennent la même taille. J’espère que tu comprendras de quoi je parle 🙂
Merci d’avance.
Bonjour Tony,
Ils sont groupés. Allez dans Organiser > Supprimer la disposition.
Combien de vidéos exactement sur le cours une facture avec Access ?
5
Bonjour,
Je suis en train de créer une facture à l’aide de votre tuto pour l’entreprise où je travaille. Je veux faire une facture pour un CE… J’ai suivi toutes vos étapes sauf, qu’au moment de tester le formulaire, la première ligne fonctionne parfaitement, mais quand je veux saisir une seconde ligne, le message suivant s’affiche « Modification non effectuée : risque de doublons dans Champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l’index pour permettre les doublons et recommencez. »… C’est un peu long et je ne comprends pas tout… Pouvez-vous m’aider s’il vous plaît ?
(Mes tables sont : T_Salariés, T_Date_Facture, T_Tarifs et T_Facture)
Bonjour,
Avez-vous indiqué un moyen de paiement avant de « remplir » la facture ?
Bonjour,
Je n’ai pas mis de moyen de paiement, c’est pour un comité d’entreprise… ce n’est pas important, mais si c’est ça le problème, je le rajouterais.
En fait, le moyen de paiement permet de générer un numéro pour le premier sous-formulaire dont le second a besoin. Sinon, il suffit de modifier un des chiffres de la date (pour remettre le même) et, normalement, ça fonctionne aussi.
Je vais essayer, merci beaucoup…
Mais là où ça me pose un problème, c’est quand je teste que je mets une ligne dans ma facture avec quantité et prix et que je veux saisir une autre désignation que ça me met ce message…
Désolé du dérangement, je vais essayer en mettant un moyen de paiement !
Bonjour Lydia, merci pour tes tutos très intéressants et d’une très grande aide.
Cependant, je n’arrive à enlever les contours de mes contrôles.
Je travaille sous Access 2007.
Bonjour Luciano, c’est dans Format > Contour > Transparent.
Bonjour, je n’ai pas cet onglet justement.
Je n’ai qu’accueil, créer, données externes, outil de base de données, créer, réorganiser et mise en page.
Bonjour, êtes-vous en mode création et sur un contrôle ?
Oui, en mode création et sur un contrôle.
Dans Fichier > Options > Personnaliser le ruban. Cliquez sur le menu déroulant pour afficher tous les onglets (à gauche) et vérifiez que Format n’est pas décoché.
Bonjour,
L’onglet Format n’apparaît même pas dans le menu déroulant.
Ça y est, j’ai trouvé, c’est dans l’onglet Création là où on change les couleurs, icône « couleur du trait ».
Bonjour Lydia,
Donc pour faire court, j’ai un message Erreur qui s’affiche âpres ce passage :
Entre
Private Sub ID_Tarif_AfterUpdate()
etEnd 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.
Je clique sur le bouton Référence, donc pour moi ce sont des journaux donc j’ai mis :
N°Item/Référence/Date/A date/désignation/Édition/Quantité/Prix unitaire et donc après avoir mis les codes :
Référence fonctionne/Désignation indique bien le jour/Édition aussi (type de journal VDN/VDS/SDB), jusque-là ça va, par contre, ça ne va pas plus loin prix unitaire rien, le message d’erreur est le suivant, une fenêtre Microsoft Visual Basic s’ouvre et marque :
Erreur d’exécution ‘2113’: valeur non valide dans ce champ ?????
Bonjour, comme certains dans les commentaires, j’ai un problème au niveau de la programmation VBA. Dans les deux lignes à écrire, l’élément
[ID_Tarif].Column()
n’apparaît pas. Je n’arrive pas à obtenir l’élément Column, avez-vous une idée sur la chose ? J’ai suivi scrupuleusement le tutoriel.Merci d’avance.
Alex
Peut-il y avoir un problème de paramètres régionaux ? Si oui, quel est votre paramètre régional ?
Bonjour Alex, avez-vous essayé d’écrire le code même s’il n’apparaît pas ? Un autre lecteur avait le même problème que vous et, en reprenant le tutoriel, Column est apparu.
Oui, j’ai finalement créé la zone de texte directement dans l’outil création et la fonction Column apparaît.
Cependant, j’ai toujours le problème de connexion avec le serveur OLE ou le contrôle ActiveX par le problème ci-dessous :
« L’expression Après MAJ entrée comme paramètre de la propriété de type évènement est à l’origine d’une erreur. Un problème est survenu durant la communication entre Microsoft Access et le serveur OLE ou le contrôle ActiveX ».
J’ai le paramètre régional français, essayez de voir si vous avez le même.
C’est bon, j’ai trouvé.
Juste changer (2) en (3).
ID_Tarif_AfterUpdate() et End Sub, saisissez :
Me![Désignation] = Me![ID_Tarif].Column(1)
Me![Prix_unitaire] = Me![ID_Tarif].Column(2) (3)
Bonjour,
Je viens de parcourir les tutos et j’aurais aimé savoir s’il y avait moyen de changer le prix unitaire en dehors de la table et sans que cela n’affecte les autres factures (exemple : je choisis un article dans la liste déroulante, mais le prix indiqué n’est plus d’actualité et/ou je désire faire un geste et le modifier uniquement pour cette facture). Cela est-il possible ?
Merci, bien à vous.
Bonjour Jean-Luc,
Si c’est occasionnel, vous pouvez le modifier manuellement dans le formulaire, mais si c’est un changement de prix permanent, le mieux est d’ajouter une ligne dans la table Tarifs avec le nouveau prix et d’ajouter un champ de case à cocher pour choisir les prix que vous souhaitez afficher sur votre liste déroulante, donc les prix d’actualité. Puis, sur votre liste déroulante, vous lui demandez de n’afficher que les tarifs cochés. Ne supprimez surtout pas les anciens tarifs et ne les modifiez pas non plus, car les factures déjà établies seraient modifiées également.
La solution d’Aidel est simplement « mortelle », je peux continuer enfin…(y)
Bonjour Lydia,
Tout d’abord, un grand merci pour votre blog que je trouve génial !
Petite question concernant les formulaires et sous-formulaires.
J’ai créé des sous-formulaires que j’ai nommés par sfrm. Ils fonctionnent très bien (ex : quand je tape les 2 premiers chiffres du code postal, il me donne le département). En revanche, quand j’insère ce sfrm dans mon formulaire principal, plus rien ne fonctionne 🙁
J’ai beau chercher, je ne vois pas de quoi cela vient ! Merci d’avance pour votre aide.
Bonjour et merci Sandrine.
Les sources des sous-formulaires sont-elles correctes ? Car je ne sais pas comment sont présentés vos sous-formulaires.
Bonjour Lydia,
Merci beaucoup pour ton site, je l’ai trouvé par hasard et il est simplement génial.
J’ai suivi ton tutoriel sur la création des factures sur Access. J’ai tenté à 3 reprises de le faire, mais je bloque toujours aux mêmes endroits, au moment de la création du sous-formulaire avec les prix, j’ai toujours un message d’erreur qui apparaît : << Le moteur de la base de données Microsoft Access ne peut pas trouver d’enregistrement dans la table <> avec les champs <> correspondant à la clé >>.
Je suis totalement perdu, merci d’avance pour votre aide !!
Cheny
Bonjour Cheny,
Peut-être avez-vous fait une erreur au niveau des champs père et fils ?
J’ai suivi ton tutoriel, mais quand je crée une fiche client et que je vais dans Établir une facture, je ne vois pas le client que je viens de créer, il est bien dans la table, mais si je fais une facture et que je mets des articles tout est correct, juste quand le client n’a pas de facture qu’il ne s’affiche pas et même que je ne peux rechercher son nom, c’est comme si Access ne voyait pas T_Clients s’il n’y a pas id_facture.
La source du formulaire correspond bien à la table Clients ?
Merci pour ce superbe tutoriel ! Quel travail !!!
Une petite question : dans votre vidéo, les actions que vous faites ont une réaction instantanée, pour ma part, chaque sélection de contrôle ou de formulaire (en mode création) met quelques secondes à agir… Mon PC est pourtant récent et assez rapide même avec des logiciels comme Inkscape… Une idée de quoi ça peut venir ?
Encore bravo pour votre travail !
Renaud
Merci Renaud. Avez-vous essayé de compacter la base de données ? D’autres suggestions sont évoquées sur ce lien.
Bonjour,
Tout d’abord, merci pour ce tutoriel excellent.
J’ai une petite question, lorsque j’ai fini de créer le S/F Facture (en mode tabulaire), je lui insère la ligne de code :
Me![designation] = Me![Texte30].Column(1)
Me![prix_unitaire] = Me![Texte30].Column(2)
Je fais la requête SQL comme expliquée (ajout des champs par double-clic) et lorsque je suis dans mon formulaire F_facture_client, je sélectionne dans la liste déroulante un produit et je reçois un msgbox disant Le champ ne peut pas être mis à jour , mais si je fais la manipulation par le formulaire S/F facture-même, je ne reçois aucune erreur.
J’ai tout vérifié champs père/fils, autorisation, mais je n’ai aucune erreur.
Pourriez-vous m’aidez ?
Je vous remercie d’avance.
Bonjour,
Le code n’est pas correct :
Private Sub ID_Tarif_AfterUpdate()
Me![Désignation] = Me![ID_Tarif].Column(1)
Me![Prix_unitaire] = Me![ID_Tarif].Column(2)
End Sub
Merci de cette réponse rapide.
Si, mon code est correct (je n’ai pas renommé mes zones de texte). Ce que je ne comprends pas, c’est que cela fonctionne en mode formulaire et quand je passe en sous-formulaire, il m’indique l’erreur de mise à jour.
J’ai recommencé 2 fois, je vais réessayer une 3ème fois pour voir.
Je vous remercie et vous souhaite une bonne fin de soirée.
Il doit y avoir une erreur de manipulation à un moment donné, car je n’ai jamais eu ce type de retour.
Bonne soirée à vous.
Bonjour Lydia,
Je suis en train de réaliser une application qui permet d’ajouter des champs dans un tableau via un formulaire, ce message a affiché « impossible de trouver l’objet dans la collection correspondant au nom ou à la référence ordinale demandée ». Sil vous plaît aidez-moi, j’ai pas encore de temps.
Voilà le code VBA que j’ai utilisé :
Option Compare Database
Dim Rs1 As New ADODB.Recordset
Dim Rs2 As New ADODB.Recordset
Private Sub Commande14_Click()
On Error GoTo Erreur:
Rs1.Open "SELECT * FROM BENEFICIAIRE WHERE MATRICULE=" & TxtMatricule, CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdText
If Not Rs1.EOF Then
MsgBox "Cet agent est déjà bénificiaire : " & Rs1(2), vbCritical, "Erreur"
TxtObs = Rs1(2)
End If
Rs1.Close
Rs1.Open "SELECT * FROM DEMANDE WHERE MATRICULE=" & TxtMatricule, CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdText
If Not Rs1.EOF Then
MsgBox "La demande de cet agent est déjà saisie", vbCritical, "Erreur"
TxtMatCo = Rs1("Co-Proriete")
TxtNom = Rs1("Nom")
TxtPrenom = Rs1("Prenom")
TxtService = Rs1("Service")
TxtDateNaiss = Rs1("DateNaiss")
TxtDateEmb = Rs1("DateEmb")
TxtDateRet = Rs1("DateRet")
TxtObs = Rs1("Observation")
Else
Rs2.Open "SELECT * FROM DEMANDE", CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdText
Rs2.AddNew
Rs2("Matricule") = TxtMatricule
Rs2("Co-Proriete") = TxtMatCo
Rs2("Nom") = TxtNom
Rs2("Prenom") = TxtPrenom
Rs2("Service") = TxtService
Rs2("DateNaiss") = TxtDateNaiss
Rs2("DateEmb") = TxtDateEmb
Rs2("DateRet") = TxtDateRet
Rs2("Observation") = TxtObs
Rs2("DatArr") = TxtDatArr
Rs2.Update
Rs2.Close
TxtMatricule = ""
TxtMatCo = ""
TxtNom = ""
TxtPrenom = ""
TxtService = ""
TxtDateNaiss = ""
TxtDateEmb = ""
TxtDateRet = ""
TxtObs = ""
TxtTxtDateArr = ""
TxtMatricule.SetFocus
End If
Rs1.Close
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur"
End Sub
Private Sub Form_Load()
On Error GoTo Erreur:
Rs1.CursorLocation = adUseClient
Rs2.CursorLocation = adUseClient
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur"
End Sub
Private Sub TxtMatricule_BeforeUpdate(Cancel As Integer)
On Error GoTo Erreur:
Rs1.Open "SELECT * FROM AGENT WHERE MATRICULE=" & TxtMatricule.Text, CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdText
If Not Rs1.EOF Then
'TxtMatricule.Text = Rs1("Matricule")
TxtNom = Rs1("Nom")
TxtPrenom = Rs1("Prenom")
TxtService = Rs1("CodeSce")
TxtDateNaiss = Rs1("DateNaiss")
TxtDateEmb = Rs1("DateEmb")
TxtDateRet = Rs1("DateRet")
'TxtTxtDateArr = Rs1("DateArr")
'Commande14.SetFocus
Else
'TxtMatricule = ""
TxtMatCo = ""
TxtService = ""
TxtNom = ""
TxtPrenom = ""
TxtDateNaiss = ""
TxtDateEmb = ""
TxtDateRet = ""
TxtTxtDateArr = ""
'TxtMatricule.SetFocus
MsgBox "Matricule n'existe pas", vbCritical, "Erreur"
End If
Rs1.Close
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur"
End Sub
Le message que j’écris est affiché quand je clique sur le bouton ajouter.
Autre chose, je veux faire un champ calculé qui sera affiché dans la table sans le rajouter dans le formulaire, comment faire ??
J’attends votre réponse 🙂
Bonjour, regardez dans Outils > Références si une collection n’est pas manquante.
Salut Lydia,
Encore une question, comment pourrais-je faire à ton avis pour gérer des clients ne payant pas la TVA (client étranger, etc.) ?
Bonjour José,
C’est compliqué de répondre quand on ne connaît pas la base de données en question. Ajouter un taux de TVA à 0 % ?
Oui, le mieux c’est de faire en sorte que les clients résidant à l’étranger aient automatiquement le taux de TVA à 0 %.
Salut, c’est encore moi, désolé si je vous bombarde de questions 🙂
J’ai réussi à faire une requête pour voir la quantité écoulée de tel et tel produits grâce à tes conseils (merci beaucoup), mais ce qui serait mieux, c’est de pouvoir faire la même chose, mais en choisissant un intervalle de temps : par exemple entre le 01/01/15 et le 30/06/15 (pour quelqu’un qui a besoin de le faire tous les 6 mois par exemple).
Bonjour José,
Il faut que la date soit indiquée dans la table et ajouter le critère de la date dans la requête.
J’ai trouvé un problème est survenu durant la COMMUNICATION entre Microsoft Access et le serveur OLE.
Le paramètre régional de votre ordinateur est-il sur français ?
Bonjour Lydia,
Cela fait 10 ans que j’étudie Access de manière autodidacte et c’est vrai que votre tuto m’a bien facilité la tâche (pour la création de sous-sous-formulaires entre autres).
Et encore bravo pour votre patience à répondre à toutes demandes.
Je vous souhaite une bonne continuation.
Isabelle.
(NB : vos vidéos sont très bien si ce n’est que vous perdez beaucoup de temps dans la mise en page).
Bonsoir !
Merci pour ce tuto.
Je rencontre un problème, je dois établir une facture avec 2h30 de main d’œuvre, mais, lorsque que j’entre cette quantité, le chiffre s’arrondit automatiquement à 3h et le calcul se fait sur ce même chiffre. J’ai pourtant bien mis mes champs en numérique avec 2 décimales. Auriez-vous une solution s’il vous plaît ?
Bonjour Alexandra,
Il faut changer la taille du champ dans la table en Réel simple.
Merci beaucoup 🙂
Bonjour Lydia,
Tout d’abord, je voulais vous remercier pour vos tutos très très bien expliqués et détaillés et le temps que vous avez dû passer à les réaliser.
Je vous sollicite, car j’ai suivi toutes vos explications jusqu’ici et, malheureusement, lorsque je teste le formulaire, ce qui doit aller dans « prix unitaire » va dans « désignation », il n’y a pas de prix qui entre automatiquement dans « prix unitaire »… Je ne vois pas d’où vient le problème, j’ai vérifié mes tables et mes relations, mais Access n’a pas dû accepter quelque chose…
Merci.
Bonjour Amélie,
Le chiffre dans le code VBA n’est peut-être pas bon. Je vous invite à consulter cet article où je détaille un peu plus cette manipulation.
Cet article a résolu mon problème, merci beaucoup !
Bonjour,
Tout d’abord, merci pour ce tutoriel excellent. J’ai une petite question.
Après l’insertion de ce code :
Private Sub ID_Tarif_AfterUpdate()
Me![Désignation] = Me![ID_Tarif].Column(1)
Me![Prix_unitaire] = Me![ID_Tarif].Column(2)
End Sub
Je passe en mode formulaire et, lorsque je choisis une référence, un message d’erreur apparaît :
« L’expression Après MAJ entrée comme paramètre de la propriété de type événement est à l’origine d’une erreur. Un problème est survenu durant la communication entre Microsoft Access et le serveur OLE ou le contrôle ActiveX. »
Auriez-vous une solution s’il vous plaît ?
Bonjour Mohamed-Karim,
Tout d’abord, votre liste déroulante est-elle bien nommée ID_Tarif ?
Ensuite, je vous invite à lire les commentaires laissés par Mohamed et Alex plus haut.
Même problème…
Même réponse qu’à Mohamed-Karim.
Bonjour,
Très bon tuto, je me suis inspiré de ces deux vidéos pour faire mon formulaire. Je possède actuellement deux tables : T_Client et T_Affaire. J’aimerais, pour mon sous-formulaire, que mon champ « Nom » de T_Affaire prenne automatiquement la donnée qu’il y a dans le champ « Nom » de ma table T_Client, mais qu’il prenne le nom propre à l’ID de mon client actuel, comment puis-je faire cela ?
À savoir que j’ai bien fait la relation entre mon Id_Client de T_Client et T_Affaire.
Bonjour,
Avez-vous essayé d’avoir, comme source de votre sous-formulaire, ce champ Nom, puis de l’ajouter dans le sous-formulaire ?
Bonsoir Lydia,
Je vous remercie vraiment pour votre travail, c’est extraordinaire.
Je voulais vous demander : j’utilise Microsoft 2007, mais je n’arrive pas à déplacer les champs sur Access pour création d’une facture. Je vous remercie.
Bonsoir Tidjani-Ly,
Vos champs sont peut-être groupés. Dans ce cas, il faut les dégrouper dans Organiser > Supprimer la disposition.
Bonjour,
Je suis en train de créer un modèle de facture en suivant votre tutoriel, à la fin de la création de mon formulaire partie 1/2, je reçois, ce message :
« Le moteur de base de données Microsoft Access ne peut trouver d’enregistrement dans la table T_Date_facture avec le(s) champ(s) T_Facture_ID_Date_ facture correspondant à la clé »
J’ai recommencé 5 fois l’exercice en redémarrant depuis le début.
Merci.
Fabrice
Bonjour,
Je ne sais pas si c’est à cet endroit que cela bloque, mais, avant de remplir une facture (choisir chaque désignation), il faut choisir un mode de paiement afin de générer un numéroauto pour la facture dans le premier sous-formulaire, sinon ça bogue. Ce message arrive si vous avez une valeur nulle qui n’est pas autorisée.
Salut, je veux savoir comment insérer une pièce jointe pour photo sur Access 2007.
Bonjour,
C’est avec le type de champ pièce jointe.
Bonjour Lydia,
Je vous contacte dans l’espoir que vous puissiez résoudre mon problème.
Je souhaite lier un client avec une liste de toutes ses factures.
Je n’ai pas créé et je ne souhaite pas créer un formulaire pour créer directement des factures. Je veux simplement une table qui référence par client toutes les factures effectuées avec notre entreprise (N° facture et Montant) grâce à un bouton « Factures » inséré dans le formulaire client.
Je vous remercie d’avance pour votre réponse et pour votre site ainsi que pour votre dynamique.
Bonjour et merci Amélie.
Il faudra quand même créer la même structure et ensuite vous pourrez créer une zone de liste basée sur une requête recherchant les factures pour un client donné.
Bonsoir Lydia,
Je veux créer un lien de calcul entre 2 tables.
Merci d’avance pour votre réponse.
Bonsoir Kouakou-Jackson,
Avez-vous lu l’article sur les calculs Access ?
Bonjour Lydia,
En effectuant l’exercice, j’ai également eu un problème avec la commande :
Me![Désignation] = Me![ID_Tarif].Column(1)
Me![Prix_unitaire] = Me![ID_Tarif].Column(2)
Même en essayant avec les modifications des autres utilisateurs plus haut, cela ne fonctionne toujours pas.
Le message d’erreur suivant s’affiche :
L’expression Après MAJ entrée comme paramètre de la propriété de type événement est à l’origine d’une erreur. L’objet ou la classe ne gère pas le jeu d’événements.
*Le résultat de l’expression n’est pas le nom d’une macro, le nom d’une fonction définie par l’utilisateur ou [Event Procedure].
*Une erreur a peut-être été commise lors de l’évaluation d’une fonction, d’un événement ou d’une macro.
J’ai testé plusieurs changements et j’avoue que je galère un peu, pour ne pas dire beaucoup lol.
Merci d’avance pour votre aide 🙂
Bonjour Franck,
Votre liste déroulante contient-elle toutes les colonnes nécessaires ? Les noms de contrôles sont-ils les mêmes ? Un enregistrement pour le 1er sous-formulaire est-il déjà créé (choisir un moyen de paiement) ?
Bonjour,
Oui, elle contient toutes les données et le moyen de paiement est bien choisi. On dirait vraiment que tout est bon…c’est bizarre…
Bonjour Franck,
Avez-vous essayé de refaire la procédure ? Vérifié les relations ?
Bonjour,
Heu oui…ou alors je refais de nouveau les mêmes erreurs…je vais réessayer de nouveau tout…et je vous tiendrai au courant.
Merci 🙂
Bonjour Lydia,
Un grand merci pour vos tutos ! Très beau travail. J’ai essayé de suivre scrupuleusement vos indications et le résultat n’est pas trop mal 🙂
J’aurais une question au niveau du formulaire pour les factures. Lorsque « j’appelle » le formulaire, j’ai la 1ère facture établie qui apparaît. Je souhaiterais tomber sur la dernière facture établie. J’ai essayé le « tri » dans les propriétés de la feuille, partie « formulaire » par ID_No_facture, mais ça ne change rien. J’ai essayé un tri décroissant dans la requête, mais rien ne change non plus.
Auriez-vous éventuellement une idée ?
Encore merci pour votre réponse et meilleurs souhaits pour une bonne journée.
Bonjour Sonia,
Il faut ajouter sur activation du formulaire :
Me.S_F_Factures_details_VotreAssistante.Form.Recordset.MoveLast
(S_F_Factures_details_VotreAssistante étant le nom du sous-formulaire).Bonjour Lydia,
Merci pour cette formidable facture.
Mais j’ai quelques problèmes, j’aimerais de l’aider pour les résoudre.
– J’ai créé la formule _Me!…, mais ça ne marche pas correctement, j’ai copié à partir de tes fichiers PDF , puis collé la même chose, je sais pas s’il y a un petit truc que j’ai oublié, s’il vous plaît, aidez-moi.
– Est-ce qu’il y a une méthode pour afficher ou imprimer seulement les factures d’une recherche précise, par exemple, je veux les factures de telle date à telle date ou les factures du N°x a N°y.
Merci d’avance.
Bonjour Amar,
– Qu’est-ce qui ne marche pas correctement ?
– Il faut passer par un état basé sur une requête avec vos critères.
Bonjour,
J’ai un petit problème.
J’ai un message d’erreur qui s’affiche lorsque, dans mon formulaire, je veux insérer une deuxième référence.
Le message d’erreur est : « Le moteur de base de données Microsoft Access ne peut pas trouver d’enregistrement dans la table « T_Date_Facture » avec les champs « T_Factures_ID_Date_Facture » correspondant à la clé. »
Merci de votre aide.
Bonjour,
Avez-vous bien créé les relations de la même manière que dans le tutoriel ? Avez-vous les mêmes champs ? Les champs père et fils sont-ils corrects ?
Bonjour,
Je souhaiterais insérer une photo à chacune de mes factures en sous-formulaire, auriez-vous un conseil s’il vous plaît ?
Bonjour,
Si vous ne connaissez pas le VBA, le mieux est de passer par le champ pièce jointe si vous n’avez pas trop de photos.
J’ai un souci avec mon formulaire, j’ai besoin d’aide.
Bonjour,
Avec les formules de politesse et l’explication du « souci », je serais ravie de vous aider.
Bonjour chère Lydia,
Un grand merci pour votre réponse. Merci un peu tardif, mais j’ai mis un certain temps à comprendre comment faire. Mais c’est tout bon maintenant.
J’ai une nouvelle demande : j’aimerais ajouter un « Acompte » et je suppose que c’est dans la liste des tarifs que cela serait le plus judicieux. Cependant, est-ce qu’il est possible de demander à Access de faire une somme seulement des chiffres positifs ? J’ai essayé :
=Somme([Prix]<1)
, mais ça ne donne rien.Si je mets :
=Somme([Prix])
, cela fait le calcul de tous les chiffres y compris l’acompte. Mais pour la TVA, j’ai d’abord besoin de la somme des chiffres positifs (sans l’acompte). Est-ce réalisable ? Encore merci pour votre obligeance et votre disponibilité.Merci également pour vos vœux et je vous adresse les miens, vite avant fin janvier ! Plein de bonnes choses à vous.
Bonjour et merci Sonia.
Un acompte ne doit pas être dans la table des tarifs, car un acompte porte sur une facture.
Il faut donc ajouter le champ dans la table gérant la facture. Ensuite, vous ferez la somme de la facture, afficherez l’acompte et ferez le total – l’acompte.
C’était si simple ! Ça fonctionne ! Encore mille mercis pour votre disponibilité :-)))
Excellente journée à vous.
Bonjour Lydia,
Tout d’abord, merci beaucoup pour vos tutoriels qui sont simples à suivre.
Mais, toutefois, j’ai un problème qui commence à me prendre la tête avec le code VBA.
Quand je suis dans le formulaire F_Clients et que je veux tester le S/F_Factures, je clique dans la case ID_Tarif (j’ai tous mes produits), je sélectionne un produit et le message suivant apparaît : « Vous avez essayé d’affecter la valeur Null à une variable qui n’est pas du type de données Variant », puis je fais OK et le message suivant apparaît « Valeur non valide pour ce champ, vous avez peut-être entré du texte dans un champ numérique ou un nombre supérieur à ce que permet le paramètre de la propriété Taillechamp ».
Dans l’attente de vos précieux conseils.
Thierry
Bonjour Thierry,
Le premier message apparaît lorsque la valeur qui relie le formulaire et le sous-formulaire (clé étrangère) n’est pas remplie. Je vous invite donc à revoir vos relations, car si elles sont correctement faites, le champ en commun doit se remplir tout seul par rapport au formulaire principal.
Bonjour,
Je vous remercie et félicite pour votre travail !
J’arrive à la fin de la vidéo, mon formulaire fonctionne parfaitement sauf, qu’une fois avoir choisi dans la liste des tarifs et choisi la quantité aucune seconde nouvelle ligne ne se crée.
Comment faire ? Sur votre tutoriel vidéo, une nouvelle ligne se crée instantanément.
Merci d’avance.
Bonjour et merci David.
Votre sous-formulaire est-il en mode formulaire continu ?
Bonsoir Lydia,
J’ai Access 2013.
Quand je passe du mode création au mode formulaire pour essayer le contrôle référence du dernier sous-formulaire, je clique sur la flèche, je sélectionne une désignation, le message suivant apparaît :
L’expression Après Maj entrée comme paramètre de la propriété de type événement est à l’origine d’une erreur. Un problème est survenu durant la communication entre Microsoft Access et le serveur OLE ou le contrôle ActiveX.
* Le résultat de l’expression n’est pas le nom d’une macro, le nom d’une fonction définie par l’utilisateur ou [Event Procedure].
* Une erreur a peut-être été commise lors de l’évaluation d’une fonction, d’un événement ou d’une macro.
Voici le message que ça m’affiche, que puis-je faire s’il vous plaît ?
Bonsoir Daweh,
Avez-vous sélectionné un moyen de paiement au préalable ?
Bonjour,
Je n’arrive pas à créer le sous-formulaire du sous-formulaire S/F_Date_Facture.
Je vais pourtant dans création, je sélectionne sous-formulaire/sous-état puis je clique sur mon sous-formulaire S/F_Date_Facture et j’ai une petite fenêtre qui s’ouvre dans le sous-formulaire, mais je n’ai pas la boîte de dialogue qui apparaît (celle qui demande si je veux utiliser les tables et requêtes déjà existantes ou un formulaire déjà existant).
Comment puis-je pallier cela, s’il vous plaît ?
Bonjour Yann,
Si l’assistant ne se lance pas, il faudrait voir s’il est coché. Une ligne apparaît lorsque vous vous apprêtez à ajouter le sous-formulaire (dans la liste) avec « Utiliser les Assistants Contrôles ».
Bonjour Lydia,
L’assistant est bien coché, cependant, la boîte de dialogue ne s’ouvre pas…
Problem solved! Je suis allé directement dans le sous-formulaire Date_Facture pour le faire. Cependant, je ne sais pas pourquoi, lorsque je souhaite faire un test, je ne peux pas remplir les étiquettes du sous-formulaire. J’ai pourtant suivi à la lettre toutes les étapes.
Bonjour Yann,
Remplir les étiquettes ? Les contrôles vous voulez dire ? C’est qu’il doit y avoir un souci de structure, car on doit forcément pouvoir saisir les données.
Bonjour Madame,
Je suis actuellement dans la même situation que Yann.
La création d’un sous-formulaire dans un sous-formulaire ne fonctionne pas (je n’ai pas de boîte de dialogue qui s’affiche pourtant l’assistant contrôle est bien actif). Je suis sous Access 2016.
Savez-vous d’où cela peut-il venir ?
Merci.
Bonjour Liam,
Il faut être placé dans le sous-formulaire quand il est en formulaire principal, sinon, effectivement, il n’y a pas de boîte de dialogue. C’est-à-dire qu’il faut ouvrir le sous-formulaire pour y placer l’autre sous-formulaire.
Je bloque au code une fois que je l’ai écrit. L’écrire, ça fonctionne. Mais après, je vais l’essayer, mais les données n’apparaissent pas dans les cases quantité et prix unitaire. Ça reste les valeurs par défaut.
Bonjour,
Avec les formules de politesse, je serais ravie de vous aider :)
Bonsoir,
Je souhaiterais avoir le code VBA inscrit dans toutes les vidéos de création de factures sous Access. Merci.
Bonsoir,
Les codes sont écrits dans chaque partie du tutoriel.
Bonjour Lydia, merci beaucoup pour ces tutos.
Je rencontre une difficulté, car j’utilise votre modèle pour une petite épicerie de fruits et légumes, du coup, dans quantité, quand je veux 0,750 g, ça met par défaut 1. Comment puis-je régler ce problème ?
Merci beaucoup pour votre réponse.
Bonjour Yasmina,
Dans la table, il faut modifier le format du champ en Réel double.
Pour déplacer les étiquettes une par une, comment faire ?
Il faut probablement que vous alliez dans l’onglet Organiser > Supprimer la disposition.
Bonjour Lydia,
Encore une fois bravo et merci pour votre travail.
J’ai utilisé vos tutoriels pour Excel et j’en suis ravi.
J’ai décidé de me lancer dans Access afin de mieux gérer ma base de données.
Mon idée n’est pas de créer des factures, mais des devis et ensuite des bons de commande pour chaque prestataire sous-traitant.
J’ai donc suivi le tutoriel pour la création de factures, en remplaçant « Facture » par « Devis ».
J’ai un problème récurrent lorsque je teste le formulaire.
Access me dit: « Le moteur de base de données Access ne peut pas trouver d’enregistrement dans la table « T_Date_facture » avec le champ « T_Facture_ID_Date_facture » correspondant à la clef »
J’ai refait trois fois la base, sans succès.
J’ai lu tous les commentaires, plusieurs utilisateurs semblent avoir rencontré le même problème que moi, mais ils n’ont pas posté leurs solutions…
Mes relations sont OK, je ne comprends pas les termes « père et fils » par contre…
Merci de votre aide.
Rémi
Bonjour Rémi,
Les champs père et fils sont les champs indiqués dans la feuille de propriétés (onglet Données) lorsque vous sélectionnez le sous-formulaire en mode création. En cliquant en bout de ligne de l’un ou l’autre, cela vous ouvrira une fenêtre pour indiquer le champ en relation.
Bonjour Lydia,
Merci pour votre réponse.
Donc, dans S/F_Date_facture, j’ai Objet source : S/F_Date_facture, Champ père : ID_Clients et Champ fil : ID_Clients et, dans S/F_Facture, je trouve Objet source : S/F_Facture et les champs pères et champs fils sont vides.
Je n’ai pas trouvé d’informations sur ces champs dans les PDF de vos formations, mais peut-être ai-je mal cherché…
Merci par avance !
Rémi
Re-bonjour,
J’ai trouvé tout seul !!!
Pour l’explication et pour tous ceux qui peuvent rencontrer ce problème :
Dans la feuille de propriétés de S/F_Facture, onglet Données, j’ai rentré :
Objet source : S/F_Facture
Champ père : ID_Date_facture
Champ fil : T_Facture_ID_Date_facture
Merci et encore bravo pour toutes vos formations !
Rémi
Bonjour Rémi,
Oui, c’est exactement ça. En fait, comme ce tutoriel date de longtemps, mes connaissances ont bien évolué et je prends toujours l’habitude maintenant de mettre dans la « sous-table » reliée à une autre, le même nom que le champ qui les relie donc quand je crée le sous-formulaire, c’est le même nom des 2 côtés et Access ne rencontre pas de souci. Du coup, je ne pense pas souvent d’emblée à cette solution pour ce bug 😉
Bonjour Lydia,
Merci pour vos tutoriels super intéressants et compréhensibles. J’ai cependant un problème avec ma création de factures. Lorsque le formulaire est créé et que je souhaite créer une facture, il ne veut pas enregistrer le premier article de la facture et j’ai pour message d’erreur : « Modifications non effectuées : risque de doublons dans champ index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l’index pour permettre les doublons et recommencez. »
Je suis allée vérifier mes tables et, partout où vous aviez sélectionniez « indexer avec doublons », je l’ai fait aussi, donc je ne comprends pas mon erreur…
Pourriez-vous m’aider ? (j’ai pas trop envie de tout recommencer pour la 3ème fois, mais j’ai bien l’impression que c’est ce qui va m’arriver !)
Merci !
Bonjour Annelies,
Générez-vous d’abord un enregistrement dans le premier sous-formulaire (choix d’un mode de paiement) avant de choisir un article ?
Oui, je suis à la lettre votre tutoriel vidéo.
Il y a juste une étape que mon logiciel Access ne fait pas comme vous : quand je veux intégrer S/F_Factures à S/F_Date_facture, il ne m’ouvre pas l’assistant (« utilitaire des assistants contrôle » est coché), je dois donc créer un formulaire indépendant et puis sélectionner « S/F_Factures » dans la case « Objet source » de « Données » de la Feuille de propriétés. Je ne sais pas si c’est ça qui fait planter mon formulaire…
Je viens de refaire pour la 3ème fois tout le tuto, toujours en intégrant le 2ème S/F comme expliqué ci-dessus et, de nouveau, j’ai un message d’erreur, mais différent : « Access ne peut pas trouver d’enregistrement dans la table « T_Date_facture » avec les champs « T_Factures_ID_Date_facture » correspondant à la clé. »
En fait, de mémoire, Access permettait d’insérer un sous-formulaire dans un sous-formulaire en affichant l’assistant avant. Maintenant, il ne le fait plus. Il faut créer le 2e sous-formulaire uniquement lorsque le sous-formulaire est ouvert, et non pas le formulaire principal, pour que l’assistant s’affiche. Du coup, il faudrait voir dans la Feuille de propriétés, quand le 2e sous-formulaire est sélectionné, si les champs Père-Fils sont remplis. Cela pourrait venir de là.
Bonjour Lydia,
Je cherche à télécharger le fichier pour comparer avec le mien pour trouver le souci d’affichage des Désignations et des prix dans mon formulaire, mais je n’arrive pas à le trouver. Je suis renvoyée vers une page de commande « Base de données créée suite au tutoriel Créer une facture avec Access » à 45 €.
On ne peut pas y accéder gratuitement ?
Cordialement.
Bonjour Mathilde,
Non, le fichier complet est payant.
Merci ça a fonctionné avec moi aussi… Mais c’est quoi le problème au juste ?
Bonjour Lydia,
Quand je veux intégrer le sous-formulaire/sous-état, je place le bouton comme demandé, mais la fenêtre ne s’ouvre me permettant la création (j’ai bien sélectionné ce choix comme précédemment expliqué). J’ai tenté, annulé, supprimé, tout recommencé au moment où il ne veut (S/F_Facture). J’ai même cliqué droit « créer », mais rien.
Du coup, je suis complètement bloquée.
Helpppppp. Merci par avance.
🙂
Bonjour Mary,
Access ne permet plus d’ajouter un sous-formulaire à un sous-formulaire directement, il faut ouvrir le sous-formulaire indépendamment et lui ajouter le SF.
Bonjour,
Pourriez-vous me dire comment remettre les n° de facture à zéro ?
Car mon n° commence à N° facture 33.
Merci.
Bonjour,
J’ai fait un tutoriel complet sur la remise à zéro des numéroauto d’Access.