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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT [No_] AS Code,[Booleen] as Booleen
FROM [BaseDeDonnees_Table] 
WHERE ([Condition1]=2) AND ([Condition2]=0)
Et voici ma macro :

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
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 :
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...