Bonjour,

Voila j'ai realise un rapport excel executant un certain nombre de requete SQL (via ADO) sur une base SQL Server 2000. Cela fonctionne correctement mais le temps d'execution de la premiere requete est tres tres long.

Voici une partie de mon code, je vous epargne le detail des requete:

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
 
 
Set Cn = New ADODB.Connection
    Cn.Open ConnStr
 
    'Execute 1st query
 
    rs.Open SQLStr1, Cn, adOpenStatic
    ThisWorkbook.Sheets("DCOW").Rows.ClearContents
    With ThisWorkbook.Sheets("DCOW")
        With .Cells(1, 1)
        .CopyFromRecordset rs
        End With
    End With
    rs.Close
 
    'Execute 2nd query
 
    rs.Open SQLStr2, Cn, adOpenStatic
    ThisWorkbook.Sheets("DCOW_TOT").Rows.ClearContents
    With ThisWorkbook.Sheets("DCOW_TOT")
        With .Cells(1, 1)
        .CopyFromRecordset rs
        End With
    End With
    rs.Close
 
      'Execute 3nd query
 
    rs.Open SQLStr3, Cn, adOpenStatic
    ThisWorkbook.Sheets("DCOW_OTBP").Rows.ClearContents
    With ThisWorkbook.Sheets("DCOW_OTBP")
        With .Cells(1, 1)
        .CopyFromRecordset rs
        End With
    End With
 
   ' Tidy up
    rs.Close
    Set rs = Nothing
    Cn.Close
    Set Cn = Nothing
Excel met jusqu'a 5 minutes voir des fois s'arrete (Timeout) pour executer la permiere requete puis ensuite l'enchainement des autres requetes se fait rapidement. Mes 3 requetes sont exactement les memes a une condition pres. Les 3 s'executent a la meme vitesse sous SQL server query analyser. Moins de 20 secondes.

Aussi les requetes sont basees sur la selection d'un champs dans une liste deroulante. Si je lance 2 fois de suite ma macro pour le meme champ de la liste deroulante, les requetes s'execute tres rapidement.

En fait c'est a chaque fois que je selection un nouveau champ et que j'execute le process pour la premiere fois, c'est tres tres long.


Est-ce que ca peut etre lie a ADO? Ou ma facon de l'utiliser?