Problème mémoire avec macro excel

Signaler
Messages postés
4
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
1 novembre 2010
-
Messages postés
4
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
1 novembre 2010
-
Bonjour,

J'ai fait une macro excel qui permet de copier des graph d'un excel vers un fichier word.
Ce que je constate c'est que la mémoire cache (?) augmente et sature au bout d'un moment.
J'ai mis des points d'arret et cela viendrait de la fonction Sheets(sheet.Name).Activate c'est à dire qu'au moment où je sélectionne la feuille contenant le graph, la mémoire augmente et n'est jamais vidée du coup elle sature.

Quelqu'un pourrait me dire quoi faire ?

Merci

1 réponse

Messages postés
4
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
1 novembre 2010

voici ce que je fais si cela peut aider :

Option Explicit
Dim fichier As String
Dim MyPath As String
Dim sheet As Object
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Declare Function OpenClipboard Lib "user32" _
(ByVal hwnd As Long) As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Declare Function CloseClipboard Lib "user32" () As Long
Dim Cht As Chart

Sub Vider_Presse_Papier()
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub

Sub Open_file()
MyPath = ActiveWorkbook.path
ChDir MyPath
fichier = Application.GetOpenFilename
Workbooks.Open Filename:=fichier
OpenWordDoc
End Sub

Sub OpenWordDoc()
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then 'Word isn't already running
Set wdApp = CreateObject("Word.Application")
End If
On Error GoTo 0

Set wdDoc = wdApp.Documents.Open(MyPath & "\Extract.docx")

wdApp.Visible = True
Application.DisplayAlerts = False
End Sub

Sub traitement()
For Each sheet In Charts
Sheets(sheet.Name).Select ' LIGNE QUI FAIT AUGMENTER LA MEMOIRE CACHE
DoEvents
'ActiveChart.ChartArea.Copy
Set Cht = ActiveChart
Cht.CopyPicture
DoEvents
'Coller la plage dans Word
wdApp.Selection.PasteSpecial Link:=False, DataType:=15, Placement:=wdInLine, _
DisplayAsIcon:=False
DoEvents
Vider_Presse_Papier
DoEvents
Application.CutCopyMode = False
DoEvents
Set ApplicationExcel = Nothing
DoEvents
Set sheet = Nothing
DoEvents
Next sheet
End Sub