Bonjour à tous,
J'ai une application comptabilité sur access, dans une sub vba il y a un certain nombre de requêtes qui fonctionnent toutes sauf la dernière. Si je passe cette requête en avant dernière elle fonctionne. C'est toujours la dernière qui ne fonctionne pas.
Je joint mon code.
Merci d'avance
Private Sub EcritRegroup_Click()
If MsgBox("Attention, cette opération est irréversible !", vbOKCancel, "Prudence") = vbOK Then
Dim bd As Database
Dim cptesGestion As Recordset
Dim montant, totalcharges, totalproduits, totalresult, numerocompte As Currency
Dim requeteSQL, resultatSQL As String
Dim jour As String
Dim numeroEcr As Long
Set bd = CurrentDb
DoCmd.SetWarnings (False)
jour = Date
' regroupement des charges
requeteSQL = "insert into ecriture (datEcr,libEcr) values ('" & jour & "','Regroupement charges')"
DoCmd.RunSQL (requeteSQL)
numeroEcr = DMax("numEcr", "ecriture")
totalcharges = 0
Set cptesGestion = bd.OpenRecordset("rq_regroupCharges")
cptesGestion.MoveFirst
While (Not cptesGestion.EOF)
montant = cptesGestion!solde
totalcharges = totalcharges + montant
requeteSQL = "insert into mouvement values (" & numeroEcr & ","
requeteSQL = requeteSQL & cptesGestion!numCpte & ", 0,"
requeteSQL = requeteSQL & montant & ","
requeteSQL = requeteSQL & 0 & ")"
DoCmd.RunSQL (requeteSQL)
cptesGestion.MoveNext
Wend
cptesGestion.Close
' regroupement des produits
requeteSQL = "insert into ecriture (datEcr,libEcr) values ('" & jour & "','Regroupement produits')"
DoCmd.RunSQL (requeteSQL)
numeroEcr = DMax("numEcr", "ecriture")
totalproduits = 0
Set cptesGestion = bd.OpenRecordset("rq_regroupProduits")
cptesGestion.MoveFirst
While (Not cptesGestion.EOF)
montant = cptesGestion!solde
totalproduits = totalproduits + montant
requeteSQL = "insert into mouvement values (" & numeroEcr & ","
requeteSQL = requeteSQL & cptesGestion!numCpte & ","
requeteSQL = requeteSQL & montant & ",0 ,0)"
DoCmd.RunSQL (requeteSQL)
cptesGestion.MoveNext
Wend
cptesGestion.Close
totalresult = totalcharges - totalproduits
If totalresult < 0 Then
numerocompte = 120000
Else
numerocompte = 129000
End If
requeteSQL = "insert into ecriture (datEcr,libEcr) values ('" & jour & "','Résultat')"
DoCmd.RunSQL (requeteSQL)
numeroEcr = DMax("numEcr", "ecriture")
requeteSQL = "insert into mouvement values (" & numeroEcr & ","
requeteSQL = requeteSQL & numerocompte & ", 0,"
requeteSQL = requeteSQL & totalcharges & ","
requeteSQL = requeteSQL & 0 & ")"
DoCmd.RunSQL (requeteSQL)
resultatSQL = "insert into mouvement values (" & numeroEcr & ","
resultatSQL = resultatSQL & numerocompte & ","
resultatSQL = resultatSQL & totalproduits & ",0 ,0)"
DoCmd.RunSQL (resultatSQL)
DoCmd.SetWarnings (True)
MsgBox ("Opération terminée")
Else
MsgBox ("Opération annulée")
End If
End Sub
Partager