Bonjour j'ai une fonction qui me permet de calculer un PAMP (Prix d'achat moyen pondere) en VBA.
Le problème est que dans certains états ayant plus de 10 lignes de calcul, access ne semble pas avoir le temps de calculer certaines valeurs et me met erreur.
Si je passe en mode creation et reviens en mode etat, tout est ok.
Y aurait t-il un moyen de demander un pre calcul avant le chargement ou quelque chose dans le style?
Merci
Pour info voici ma fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Option Explicit Function stpmp(codeval As Long, Compte As Long, ref As String) As Double Dim base As DAO.Database Dim mesvaleurs As DAO.Recordset Dim sql As String Dim Stock As Long Dim pmp As Double Set base = CurrentDb() sql = "SELECT DateFormatte,idTypetransaction, idProduit, idClient, Quantite, Prix FROM 2TRANSACTIONS " sql = sql & "WHERE (DateFormatte <= " & ref & ") And ( idProduit = " & codeval & " ) And ( idClient = " & Compte & " )ORDER BY DateFormatte;" Set mesvaleurs = base.OpenRecordset(sql) mesvaleurs.MoveLast mesvaleurs.MoveFirst Do While Not mesvaleurs.EOF If mesvaleurs![IdTypeTransaction] = "1" Then pmp = pmp + (mesvaleurs![Quantite] * mesvaleurs![Prix]) Stock = Stock + mesvaleurs!Quantite Else If Stock - mesvaleurs!Quantite = 0 Then pmp = pmp / mesvaleurs![Quantite] Else pmp = pmp - (mesvaleurs![Quantite] * (pmp / Stock)) End If Stock = Stock - mesvaleurs!Quantite End If mesvaleurs.MoveNext Loop Set mesvaleurs = Nothing Set mesvaleurs = Nothing If Stock = 0 Then stpmp = pmp Else stpmp = pmp / Stock End If End Function
Partager