Bonjour,

Je n'arrive pas a trouver la réponse sur le net ni sur ce forum et j'aurai donc besoin de votre aide SVP

J'ai une macro pour mettre a jour des informations sur des articles dans une base oracle.

N'étant pas pro des macro j'utilise sans doute des méthodes qui feront hurler plus d'un puriste mais bon ça fonctionne.

le problème?: justement .... ça fonctionne!!

Je m'explique: dans un tableau les utilisateurs remplissent une liste d'article avec certaines informations afin de les mettre jour dans notre base oracle. Ce que je voudrai faire c'est pour toute la liste de requêtes de mise a jour tester tout d'abord ces requêtes et si l'update entraîne une violation de nos paramètres annuler l'update.

voici une partie du code

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
 
 
Sub prix()
 
 
Dim oConn As ADODB.Connection
Dim Rst As ADODB.Recordset
 
'Création de l'objet connexion
    Set oConn = New ADODB.Connection
    oConn.ConnectionString = gstrConnGMAO
'Ouverture de la connexion
    oConn.Open
    oConn.CommandTimeout = 0
    If Err.Number <> 0 Then MsgBox "Problème de connexion": Exit Sub
 
[...suite macro]
 
For i = Ligne To Fin
    For j = 16 To 27
        Requete = Cells(i, j).Value
        If Requete <> "" Then
            Set Rst = oConn.Execute(Requete, MAJ)
                If MAJ > 1 Then
                    nb_error = True
                    Open (chemin & "\" & fichier & extension) For Append As #2
                        Print #2, "Ligne " & i & " PDR: " & Article & " la Maj concerne " & MAJ & "couple PDR-Fournisseur: ERREUR (une Maj ne peut concerner que 1 couple PDR fournisseur)"
                    Close #2
                    Set Rst = oConn.Execute("rollback")
                ElseIf MAJ = 0 Then
                    nb_error = True
                    Open (chemin & "\" & fichier & extension) For Append As #2
                        Print #2, "Ligne " & i & " PDR: " & Article & " aucune mise a jour: ERREUR sur le couple  PDR-Fournisseur: " & Fournisseur & " ne fournit pas cette PDR"
                    Close #2
                    Set Rst = oConn.Execute("rollback")
                ElseIf Err.Number <> 0 Then
                    nb_error = True
                    Open (chemin & "\" & fichier & extension) For Append As #2
                        Print #2, "Erreur SQL dans la requete " & Err.Description
                    Close #2
                    Set Rst = oConn.Execute("rollback")
                    Err.Number = 0
                End If
 
 
        End If
 
    Next
 
Next
 
[suite  macro]
 
end sub
En testant ma macro je me suis rendu compte que dès que je faisais un update le commit est induit ce qui ne m'arrange pas.

Y aurait il un moyen en vba de "tester" les updates, et si cela ne convient pas annuler ces requêtes afin d'avertir l'utilisateurs qu'il fait une ou plusieurs erreurs.

J'espère avoir été suffisamment clair

Merci par avance