Erreur d'éxécution 1004 et oQt.Refresh BackgroundQuery
Bonjour,
Je viens vers vous car novice en VBA/Excel et totalement perdu sur un code qui n'est pas de moi et qui jusque là fonctionnait pour plusieurs requêtes SQL complexes.
Le principe est le suivant :
- Création d'un fichier SQL avec la requête souhaitée qui amène un certain nombre de résultats à partir d'un logiciel/d'une interface utilisée en local par une société.
- Avec la macro, exécution de la requête puis enregistrement des résultats dans un fichier texte créé.
- Le fichier texte sera traité pour remplir automatiquement une autre base de données en ligne pour un site internet.
Voici mon code SQL très très simple dans un fichier test.sql, qui retourne bien de bons résultats sur mon interface/base de données :
Code:
1 2 3
| SELECT [No_] AS Code,[Booleen] as Booleen
FROM [BaseDeDonnees_Table]
WHERE ([Condition1]=2) AND ([Condition2]=0) |
Et voici ma macro :
Code:
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
| Sub export()
'
' Extraction des tables de la base de donnees
Dim intFic As Integer
Dim strLigne As String
chemin = "D:\Dossier_de_mise_a_jour\"
Sheets("Feuil1").Select
Range("A1").CurrentRegion.Delete
tables = Array("test")
conn = "ODBC;DSN=SQL Native Client vers base de donnees;UID=%user%;APP=Microsoft Office 2003;Trusted Connection=Yes"
For t = 0 To UBound(nav_tables)
nom = tables(t)
'lecture du fichier et creation de la requete sql
contenu = ""
intFic = FreeFile
Open chemin & nom & ".sql" For Input As intFic
While Not EOF(intFic)
Line Input #intFic, strLigne
contenu = contenu & strLigne
Wend
Close intFic
SQLstring = contenu
Set oQt = ActiveSheet.QueryTables.Add(Connection:=conn, Destination:=Range("A1"), Sql:=SQLstring)
oQt.Refresh BackgroundQuery:=False
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=chemin & nom & ".txt", FileFormat:=xlText, CreateBackup:=False
ActiveSheet.Range("A1").CurrentRegion.Delete
Next t
End Sub |
L'erreur indiqué est :
Citation:
Erreur d'éxécution '1004': Erreur de syntaxe SQL.
au niveau de :
oQt.Refresh BackgroundQuery:=False
Merci d'avance, j'espère ne pas m'être trompé de section et avoir été clair...