Voici une macro permettant de remplacer un mot par un autre (ici "premier texte" remplacé par "deuxième texte") dans une série de documents d’un meme dossier.
Public Sub RemplacementGlobal()
Dim MonDocument
Dim MonRepertoire
Dim NbDocuments As Integer
MonRepertoire = Options.DefaultFilePath(wdDocumentsPath)
'Attention sous NT, il faut rajouter ces lignes qui comptent les fichiers sinon on ouvre et transforme en boucle :
MonDocument = Dir(MonRepertoire & "*.doc")
While MonDocument <> ""
NbDocuments = NbDocuments + 1
MonDocument = Dir
Wend
'fin du comptage sous NT
MonDocument = Dir(MonRepertoire & "*.doc")
i = 1
While MonDocument <> "" And i <= NbDocuments
i = i + 1
Documents.Open (MonRepertoire & "" & MonDocument)
ActiveWindow.View.ShowFieldCodes = True
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Set myRange = ActiveDocument.Content
With myRange.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "premier texte"
.Replacement.Text = "deuxième texte"
.Execute Replace:=wdReplaceAll ' peut être la raison
End With
Selection.Fields.Update
Documents(1).Close wdSaveChanges
MonDocument = Dir
Wend
End Sub
NB : Si le texte à remplacer se trouve dans les pieds de page, à la place d'un simple
Set myRange = ActiveDocument.Content
Il faudra mettre :
For each S in ActiveDocument.Sections
For each F in S.Footers
Set myRange = F.Range
'----ici les opérations de recherche-remplacement
Next F
Next