Rone22171
Messages postés4Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 1 novembre 2010
-
1 nov. 2010 à 11:08
Rone22171
Messages postés4Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 1 novembre 2010
-
1 nov. 2010 à 11:11
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.
Rone22171
Messages postés4Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 1 novembre 2010 1 nov. 2010 à 11:11
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