Bonjour,
j'ai un message d'erreur lors de l'execution d'un procédure dans VBA que je n'arrive pas à résoudre. Pouvez vous m'aider svp ?
Le message est "erreur d'execution 3049"

En fait l'objectif de cette procédure est de
effacer les données contenues dans une table (Wbudgetgroup) puis de copier les données contenues dans une requete (Wpricinggroup) et de les coller dans la table (Wbudgetgroup). ensuite je complete un champ par le calcul grace au code qui suit.

j'effectue cela la premiere fois, _ça fonctionne_ ensuite je refait la meme chose mais pour copier les donnes de la requete (Wpricinggroup) dans une autre table (Wbudgetunitgroup)
et là ça me met erreur 3049.

pouvez vous m'aider, y a t il dans la repétition de ce processus qq chose qui manque ?
Merci pour votre retour,
Cdlt

ci dessous le code utilisé



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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
'*********************************************
'effectue la meme opération opur generer le comparateur de prix graphique
'*********************************************************DoCmd.SetWarnings False    'bloque les messages d'avertissement
DoCmd.RunSQL "DELETE * FROM Wbudgetgroup;"
DoEvents
DoCmd.RunSQL " INSERT INTO Wbudgetgroup SELECT * FROM Wpricinggroup;"
DoCmd.SetWarnings False
 'calcul du prix de chaque livraison en automatique
 'concerne le traitement de la requete budgetgroupreq pour les flux groupage
 
    Set rst = CurrentDb.OpenRecordset("Wbudgetgroupreq", dbOpenDynaset, dbDenyWrite)
    Application.DBEngine.SetOption DAO.dbMaxLocksPerFile, 50000
 
 
    With rst
        .MoveLast
        .MoveFirst
        For I = 1 To .RecordCount   ' Il existe d'autre moyens pour
                                    ' passer sur tous les enregistrements
            .Edit
            If !poids <= 3000 Then
                If !poids <= 1500 Then
                    If !poids <= 1000 Then
                        If !poids <= 500 Then
                            If !poids <= 100 Then
                                If !poids <= 90 Then
                                    If !poids <= 80 Then
                                        If !poids <= 70 Then
                                            If !poids <= 60 Then
                                                If !poids <= 50 Then
                                                    If !poids <= 40 Then
                                                        If !poids <= 30 Then
                                                            If !poids <= 20 Then
                                                                If !poids <= 10 Then
                                                                !prixauto = !prixkg10
                                                                GoTo wlasuite
                                                                End If
                                                            !prixauto = !prixkg20
                                                            GoTo wlasuite
                                                            End If
                                                        !prixauto = !prixkg30
                                                        GoTo wlasuite
                                                        End If
                                                    !prixauto = !prixkg40
                                                    GoTo wlasuite
                                                    End If
                                                !prixauto = !prixkg50
                                                GoTo wlasuite
                                                End If
                                            !prixauto = !prixkg60
                                            GoTo wlasuite
                                            End If
                                        !prixauto = !prixkg70
                                        GoTo wlasuite
                                        End If
                                    !prixauto = !prixkg80
                                    GoTo wlasuite
                                    End If
                                !prixauto = !prixkg90
                                GoTo wlasuite
                                End If
                            !prixauto = !prixkg100
                            GoTo wlasuite
                            End If
                        !prixauto = !prixkg500 / 100 * !poids
                        GoTo wlasuite
                        End If
                    !prixauto = !prixkg1000 / 100 * !poids
                    GoTo wlasuite
                    End If
                !prixauto = !prixkg1500 / 100 * !poids
                GoTo wlasuite
                End If
            !prixauto = !prixkg3000 / 100 * !poids
            GoTo wlasuite
            End If
 
wlasuite:
 
            .Update
            .MoveNext
        Next I
    End With
 
    Set rst = Nothing
    MsgBox ("la requete Wbudget pour les flux GROUPAGE a été mise a jour pour générer le graphique comparateur de prix groupage")
 
'*********************************************************'effectue la meme opération opur generer le comparateur de prix UNITAIR E GROUPAGE
'*********************************************************DoCmd.SetWarnings False    'bloque les messages d'avertissement
DoCmd.RunSQL "DELETE * FROM Wbudgetunitgroup;"
DoEvents
DoCmd.RunSQL " INSERT INTO Wbudgetunitgroup SELECT * FROM Wpricinggroup;"
DoCmd.SetWarnings False
 'calcul du prix de chaque livraison en automatique
 'concerne le traitement de la requete budgetgroupreq pour les flux groupage
 
    Set rst = CurrentDb.OpenRecordset("Wbudgetunitgroup", dbOpenDynaset, dbDenyWrite)
    Application.DBEngine.SetOption DAO.dbMaxLocksPerFile, 50000
 
 
    With rst
        .MoveLast
        .MoveFirst
        For I = 1 To .RecordCount   ' Il existe d'autre moyens pour
                                    ' passer sur tous les enregistrements
            .Edit
            If !poids <= 3000 Then
                If !poids <= 1500 Then
                    If !poids <= 1000 Then
                        If !poids <= 500 Then
                            If !poids <= 100 Then
                                If !poids <= 90 Then
                                    If !poids <= 80 Then
                                        If !poids <= 70 Then
                                            If !poids <= 60 Then
                                                If !poids <= 50 Then
                                                    If !poids <= 40 Then
                                                        If !poids <= 30 Then
                                                            If !poids <= 20 Then
                                                                If !poids <= 10 Then
                                                                !prixauto = !prixkg10 / !poids
                                                                                                                          GoTo wlasuite
                                                                End If
                                                            !prixauto = !prixkg20 / !poids
                                                            GoTo ulasuite
                                                            End If
                                                        !prixauto = !prixkg30 / !poids
                                                        GoTo ulasuite
                                                        End If
                                                    !prixauto = !prixkg40 / !poids
                                                    GoTo ulasuite
                                                    End If
                                                !prixauto = !prixkg50 / !poids
                                                GoTo ulasuite
                                                End If
                                            !prixauto = !prixkg60 / !poids
                                            GoTo ulasuite
                                            End If
                                        !prixauto = !prixkg70 / !poids
                                        GoTo ulasuite
                                        End If
                                    !prixauto = !prixkg80 / !poids
                                    GoTo ulasuite
                                    End If
                                !prixauto = !prixkg90 / !poids
                                GoTo ulasuite
                                End If
                            !prixauto = !prixkg100 / !poids
                            GoTo ulasuite
                            End If
                        !prixauto = !prixkg500 / 100
                        GoTo ulasuite
                        End If
                    !prixauto = !prixkg1000 / 100
                    GoTo ulasuite
                    End If
                !prixauto = !prixkg1500 / 100
                GoTo ulasuite
                End If
            !prixauto = !prixkg3000 / 100
            GoTo ulasuite
            End If
 
ulasuite:
 
            .Update
            .MoveNext
        Next I
    End With
 
    Set rst = Nothing
    MsgBox ("la requete WUNIT GRoupage  pour les flux GROUPAGE a été mise a jour pour générer le graphique comparateur de prix groupage")
 
End Sub