Bonjour,
Merci pour ton suivit.
J'ai encore planché dessus aujourd'hui et hier soir, et maintenant sur une facture existante, le SF_MontantTVA semble fonctionner (j'avais des problèmes de noms de formulaires et champs suite aux nombreuses modifs que j'avais apportées) MAIS lorsque je souhaite ajouter une ligne ou même créer une nouvelle facture, j'ai une boite de dialogue qui pop: "Argument ou appel de procédure incorrect". Je clique sur ok et le code du module". Cette boite de dialogue apparait également si je fais un refresh.
- J'ai copié ta table T_TVA, ton formulaire SF_MontantTVA, ton module M_CalculMTVA, ta requête R_Detail_Facture ainsi que tes lignes de code et tes lignes de requêtes en prenant soin de changer les noms des champs la ou le besoin s'en faisait ressentir.
- J'ai renommé certains de mes champs dans les tables lorsqu'ils étaient en double (par exemple ID_Tarif était présent dans les tables T_Tarifs et T_Détails_Factures, j'ai renommé celui de détails_factures en ID_Tarif_FK).
- Le sous-formulaire SF_MontantTVA a été intégré via la mode création du formulaire (via le bouton ajouter un sous-formulaire / sous-état) et je n'ai mis aucun "lien".
- J'ai modifié/controlé la ligne de données du CalculMontantTVA (Je pense malgré tout qu'une erreur s'est glissée ici: Lorsque j'efface la ligne et que je la réécris, j'ai des propositions de champs qui apparaissent jusqu'à que j'ajoute [Formulaire] après [S/F_Factures_Détails], la il me propose un formulaire qui possède l'icone d'un état et ensuite je dois écrire mon ID_Facture_FK manuellement, il ne m'est pas proposé.
- J'ai vérifié plusieurs fois les lignes de code et les requêtes pour vérifier si il n'y avait pas d'erreur de champs. Je n'ai rien trouvé.
Voici la ligne dont je parlais au sujet de la ligne de données du CalculMontantTVA que je pense qui pourrait comporter un problème:
=CalculMontantTVA([IdTVA];[Formulaires]![F_Clients_Facturation]![S/F_Factures].[Formulaire]![S/F_Factures_Détails].[Formulaire]![ID_Facture_FK])
Et voici le code correspondant au module:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Option Compare Database
Option Explicit
Public Function CalculMontantTVA(parCodeTVA As Integer, parFacture As Integer)
Dim rstDetail As DAO.Recordset
Dim SomTVA As Double, ValTauxTVA As Double
Set rstDetail = CurrentDb.OpenRecordset("R_Detail_Facture", dbOpenDynaset)
SomTVA = 0
ValTauxTVA = Nz(DLookup("[TauxTVA]", "[T_TVA]", "[IdTVA]=" & parCodeTVA), 0)
With rstDetail
.FindFirst "[ID_Facture_FK]=" & parFacture & " AND [Code_TVA_FK]=" & parCodeTVA
While Not .NoMatch
SomTVA = SomTVA + ![Prix_Unitaire_FK] * ![Quantité] * ValTauxTVA
.FindNext "[ID_Facture_FK]=" & parFacture & " AND [Code_TVA_FK]=" & parCodeTVA
Wend
End With
CalculMontantTVA = SomTVA
rstDetail.Close
Set rstDetail = Nothing
End Function |
J'ai épuisé mes idées pour le moment, mais j'ai essayé de te donner un maximum de détails.
EDIT: Pour une raison que j'ignore, maintenant mon Prix_Unitaire_FK ne se remplit plus automatiquement comme il le faisait quelques essais auparavant mais je ne trouve pas pourquoi pour le moment... Du coup à l'ouverture de mon formulaire, j'ai 4 fois la boite de dialogue qui apparait (le nombre de ligne du SF_MontantTVA justement...).
ID_Tarif_FK code données:
SELECT T_Tarifs.ID_Tarif, T_Tarifs.Désignation, T_Tarifs.Prix_unitaire, T_TVA.TauxTVA FROM T_TVA INNER JOIN T_Tarifs ON T_TVA.IdTVA = T_Tarifs.Code_TVA_FK;
et le code évènementielle après MAJ:
1 2 3 4 5 6
| Sub majprixventeprod()
Me.Prix_Unitaire_FK = Me.CboProduit.Column(2)
End Sub
Private Sub CboProduit_AfterUpdate()
majprixventeprod
End Sub |
Je sais qu'il y a une erreur à ce niveau.... mais ou.... Le code TVA quand à lui est bien pointé et affiché.
Tant qu'à faire, voici ma R_detail_Facture:
1 2
| SELECT T_Factures_Détails.ID_Facture_FK, T_Factures_Détails.ID_Tarif_FK, T_Factures_Détails.Quantité, T_Factures_Détails.Prix_Unitaire_FK, T_Tarifs.Code_TVA_FK, T_Tarifs.Prix_unitaire AS PrixCatalogue, [Prix_unitaire_FK]*[Quantité] AS MontantHT, [TAUXTVA]*[MontantHT] AS MontantTVA, [MontantHT]+[MontantTVA] AS MontantTTC, T_TVA.TauxTVA
FROM T_TVA INNER JOIN (T_Tarifs INNER JOIN T_Factures_Détails ON T_Tarifs.ID_Tarif=T_Factures_Détails.[ID_Tarif_FK]) ON T_TVA.IdTVA = T_Tarifs.Code_TVA_FK; |
Pour finir, une petite remarque sur ton fichier: Lorsque l'on supprime une ligne de facture, le SF_MontantTVA "bug", il affiche #Type!. Même avec un refresh. Par contre si on ferme la facture et qu'on la réouvre, pas de problème; idem si on ajoute un nouvel enregistrement.
A bientôt.
Partager