Bonjour, voilà j'ai repris le code d'une application Excel qui fonctionne assez bien mis à part que plus je lance la méthode utilisé pour exécuter les requête plus Excel devient instable. Au point où il n'arrête pas de me balancer des messages comme quoi il n'a pas assez de ressources disponibles ou qu'il n'a pas assez de mémoire pour afficher un entier...

Je ferme Excel et il continu de me polluer l'existence : il reste dans la liste des tâches (gestionnaire des tâches), me prend de 150 à 200 Mo de Ram, et toute la puissance de mon processeur (99%)...

De là je me demandais s'il n'y avait pas quelque chose dans la méthode qui lance les requêtes qui reste en mémoire à chaque fois que je la lance !

Voilà le code :
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
Sub ConnectListe()
 
    Dim Chemin As String
    Dim Fichier As String
    Dim NomPilote As String
    Dim ChaineConnection As String
    Dim tabRequete() As Variant
    Dim i As Integer
 
    tabRequete = Array("req1", _
                        "req2", _
                        "req3")
 
    Chemin = ThisWorkbook.Path
    Fichier = ThisWorkbook.Name
    NomPilote = fRequete.Range("znRequetePilote")
 
    ChaineConnection = "ODBC;DSN=" & NomPilote & ";DBQ=" & Chemin & "\" & Fichier & ";DefaultDir=" & Chemin & ";DriverId=790;MaxBufferSize=2048;PageTimeout=5;"
 
    For i = LBound(tabRequete) To UBound(tabRequete)
        fRequete.Range(tabRequete(i)).QueryTable.Connection = ChaineConnection
        fRequete.Range(tabRequete(i)).QueryTable.CommandText = fRequete.Range(tabRequete(i)).Cells(1, 1).Offset(-2, 0)
        fRequete.Range(tabRequete(i)).QueryTable.Refresh
    Next i
 
End Sub
Merci pour l'aide que vous pourrez m'apporter.

Edit : si vous connaissez une solution plus souple, plus légère je suis preneur !