XL 2010 Syntaxe pour import données ACCESS

Cekankonvaou

XLDnaute Junior
Bonjour à tous,

Je suis en train de reprendre des macros qui ont été développées par un collègue. Ces macros permettent de gérer des échanges entre une interface Excel et une base access.

Ces macros étaient rédigées avec les noms des tables, requètes...etc en dur.
Pour tout un tas de raisons (et en particulier celle de vouloir faire quelque chose de plus propre), je suis en train de réécrire la partie import des données en mettant les noms de la base et de la requête de sortie en variables.

Mon import de données est basé sur au minimum 2 critères (XXX et YYY1) mais peut l'être également sur 3 critères (XXX, YYY1, YYY2).

Sur 2 critères, cela fonctionne parfaitement.
Sur 3 critères, j'ai un message d'erreur : "Erreur d'exécution '13' : Incompatibilité de type"

Voici mon bout de code :

VB:
If myYYY2 = "" Then
myselection = "(" & myReqSortieINT & ".XXX='" & mySelectedXXX & "') AND (" & myReqSortieINT & ".YYY1='" & mySelectedYYY1 & "') "
Else
myselection = "(" & myReqSortieINT & ".XXX='" & mySelectedXXX & "') AND (" & myReqSortieINT & ".YYY1='" & mySelectedYYY1 & "') AND (" & myReqSortieINT & ".YYY2='" & mySelectedYYY2 & "') "
'myselection = "(" & myReqSortieINT & ".XXX='" & mySelectedXXX & "') AND (" & myReqSortieINT & ".YYY2='" & mySelectedYYY2 & "')  "

    End If

  

With ActiveWorkbook.Connections("Table").ODBCConnection
.BackgroundQuery = False
.CommandText = Array( _
"SELECT * " _
, _
"" & Chr(13) & "" & Chr(10) & "FROM `" & myBDD & "`." & myReqSortieINT & Chr(13) & "" & Chr(10) & "WHERE (" & myselection & ")" _
)
.CommandType = xlCmdSql
.Connection = _
"ODBC;DSN=" & myODBC & ";DBQ=" & myBDD & ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
ActiveWorkbook.Connections("Table").Refresh

Si je fais une sélection avec les critères XXX et YYY2, ça fonctionne parfaitement.
Je suppose qu'il y a un problème de syntaxe mais je n'arrive pas à voir où.

Quelqu'un aurait il une idée?

Bertrand
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

A mon avis c'est peut-être là :

.CommandText = Array( _
"SELECT * " _
, _ <<< ICI
"" & Chr(13) & "" & Chr(10) & "FROM `" & myBDD & "`." & myReqSortieINT & Chr(13) & "" & Chr(10) & "WHERE (" & myselection & ")" _
)

1 - La virgule est en trop, elle crée une deuxième valeur pour le Array, la première étant "SELECT *"
2 - Il manque sans doute une espace avant le WHERE
3 - Ne vous encombrez pas de CHR(13) et CHR(10) qui ne servent à rien

Quelque chose comme :
.CommandText = Array( _
"SELECT * FROM `" & myBDD & "`." & myReqSortieINT & " WHERE (" & myselection & ");" _
)


Ou comme ça :

.CommandText = "SELECT * FROM `" & myBDD & "`." & myReqSortieINT & " WHERE (" & myselection & ");"


Il est toujours préférable d'ajouter un point-virgule (';') en fin de requête


Cordialement
 

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA