Bonjour à tous les lecteurs!

Présentation du projet: Logiciel de gestion de magasin d'outillage
Tables concernées: OUTILS, CONSOMMATION

Je dispose d'un formulaire de consommations dans lequel je rentre plusieurs données (référence d'outil, nuance d'outil, référence de la machine qui consomme, date de consommation, quantité consommée, prix final de consommation). Sur ce formulaire, il y a un bouton "insérer" afin d'enregistrer la consommation.
=> Ce bouton a pour but: Insérer la consommation rentrée dans la table CONSOMMATION et baisser la quantité de stock d'une X quantité rentrée dans la table OUTILS pour l'outil concerné.

=> Problème rencontré: Tout se passe à merveille au début, mais (un gros mais lol) le formulaire reste bloqué sur l'enregistrement qui vient d'être inséré! Si un utilisateur veut réinsérer une seconde consommation bah...il doit fermer le formulaire et le rouvrir... (pas top...)

Code VBA:

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
Private Sub bt_insert_Click()
    Dim code_conso As String
    Dim ref_outil As String
    Dim nuance As String
    Dim ref_machine As String
    Dim qte As Integer
    Dim prixFinal As Double
    Dim sDate As Date
    Dim test_stock As Long
    Dim test_mini As Long
    Dim req As String
    Dim req_insert As String
    Dim req_update As String
    Dim bdd As Database
    Dim rs As Recordset
    Dim rs_insert As DAO.Recordset
    Dim rs_update As DAO.Recordset
    Dim dbs As Database
 
    On Error GoTo Err_bt_insert_Click
 
    'Vérification pour éviter le NULL
    If ((IsNull(Me.qte)) Or (IsNull(Me.ref_outil)) Or (IsNull(Me.nuance)) Or (IsNull(Me.ref_machine))) Then
        MsgBox "Veuillez remplir tout les champs."
        Exit Sub
    Else
        'Test pour assurer un calcul du prix final
        If (IsNull(Me.txt_prixFinal)) Then
            MsgBox "Veuillez calculer le prix final."
            Exit Sub
        Else
            'Affection des valeurs aux variables
            '(code_conso est auto-incrémenté)
            code_conso = Me.code_conso.Value
            ref_outil = Me.ref_outil.Value
            nuance = Me.nuance.Value
            ref_machine = Me.ref_machine.Value
            qte = Me.qte.Value
            prixFinal = Me.txt_prixFinal.Value
            sDate = Me.sDate.Value
 
            'Récupération des données de stock de la table OUTILS
            req = "SELECT qte_stock, stockMini "
            req = req & "FROM OUTILS "
            req = req & "WHERE ref_outil = '" & ref_outil & "' "
            req = req & "AND nuance = '" & nuance & "';"
 
            Set bdd = CurrentDb
            Set rs = bdd.OpenRecordset(req)
 
            'Affection des valeurs aux variables
            test_mini = rs!stockMini
            test_stock = rs!qte_stock
 
            'Test pour ne pas avoir un stock negatif
            If (0 > (test_stock - qte)) Then
                MsgBox "Opération impossible, vous n'avez plus assez de stock!", vbOKOnly
                Exit Sub
            Else
                'Test pour prévenir l'user que le stock descend sous son seuil minimal
                If (test_mini > (test_stock - qte)) Then
                    If (MsgBox("Attention vous depassez le seuil de stock minimal! Voulez-vous continuer?", vbYesCancel) = vbCancel) Then
                        Exit Sub
                    End If
                Else
                    'Requêtes SQL
                    req_insert = "INSERT INTO CONSOMMATION (code_conso, ref_outil, nuance, ref_machine, qte, prixFinal, sDate) "
                    req_insert = req_insert & "VALUES ('" & code_conso & "', '" & ref_outil & "', '" & nuance & "', '" & ref_machine & "', " & qte & ", " & prixFinal & ", #" & sDate & "#);"
 
                    req_update = "UPDATE OUTILS "
                    req_update = req_update & "SET qte_stock = qte_stock - " & qte & " "
                    req_update = req_update & "WHERE ref_outil = '" & ref_outil & "' "
                    req_update = req_update & "AND nuance = '" & nuance & "';"
 
                    'Initialisation et ouverture de la BDD
                    Set dbs = CurrentDb
                    dbs.Execute req_insert, dbFailOnError
                    dbs.Execute req_update, dbFailOnError
 
                    'Rachaîchissement de la liste qui affiche la table CONSOMMATION
                    Me.lst_conso.Requery
 
                    'Activation du prochain enregistrement
                    DoCmd.GoToRecord , , acNewRec
                End If
            End If
        End If
    End If
 
Exit_bt_insert_Click:
    Exit Sub
 
Err_bt_insert_Click:
    MsgBox Err.description
    Resume Exit_bt_insert_Click
 
End Sub
Merci de m'aider a régler ce problème qui est "majeur" pour mon projet.