Bonjour,
Petit problème avec des afterupdate de deux de mes champs.
J'ai le code suivant et j'explique le souci ensuite:
Le problème, c'est que la procédure CalculDevis s'effectue correctement quand je modifie le champ NuméroDevisaffaire, mais pas quand je modifie juste le champ PrixFinal. Ca a l'air de fonctionner quand je modifie d'abord NuméroDevisaffaire, puis PrixFinal, mais ça ne m'arrange pas du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Sub PrixFinal_AfterUpdate() 'calcul des différentes valeurs CalculDevis End Sub Private Sub NuméroDevisaffaire_AfterUpdate() 'Active le bouton si on a un numéro de devis Me!Bouton_ajout_prestation.Enabled = Not IsNull(NuméroDevisaffaire) 'calcul des différentes valeurs CalculDevis End Sub
Le code de CalculDevis:
C'est du calcul à partir d'une requete et remplissage de champs.
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
36
37
38
39
40
41
42
43 Private Sub CalculDevis() If Not IsNull(Me.NuméroDevisaffaire.Value) Then Dim mysql As String mysql = "SELECT Prestation.Quantité, Prestation.PrixUnitaire, Prestation.CoeffRetenu FROM [Devis d'affaire] INNER JOIN Prestation ON [Devis d'affaire].NuméroDevisaffaire = Prestation.DevisPère WHERE Prestation.DevisPère = '" & Me.NuméroDevisaffaire.Value & "'" Dim cnn1 As ADODB.Connection Set cnn1 = CurrentProject.Connection Dim myRecord As New ADODB.recordset myRecord.ActiveConnection = cnn1 myRecord.Open mysql Dim CDirects As Double CDirects = 0 Dim PVcalcul As Double PVcalcul = 0 If Not myRecord.EOF Then myRecord.MoveFirst While Not myRecord.EOF CDirects = CDirects + myRecord.Fields(0) * myRecord.Fields(1) PVcalcul = PVcalcul + myRecord.Fields(0) * myRecord.Fields(1) * myRecord.Fields(2) myRecord.MoveNext Wend End If Me.CalculCD.Value = CDirects Me.CalculPV.Value = PVcalcul Me.CalculMB.Value = Me.PrixFinal.Value - CDirects If CDirects <> 0 Then Me.calculCoeff.Value = Me.PrixFinal.Value / CDirects Else Me.calculCoeff.Value = 0 End If End If End Sub
Y'a t-il des priorités dans l'éxécution des évenements? Vous voyez pourquoi ça ne marche pas?
Pour moi, c'est incompréhensible...![]()
Merci d'avance de votre aide.
flu
Partager