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 :
Et voici ma macro :
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)
L'erreur indiqué est :
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
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...
Partager