Problèmes sur sous-formulaire facture Access

Résolu/Fermé
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 - 21 juil. 2013 à 19:39
HerissonOpiniatre Messages postés 8 Date d'inscription lundi 9 février 2015 Statut Membre Dernière intervention 10 septembre 2015 - 9 févr. 2015 à 09:14
Bonjour,

J'essaye de créer une base de données qui permettrait de gérer la facturation.

J'ai créé plusieurs tables et relations :
http://img96.xooimage.com/files/4/e/8/capture-3fbbe58.png

J'ai également créé 2 requêtes, 1 formulaire et 1 sous-formulaire qui me donne ceci :
http://img97.xooimage.com/views/a/1/b/capture2-3fbbe71.png/

Tout paraît correct : quand je choisis un n° client, cela affiche les données le concernant directement ; quand je sélectionne une désignation, le N° produit correspondant s'affiche et un numéro de facture est généré et il correspond bien au numéro visible dans le sous-formulaire..

Seulement, voici mes 3 soucis :
- Je souhaiterais que lorsque je choisis une désignation, celle-ci affiche automatiquement le prix unitaire qui est également disponible dans la table inventaire.

- J'ai voulu mettre un total de tous les STotal concernant une facture en pied de formulaire et j'ai une erreur. J'ai tapé la formule =somme(STotal). J'ai même cherché sur les forums et les solutions données me donnent toujours une erreur. Les relations père-fils sont bien faites pourtant.

- Je viens de m'apercevoir qu'au fur et à mesure que je choisis des produits dans le sous-formulaire, cela génère des enregistrements supplémentaires dans la requête et donc dans la table Inventaire. Du coup, dans le menu déroulant du sous-formulaire, je me retrouve avec plusieurs produits du même nom.

Voici une capture des 2 requêtes créées :
http://img97.xooimage.com/views/2/3/1/capture3-3fbbf39.png/
http://img96.xooimage.com/views/9/5/7/capture4-3fbbf3f.png/

Pour info, j'ai suivi ce tuto : https://www.lecompagnon.info//access/sousformulaire.htm#.UewbEm03zYT

Si quelqu'un pouvait m'aider, ce serait super car ça fait plusieurs fois que j'essaye et je croyais être au bout mais je me retrouve encore avec des problèmes.

Merci d'avance

19 réponses

Bonsoir,
Tes tables sont globalement bien construites mais toutefois je me permets une observation à propos de ta table "Inventaire", tu dois faire attention au fait que tes tarifs vont changés au cours du temps, tu dois donc prévoir une table "Tarifs" distinctes afin de pouvoir modifier tes prix sans que l'ensemble des factures ayant le produit en question soit modifier à chaque fois.

Ta 1ère question: "Je souhaiterais que lorsque je choisis une désignation, celle-ci affiche automatiquement le prix unitaire qui est également disponible dans la table inventaire."
Il faut que tu prévois un morceau de code "actualiser" (ou une macro) pour le contrôle prix correspondant, qui se déclenche à chaque MàJ de ta saisie de la référence produit

Ta 2ème question: "mettre un total de tous les STotal". Je te conseillerais de mettre un contrôle indépendant avec une formule de type DSum() qui s'actualise à chaque ouverture, et aussi soit sur click soit sur MàJ de la saisie d'une nouvelle donnée. C'est le plus simple à mettre en place.

Ta 3ème question: "au fur et à mesure que je choisis des produits dans le sous-formulaire, cela génère des enregistrements supplémentaires dans la requête et donc dans la table Inventaire"
Désolé, mais ce que tu donnes à voir ne nous permet pas de dire quoique ce soit. Ce n'est pas le résultat de ta requête qui nous informe mais sa construction. A revoir plus tard

Bon courage
1
HerissonOpiniatre Messages postés 8 Date d'inscription lundi 9 février 2015 Statut Membre Dernière intervention 10 septembre 2015
9 févr. 2015 à 09:14
Bonjour Tessel75!
je me retrouve aussi presque dans le même situation que la question posée et moi, je me retrouve précisément à la première question.
j'ai tout tenté mais sans pouvoir y arriver!
veux-tu bien m'expliciter la procédure à suivre, voir même comment taper ce morceau de code "Actualiser" dont tu parle?
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
21 juil. 2013 à 22:55
Bonjour
Voic un lien ou je fais gestion de stock et j'emets des factures.


https://www.cjoint.com/?BKxxsGpjqFs

Dis moi si cela peut t'aider

Pour reproduire la somme d'une valeur dans un formualire issue de son sous formulaire, il creait un champ independant dans le formulaire.
Dans le pieds du sous formulaire tu creais un champ independant qui calcule la somme d'une colonne de Prix TTC. A ce champ tu lui donnes un nom.
Ce nom te serviras a transcrire le resultat du calcul dans le formulaire
Dans le formulaire commande tu as un exemple. Regardes dans les propriétes ,tu as l'exmple type. pour que le resultat s'affiche il lui faut indiqué le chemin du calcul que tu veux voire apparaitre.
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
22 juil. 2013 à 17:27
Merci à vous 2.

Castours : j'ai bien repris ton exemple et ça marche impec. Donc l'histoire du total c'est bon.

Tessel75 : Ta suggestion de table Tarifs est très bien. Cependant, comment vois-tu sa construction ? A chaque changement de tarif, je rajoute une ligne avec genre la date dans la désignation ? Car c'est vrai que le but de la facturation est d'en sortir un état et il se mettra à jour et donc aura les prix unitaires actuels même si la facture date d'il y a 5 ans.

Pour la macro d'actualisation, j'ai pas encore eu le temps de me former aux macros. Je me suis mis sur le contrôle du prix unitaire et sur après MAJ, j'ai inséré la macro actualiser mais soit il y a un truc que j'ai pas fait, soit ça ne marche pas car le prix unitaire est toujours à 0.

Pour les doublons, voilà les captures des 2 requêtes. Si je me rappelle bien (après tous ces essais), la première est pour le formulaire et la 2e pour le sous-formulaire :
http://img95.xooimage.com/views/3/3/3/rfacture-3fc08ac.png/
http://img99.xooimage.com/views/c/2/3/rfactures-produits-3fc08b2.png/
0
Bonjour,
La réponse à ta question est dans la 1ère de tes captures d'écran, ... avec une table "Tarifs" en plus liée par une jointure un à un sur un N°Tarif ajouté à la table "TransitionFactInv".
Les champs de la table Tarifs seraient alors: N°Tarif (N°Auto) / N°Référence / Prix / Date, et il y aurait un champ supplémentaire à la table "TransitionFactInv". Bien évidemment le tarif à sélectionner sera toujours le dernier.

Pour ce qui est de la sélection et de l'apparition automatique du prix, tu peux mettre un code dans la propriété "Evènement/Après MàJ" du contrôle "Produit". (Pour cela tu double clickes sur la ligne de propriété, et tu ouvres le VBA avec la petite icône "..." en fin de ligne) :
   Me.ControlePrix = DLast("N°Tarif","Tarifs"," N°Référence = ScreenActiveControl")
   ControlePrix.Requery 
Il faut également que le contrôle "ControlePrix " soit de la forme liste déroulante avec la sélection sur le "N°Tarif" et la vue sur le prix lui-même.

Pour ce qui est des doublons, la raison est que tes jointures sont fautives. Il faut que tu choisisses dans la sélection des types de jointures, respectivement, tous les enregistrements des tables "Clients" et "Transitions" d'une part, et d'autre part pour les tables "Factures" et "Inventaire", seulement ceux pour lesquels les champs joints sont égaux. Comme cela, ça devrait passer.
Bonne suite.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
23 juil. 2013 à 14:59
Bonjour,

Je crois que je suis en train de m'embrouiller car rien ne fonctionne.

Pour la table Tarifs, je n'arrive pas à faire une relation avec l'intégrité référentielle. J'ai bien mis les champs en lien avec des index sans doublon.
Par ailleurs, faut-il que je supprime le champ Prix unitaire de la table inventaire maintenant qu'il se trouve dans la table Tarifs ?

Pour l'évènement après mise à jour, je pense avoir bien saisi le code au bon endroit mais quand je choisis une désignation, je me retrouve avec cette erreur :
http://img95.xooimage.com/views/f/b/b/capture-3fc56a6.png/

Et enfin, pour les doublons, comme les tables "Clients" et "Transitions" et "Factures" et "Inventaire" ne sont pas reliées directement, j'ai modifié la type de jointure des relations menant à la table Transitions avec l'option 3 mais je ne suis pas sûr que ce soit bon.
0
Met ta base (anonymisée) en message via cjoint.com! Ce sera bien plus simple.
A plus ...!
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
25 juil. 2013 à 13:16
Voilà : http://cjoint.com/data/0Gznn01jTOS.htm
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
25 juil. 2013 à 16:03
bonjour
Bien reçu ta base.
Mauvaise relation entre les clés primaire et secondaire.
La clé secondaire doit porter le meme nom sinon futur probleme a venir
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
25 juil. 2013 à 18:10
Bonjour,

Ah bon, je croyais que du moment qu'elles avaient les mêmes propriétés, c'était bon.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
26 juil. 2013 à 00:46
Bonjour
Je ne sais pas si cela va te convenir, mais dans ce lien ta base modifiée
J'ai ajouté une table date de facture et refait les relations,et formulaire
Maintenant tu as un formulaire client, un sous formulaire datefacture et sous formulaire facture.
Ce qui te permet a partir d'un client de choisir un date facture puis les produits.
Donne reponse

Le lien a été créé: https://www.cjoint.com/c/CGAaM10rxFu
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
26 juil. 2013 à 16:03
Bonjour et merci castours.
Cependant, j'ai toujours les mêmes soucis : le numéro produit n'affiche que la désignation mais pas le prix unitaire et de plus, je suis obligé de choisir un numéro de tarif qui ne m'indique pas à quoi cela correspond.
Par ailleurs, lorsque je veux créer une nouvelle facture, cela crée un nouveau client, du coup, un client ne peut l'être qu'une fois.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
26 juil. 2013 à 17:53
Bonjour
Tu veux que le produit et le prix de la table inventairese mettent dans le formulaire lorsque tu choisis un produit.
moi ce que je t'ai fait tu choisis un produit et tu choisis un prix avec la liste deroulante
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
26 juil. 2013 à 18:10
Bonjour
Les clients créés peuvent avoir plusieurs factures.
Tu procedes de la façon suivante:
Actuellement pour l'essai nous un client et une facture qui est crée par la date.
Il te suffit de creer une 2eme date, ce qui te permet de faire une nouvelle facture.
Le formulaire fonctionne de la façon suivante
Un client; une date facture puis la facture avec les produits..
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
26 juil. 2013 à 20:03
Oui mais je veux dire que si on a 100 produits avec autant, voire plus, de tarifs, ce n'est pas pratique, enfin ce n'est pas ce que je recherche.
Je voudrais que par le simple choix du produit, tout soit saisi et il n'y ai plus qu'à indiquer une quantité qui recalcule le total.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
26 juil. 2013 à 21:55
Bonjour
Bien je vais te faire parvenir la base modifiée.
Tu choisiras le produit dans la liste deroulante; tu clique dessus, les cases se rempliront toutes seules, Tu n'auras qu'à indiquer la quantité.
A toi de choisir une presentation qui te conviendra
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
26 juil. 2013 à 22:05
Voila le fichier

Le lien a été créé: https://www.cjoint.com/c/CGAv7WA81qM
Tu vas dans le formulaire F_Client
Tu choisis un client avec les petites fleches du bas
Tu mets une date de facture
Tu rentres un produits le nom et le prix s'inscrivent
Tu rentres la quantité et le calcul se fait en fin de ligne
Tiens moi au courant
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
27 juil. 2013 à 14:46
Bonjour Castours,

Je pense que cette fois tout est ok. Par contre, j'essaye de créer un état d'après une requête pour pouvoir imprimer la facture de chaque client, mais déjà, simplement en faisant une requête avec les coordonnées des clients de la table Clients, je n'ai que 7 enregistrements au lieu des 21 et alors quand j'essaye de faire la requête pour l'état il n'y a plus rien.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
Modifié par castours le 27/07/2013 à 17:18
Bonjour
Si tu as 21 clients mais que 4 factures, ta requete selectionneras que les 4 factures.
Ta requete doit avoir les 3 tables, clients, date facture,et facture.
Maintenant si tu veux un etat sur les clients , tu prends que la table clients
Voici la base avec un etat
https://www.cjoint.com/c/CGBrpDsqlzB
Maintenant pour le reste tu prends exemple sur ce que je t'ai envoye dans ma base exemple
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
27 juil. 2013 à 20:35
Alors concernant, l'état, j'en ai créé un et je pense qu'il est ok mais j'ai dû supprimer une relation pendant la construction de la requête sinon je n'avais aucun enregistrement.

Par contre, il m'est impossible de créer 2 factures le même jour pour un client différent (exemple 28/07/13) : risque de doublon.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
28 juil. 2013 à 17:36
Bonjour
Pour le weekend, je ne suis pas chez moi mais j' ai trouvé dans mes archives un exemple tout fait.
Il comprend commande clients produits mode paiement, salaries
Mais je crois qu'il en access 2000 que tu pourras convertir
Dis moi si cela te convient
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
28 juil. 2013 à 17:36
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
29 juil. 2013 à 10:55
Bonjour,

Ta BDD est super bien mais, pour être honnête, ma base de données va me servir à écrire un tuto pour expliquer comment créer une base de données pour de la facturation.
Vu le nombre d'éléments présents sur cette BDD, j'ai peur de ne pas retrouver le même résultat en reproduisant cette dernière.

Voilà pourquoi, j'étais parti sur ma base de données "simple" et je voulais juste "réparer" les petits problèmes. C'est vraiment quelque chose de simple que je voulais, sinon le tuto va durer des heures.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
31 juil. 2013 à 00:12
Bonjour
J'ai modifie mon erreur. Je t'ai fait un etat qui imprime les factures par client.
Tu prends un client dtu mets une date puis les produits
Lorsque tu as deja une date, tu en mets supplementaire et le sous formulaire produit se vide pour une nouvelle facture.
Il ne faut pas remplacer le date deja enregistrée car cela ferait des erreurs
https://www.cjoint.com/c/CGFae4ZFEnY
Tiens moi au courant
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
1 août 2013 à 16:01
Bonjour,

Je ne suis pas sûr d'avoir compris.
Pour la date de S/F_DateFacture, impossible de mettre une date existante et si je ne la remplis pas et que je remplis seulement S/F_Facture Sous-formulaire et passe à un autre client pour revenir, tout est effacé.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
1 août 2013 à 18:31
Bonjour
Le principe
Un client, une date, et une facture pour la premiere fois.
Tu veux une 2 eme facture pour ce client.
Tu le choisis dans la liste, tu fais une 2eme ligne date puis la facture.
Tu peux faire plusieurs factures le meme jour au mem client.
Je formulaire F_Clients , le S/F_Date et le S/F_Facture fonctionnent ensemble.
Exemple
Client1,Date 31/07/2013, facture1
Client1, Date 31/07/2013, Facture2
Client1 ,Date 02/08/2013, Facture3
Client2, Date 02/08/2013, Facture4
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
2 août 2013 à 13:55
Bonjour,

Je suis désolé mais ça ne fonctionne pas quand je mets une date existante dans S/F_Date et je ne peux pas passer à un autre champ tant que ce n'est pas modifié.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
2 août 2013 à 16:07
Bonjour
Voila un fichier qui fonctionne
J'ai fait plusieurs essais avec des clients differents.
Avec le client 1, il y 2 datesdont 2 factures
J'espere avoir répondu à ton attente
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
2 août 2013 à 16:07
0
julianinho Messages postés 100 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 6 août 2015 33
2 août 2013 à 17:49
YES ! Je crois que c'est bon cette fois, j'ai testé, tout à l'air ok.
Me reste plus qu'à essayer de ne rien oublier en écrivant le tuto.

En tout cas un grand MERCI à toi, j'ai failli te dire que je laissais tomber :)
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
2 août 2013 à 18:05
as tu regarder l'impression de la facture?
Peux tu m'en dire plus sur toi?
moi retraité 70 piges de la touraine
Connais tu la touraine les chateaux de la loire
0