Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA récupérer le contenu d'un fichier RTF

2 réponses
Avatar
Alpha
Bonjour,
J'ai un pb sur une macro excel. J'ai dans ma colonne A le nom de plusieurs
fichier rtf donc je souhaite récupérer le contenu (qques mots par fichier)
pour le mettre dans la cellule de la colonne B. Les fichiers rtf sont dans
le répertoire "C:\test". Le code que j'utilise est celui-ci:
Sub recuprtfvaleur()
Dim Doc As Object
Range("A1").Select
Do While ActiveCell.Value <> ""
nomfic = ActiveCell.Value
Set Doc = GetObject("C:\test\" & nomfic & "")
Doc.Range.Copy
ActiveCell.offset(0, 1).Select
ActiveSheet.Paste
ActiveCell.offset(1, -1).Select
Doc.Application.Quit
Set Doc = Nothing
Loop
End Sub

La macro fonctionne cependant arrivé au bout d'une centaine de fichier la
mémoire sature. Effectivement si je fais CTRL + ALT + SUPPR, dans processus
je vois winword.exe ouvert 100 fois. Donc bien que word ne soit plus ouvert,
il l'est plein de fois en tache de fond. Comme pour chaque word ouvert il
consomme 14 Mo de mémoire, bah j'ai un gros PB...
Comment faire pour que chaque processus word soit correctement fermé, afin
d'éviter se pb de mémoire. Merci de votre aide !!!!

2 réponses

Avatar
Gerald
salut,
J'utiliserais une autre méthode à la place, pourquoi
ouvrir Word
ouvrir le fichier rtf
copier le contenu du document
coller ce texte dans une cellule
fermer le document
?
Dim FSO As New Object
Dim Fichier As Object ' ( TextStream )
Dim leNomDuFichier As String

Set FSO = createObject ("Scripting.FileSystemObject ")

Do while ... (tant que la liste de tes fichiers n'est pas vide)
leNomDuFichier = ici, recupere le nom de ton fichier
If FSO.FileExists(leNomDuFichier) Then
Fichier = FSO.OpenTextFile(leNomDuFichier, ForReading)
texte = Fichier.ReadAll
maCelluleExcel = texte
Fichier.Close
End If
Loop
Set Fichier = Nothing
Set FSO = Nothing

Voila, pas de processus Word ouvert

J'espere t'avoir renseigné

Gerald
Avatar
Alpha
Merci pour ta réponse claire et précise. Comme le but finale était de
changer le nom de fichier rtf, je suis finalement passé par un script vbs...
Il ne me reste plus que a trouver comment récupérer en VBS la longeur d'un
fichier rtf !
"Gerald" a écrit dans le message de news:

salut,
J'utiliserais une autre méthode à la place, pourquoi
ouvrir Word
ouvrir le fichier rtf
copier le contenu du document
coller ce texte dans une cellule
fermer le document
?
Dim FSO As New Object
Dim Fichier As Object ' ( TextStream )
Dim leNomDuFichier As String

Set FSO = createObject ("Scripting.FileSystemObject ")

Do while ... (tant que la liste de tes fichiers n'est pas vide)
leNomDuFichier = ici, recupere le nom de ton fichier
If FSO.FileExists(leNomDuFichier) Then
Fichier = FSO.OpenTextFile(leNomDuFichier, ForReading)
texte = Fichier.ReadAll
maCelluleExcel = texte
Fichier.Close
End If
Loop
Set Fichier = Nothing
Set FSO = Nothing

Voila, pas de processus Word ouvert

J'espere t'avoir renseigné

Gerald