jbballeyguier
XLDnaute Nouveau
Bonjour,
j'ai une macro qui me sert à importer des données depuis un tableau word vers une feuille excel (oui ça peut paraître bizarre mais bon...). J'ai environ 500 documents word à ouvrir pour reporter les données vers ma feuille excel.
La macro marche pas trop mal, mais au bout de la 130e fiche, il m'envoie une erreur d'exécution 7 me disant que la mémoire est insuffisante.
Je me demandais s'il y avait un moyen d'optimiser ma macro pour qu'elle s'exécute jusqu'au bout.
J'ai pensé purger des variables (MaVariable = Nothing), mais je ne sais pas si ce sera d'une grande utilité.
Par ailleurs, lorsque je récupère les données dans les cellules Excel, il me remplace certains espaces par des petits carrés blancs : peut-être un problème d'encodage... Y a t'il un moyen d'éviter cette corruption ?
Voici la macro en question :
Merci d'avance pour votre aide
j'ai une macro qui me sert à importer des données depuis un tableau word vers une feuille excel (oui ça peut paraître bizarre mais bon...). J'ai environ 500 documents word à ouvrir pour reporter les données vers ma feuille excel.
La macro marche pas trop mal, mais au bout de la 130e fiche, il m'envoie une erreur d'exécution 7 me disant que la mémoire est insuffisante.
Je me demandais s'il y avait un moyen d'optimiser ma macro pour qu'elle s'exécute jusqu'au bout.
J'ai pensé purger des variables (MaVariable = Nothing), mais je ne sais pas si ce sera d'une grande utilité.
Par ailleurs, lorsque je récupère les données dans les cellules Excel, il me remplace certains espaces par des petits carrés blancs : peut-être un problème d'encodage... Y a t'il un moyen d'éviter cette corruption ?
Voici la macro en question :
Code:
Sub fiches()
Dim ObjWord As New Word.Application
Set ObjWord = CreateObject("Word.Application")
Dim PardeRef, TitdeRef, Prealable, Cas, ResAttendu As String
h = 2
ThisWorkbook.Sheets("racines").Activate
For I = 2 To 600
If Cells(I, 1) <> "" Then
Cells(I, 1).Select
Fiche = ActiveCell.Value
Application.DisplayAlerts = False
ObjWord.ShowMe
ObjWord.Visible = True
ObjWord.Documents.Open Filename:=Fiche
Fiche = CStr(Fiche)
Fiche = Mid(Fiche, InStrRev(Fiche, "\") + 1)
ObjWord.Documents(Fiche).Activate
Set MaFiche = ObjWord.ActiveDocument
PardeRef = MaFiche.Tables(1).Cell(2, 2).Range.Text
TitdeRef = MaFiche.Tables(1).Cell(3, 2).Range.Text
Prealable = MaFiche.Tables(4).Cell(2, 2).Range.Text
Cas = MaFiche.Tables(4).Cell(3, 2).Range.Text
ResAttendu = MaFiche.Tables(4).Cell(4, 2).Range.Text
ThisWorkbook.Sheets("Table_cdp").Cells(h, 1).Value = PardeRef
ThisWorkbook.Sheets("Table_cdp").Cells(h, 2).Value = TitdeRef
ThisWorkbook.Sheets("Table_cdp").Cells(h, 3).Value = Prealable
ThisWorkbook.Sheets("Table_cdp").Cells(h, 4).Value = Cas
ThisWorkbook.Sheets("Table_cdp").Cells(h, 5).Value = ResAttendu
MaFiche.Close
h = h + 1
End If
Next
End Sub
Merci d'avance pour votre aide