Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1161 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Libération de la mémoire sous Excel 2002

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Libération de la mémoire sous Excel 2002

n°1871998
jaymzwise
Posté le 10-04-2009 à 14:15:25  profilanswer
 

Salut,
 
 
Je suis en train de développer un outil sous Excel et je rencontre quelques problèmes au niveau de l'occupation de la mémoire.
 
Dans mon code VBA, je récupère un range que j'insère dans un tableau.
Je fais un traitement sur ce tableau et ensuite je le recolle sur ma feuille Excel.
Le problème est qu'une fois le traitement terminé, je ne parviens pas à libérer la mémoire occupée pendant le traitement.
 
Dans le gestionnaire de tâches, je vois bien qu'Excel occupe de plus en plus de mémoire pendant l'opération mais pas moyen de la libérer.
L'outil Excel est bien évidemment de plus en plus lent et au bout d'un moment Excel plante.
 
Voici la partie du code qui pose problème :

Code :
  1. Tableau = Range(Cells(DepartJoursRow, DepartAgentsCol + 1), Cells(LigneDernierAgent, ColonneLastDate))
  2. TabNbLigne = UBound(Tableau, 1)
  3. TabNbCol = UBound(Tableau, 2)
  4. For i = 1 To TabNbLigne
  5.     If Len(Tableau(i, 1)) <> 0 Then
  6.         Agent = Tableau(i, 1)
  7.         For j = 2 To TabNbCol
  8.             If Len(Tableau(1, j)) = 0 And Len(Tableau(1, j - 1)) = 0 Then
  9.                 Exit For
  10.             End If
  11.             If IsDate(Tableau(1, j)) Then
  12.                 Tableau(1, j) = Format(Tableau(1, j), "dd/mm/yyyy" )
  13.                 Dte = Tableau(1, j)
  14.                 NumJour = Weekday(Dte, vbMonday)
  15.                 ChampM = "HOR_" & NumJour & "M"
  16.                 ChampA = "HOR_" & NumJour & "A"
  17.                
  18.                 Sql = "SELECT * FROM [T_HPPendantPeriode] WHERE HOR_AGENT='" & Agent & "' AND #" & Format(Dte, "mm/dd/yyyy" ) & "#>=HOR_DATEDEBUT;"
  19.                 Set rsPendant = db.OpenRecordset(Sql, DAO.dbOpenSnapshot)
  20.                
  21.                 If rsPendant.RecordCount = 0 Then
  22.                
  23.                     Sql = "SELECT * FROM [T_HPAvantPeriode] WHERE HOR_AGENT='" & Agent & "';"
  24.                     Set rsAvant = db.OpenRecordset(Sql, DAO.dbOpenSnapshot)
  25.                    
  26.                     If rsAvant.RecordCount <> 0 Then
  27.                         If IsNumeric(rsAvant(ChampM)) And IsNumeric(rsAvant(ChampA)) Then
  28.                             Tableau(i, j) = CInt(rsAvant(ChampM)) + CInt(rsAvant(ChampA))
  29.                         End If
  30.                     End If
  31.                    
  32.                     rsAvant.Close
  33.                     Set rsAvant = Nothing
  34.                
  35.                 End If
  36.                
  37.                 rsPendant.Close
  38.                 Set rsPendant = Nothing
  39. '***********************************************
  40.                
  41.             End If
  42.         Next j
  43.     End If
  44. Next i
  45. Range(Cells(DepartJoursRow, DepartAgentsCol + 1), Cells(LigneDernierAgent, ColonneLastDate)) = Tableau
  46. Erase Tableau()


 
Comment pourrais-je faire pour qu'Excel libère correctement la mémoire ?


Message édité par jaymzwise le 10-04-2009 à 14:16:11
mood
Publicité
Posté le 10-04-2009 à 14:15:25  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Libération de la mémoire sous Excel 2002

 

Sujets relatifs
Export xls ou csv dépassant la limite des lignes ExcelCréer un formulaire PHP qui renvoie les données en Excel
Problème lors de l'exécution d'une Macro ExcelGestion de fichiers Excel/VB
Création macro pour un fichier Excel de 600p et 13000 lignes[Excel & Access] Optimiser la communication entre les deux
Piloter port parallèle avec Excel VBA[Resolu] Gestion de la mémoire
[VBA EXCEL] Récupérer son propre email Outlook dans une variable[Résolu] Créer un fichier tableur en PHP (pas EXCEL)
Plus de sujets relatifs à : Libération de la mémoire sous Excel 2002


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR