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 :
Merci pour l'aide que vous pourrez m'apporter.
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
Edit : si vous connaissez une solution plus souple, plus légère je suis preneur !
Partager