Bonjour,
Après plusieurs recherches sur des forums, je n'ai toujours pas trouvé comment récupérer des mots d'un fichier Word (ou même Excel) pour les écrire dans une case bien précise dans Excel.
Je m'explique : Mon but est de répertorier tous les dossiers/fichiers enregistrés dans le réseau informatique de l'usine dans laquelle je travaille.
De ce fait, j'organise une page Excel comme le tableau ci-joint :
Nom du sous-dossier/fichier | Type du sous-dossier/fichier | Mots-clés Dossier1 | Dossier de fichiers | ? Fichier1.xlsx | Feuille de calcul Microsoft Excel | ? Fichier2.exe | Application | ? Fichier3.doc | Document Microsoft Word 97 - 2003 | ? Fichier.ppt | Présentation Microsoft PowerPoint 97-2003 | ? Dossier2 | Dossier de fichiers | ? Fichier1.xlsx | Feuille de calcul Microsoft Excel | ? Fichier2.exe | Application | ? Fichier3.doc | Document Microsoft Word 97 - 2003 | ? Fichier.txt | Document texte | ? ... | ... | ? ... | ... | ? ... | ... | ?
Grâce à ma macro « Exécution », j’arrive à récupérer tous mes fichiers et dossiers dans le tableau de B5:Bfin pour les noms et de C5:Cfin pour les types du fichier. (En A1 j'ai mon dossier parent en path [H:\.......])
Sub Exécution() Dim path As String Dim myaddress As String Dim myRange As Range myaddress = "B4" Set myRange = Range(myaddress) 'Initialisation du chemin path = Range("A1").Value Call Lister_le_contenu(path, myRange) Range("B4:D4").Select Selection.AutoFilter End Sub
Avec la macro intermédiaire Lister_le_contenu :
Sub Lister_le_contenu(p_Path As String, ByRef p_Range As Range) Dim fso As New FileSystemObject Dim f As Folder Dim sf As Folder Dim myfile As File Dim myRange As Range Set myRange = p_Range 'Réference à l’objet du dossier Set f = fso.GetFolder(p_Path) 'Relever les sous-dossiers For Each sf In f.SubFolders myRange.Offset(1, 1).Value = sf.Name myRange.Offset(1, 2).Value = sf.Type Set myRange = myRange.Offset(1, 0) Next 'Relever les fichiers For Each myfile In f.Files myRange.Offset(1, 1).Value = myfile.Name myRange.Offset(1, 2).Value = myfile.Type myfile.Name Set myRange = myRange.Offset(1, 0) Call Lister_le_contenu(sf.path, myRange) Next Set p_Range = myRange End Sub
Cependant pour les mots-clés, je ne sais pas comment m’y prendre pour relever un certain texte.
Mes fichiers Word sont disposés comme ceci :
1ère ligne : « Titre du document »
2ème ligne : « Mots-clés : abc, def, ghi, … »
Mes fichiers Excel sont disposés comme ceci :
A1 : « Titre du document »
A2 : « Mots-clés : abc, def, ghi, … »
J’ai déjà réussi à récupérer les mots clés dans des fichiers texte avec la macro :
(dans mon cas, j’ai écris ma ligne « Mots-clés : abc, def, ghi, … » sur la ligne 7).
Sub Mots_clés_fichier_txt() Dim ifile As Integer ifile = FreeFile Dim x As Long Dim Data As String Open "H:\test.txt" For Input As #ifile x = 1 Do While Not EOF(1) Line Input #ifile, Data 'Récupère ta ligne If x = 7 Then Cells(1, 1) = Data 'Inscrit Data dans la 1ere case de ton classeur x = x + 1 Loop Close #ifile End Sub
Par contre, cette macro me fait récupérer ma valeur de mots-clés dans la case A1 d’Excel, et que pour un seul fichier. Or, je veux que ça se mette dans ma colonne D:D (D6 pour le Fichier1.xlsx, par exemple).
J’avais pensé à ouvrir, en macro, le fichier Word, le copier/coller en txt, copier la ligne avec les mots-clés, et supprimer ce fichier txt. Mais je n’y arrive pas du tout.
Merci de votre aide.
Bien à vous,
nicolo9.