Bonjour,

Je suis très novice en VBA , je créer plusieur code vba que j'ai empile en fonction de déroulement des actions demande.

Pouvez-vous jeter un oeil pour me corrige et si c'est correct.

Merci

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
 
 
Private Sub GenerationET_Click()
 
If Not IsNull(Me.Edition_etiquette.Value) Then
    MsgBox "Les etiquettes sont deja affectées a un numero de lot"
    Exit Sub
End If
 
 
DoCmd.SetWarnings False
 
'=== Mise a jour qte par rapport a l'of et vide la table tmp prep archivage
DoCmd.SetWarnings False
 
Dim Dtbase As DAO.Database, strSql As String
strSql = "UPDATE [TB-TempPrepOF] INNER JOIN [TB-liste_of] ON [TB-TempPrepOF].N°of = [TB-liste_of].of_id SET [TB-TempPrepOF].QTE = [TB-liste_of].[qte_pr];"
strSql = "DELETE [TB-TempPrepArchi].* FROM [TB-TempPrepArchi];"
strSql = "delete [TB-TempEnreNumeroLot].* from [TB-TempEnreNumeroLot];"
Set Dtbase = CurrentDb()
Dtbase.Execute (strSql)
Dtbase.Close
 
'=== Creer le nombre d'etiquette dans tb prepAchivage
 
Dim rst1 As DAO.Recordset
Dim rst2 As DAO.Recordset
 
 
Set rst1 = CurrentDb.OpenRecordset("TB-TempPrepOF")
Set rst2 = CurrentDb.OpenRecordset("TB-TempPrepArchi")
 
While Not rst1.EOF
 
    For I = 1 To rst1.Fields(0)
        rst2.AddNew
        rst2.Fields(0) = rst1.Fields(2)
        rst2.Fields(1) = rst1.Fields(1)
        rst2.Update
 
    Next
 
    rst1.MoveNext
Wend
 
rst1.Close
rst2.Close
 
Set rst1 = Nothing
Set rst2 = Nothing
 
'=== Mise a jour numero de lot
 
'== comptage etiquette 1 a...
DoCmd.OpenQuery "RQ-Comptage etiquette"
 
 
'== mise à jour numero de lot avec dernier lot
 
DoCmd.OpenQuery "RQ-Fusion N°etiquette+Lot"
strSql = "UPDATE [TB-TempPrepOF] INNER JOIN [TB-liste_of] ON [TB-TempPrepOF].N°of = [TB-liste_of].of_id SET [TB-liste_of].Edition_etiquette = Yes;"
 
 
Set Dtbase = CurrentDb()
Dtbase.Execute (strSql)
Dtbase.Close
 
 
'== mise a jour du dernier lot sur donnée etiquette
 
DoCmd.OpenQuery "RQ-Dernier lot de l'edition"
DoCmd.OpenQuery "RQ-Mise_a_jour_dernier_lot_article"
DoCmd.OpenQuery "RQ-Ajout dans archivage"
DoCmd.SetWarnings True
 
MsgBox "Génération terminé.", vbInformation
 
End Sub