1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| Option Explicit
'--- référence nécessaire: Microsoft Word xx.x Object Library
Sub Recherche()
Dim kR As Long '--- n° ligne du tableau
Dim aFamille() As String '--- les noms des familles (max 10)
Dim aMot() As String '--- les mots à chercher (max 10)
Dim sDossier As String '--- dossier contenant les documents à traiter
Dim sDossierFamille As String
Dim sFichier As String
Dim i As Long, j As Long, n As Long
Dim WordApp As Object, WordDoc As Object
'---
kR = 9
aFamille = Split(Range("F9"), ";")
aMot = Split(Range("G9"), ";")
sDossier = ThisWorkbook.Path '--- à adapter
Set WordApp = CreateObject("Word.Application")
'---
For i = 0 To UBound(aFamille)
Range("F" & kR) = Trim(aFamille(i))
If Range("F" & kR) <> "" Then
sDossierFamille = sDossier & "\" '--- & aFamille(i) & "\" '--- à adapter
sFichier = Dir(sDossierFamille & "*.docx")
While sFichier <> ""
Range("H" & kR) = sFichier
Set WordDoc = WordApp.Documents.Open(Filename:=sDossierFamille & sFichier, ReadOnly:=True)
For j = 0 To UBound(aMot)
n = 0
WordApp.Selection.HomeKey Unit:=wdStory '--- retourne au début du document
With WordDoc.Content.Find
.Text = Trim(aMot(j)) '--- supprime les espaces inutiles en début et fin
If .Text <> "" Then
.Forward = True
.MatchWholeWord = True '--- à vérifier
While .Execute
If .Found Then
n = n + 1
Range("I" & kR) = Range("I" & kR) & .Text & ": page " & WordApp.Selection.Information(1) & vbLf
End If
Wend
'Range("I" & kR) = Range("I" & kR) & .Text & ":" & n & "; "
End If
End With
Next j
WordDoc.Close
sFichier = Dir
kR = kR + 1
Wend
End If
Next i
WordApp.Quit
Set WordDoc = Nothing
Set WordApp = Nothing
End Sub |
Partager