Bonjour,

dans ce code je crée une requête avec des données externes (Access). J'ai voulu rendre variable la première partie de la condition WHERE. J'ai donc créé une variable cpte qui contient la première partie de la condition WHERE.
Cette variable cpte est de type variant mais lorsque je lance ma macro, j'ai un message d'erreur 13 :
"Incompatibilité de type"
J'ai essayé de transformer ma variable "cpte" en type long mais ça ne fonctionne pas avec "CLng"

Quelqu'un aurait-il une idée?

PS : j'ai mis en rouge le passage que je suppose faux...

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
dim cpte as Variant

cpte = "(DELAIS.EXDCOQY = " & 208131 & ") OR (DELAIS.EXDCOQY = " & 208102 & ") OR (DELAIS.EXDCOQY = " & 208107 & ")"
With ActiveSheet.QueryTables.Add(Connection:= _
    "ODBC;DSN=CLT;DBQ=J:\ACCESS\CLIENTS.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
    , Destination:=Range("A2"))
    .CommandText = Array( _
    "SELECT DELAIS.EXDDTKV, DELAIS.EXDCOQY, DELAIS.EXDCD, DELAIS.EXDHESI, DELAIS.DELAIS" & Chr(13) & "" & Chr(10) & "FROM `J:\BASE_DE_DONNEES_ACCESS\INFOS_CLIENTS`.DELAIS DELAIS" & Chr(13) & "" & Chr(10) & "WHERE " & cpte & " AND (DELAIS.EXDHESI>" & heure_theo & ")" & Chr(13) & "" & Chr(10) & "ORDER BY DELAIS.EXDCD")
    .Name = "Lancer la requête à partir de CLT_test3"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .Refresh BackgroundQuery:=False
End With
Merci de votre aide!