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