Macros Word VBA - Rechercher, rechercher et remplacer

Recherche de mot VBA

Cet exemple est une simple macro de mots pour trouver le texte « a » :

Sub SimpleFind() Selection.Find.ClearFormatting With Selection.Find .Text = "a" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute End Sub

Trouver et remplacer

Cette macro simple recherchera le mot « leur » et le remplacera par « là » :

Sub SimpleReplace() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "leur" .Replacement.Text = "là" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

Rechercher et remplacer uniquement dans la sélection

Cette macro VBA trouvera et remplacera le texte dans une sélection. Il mettra également en italique le texte remplacé.

Sub ReplaceInSelection() 'remplace le texte JUSTE dans la sélection. en outre, il rend le texte remplacé en italique Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "leur" With .Replacement .Font.Italic = True .Text = "there" End With .Forward = True .Wrap = wdFindStop 'cela empêche Word de continuer jusqu'à la fin du document. Avec Selection.Find.Execute Replace:=wdReplaceAll End Sub

Cette ligne de code empêche VBA de continuer jusqu'à la fin du document Word :

.Wrap = wdFindStop 'cela empêche Word de continuer jusqu'à la fin de la doc

Cette ligne de code indique de remplacer également la mise en forme du texte :

.Format = True 'nous voulons également remplacer le formatage du texte

Rechercher et remplacer uniquement dans la plage

Au lieu de remplacer du texte dans tout le document ou dans une sélection, nous pouvons dire à VBA de rechercher et de remplacer uniquement dans la plage. Dans cet exemple, nous avons défini la plage comme premier paragraphe :

Dim oRange As Range Set oRange = ActiveDocument.Paragraphs(1).Range
Sub ReplaceInRange() 'remplace le texte JUSTE dans la plage [dans cet exemple juste dans le premier paragraphe] Dim oRange As Range Set oRange = ActiveDocument.Paragraphs(1).Range oRange.Find.ClearFormatting oRange.Find.Replacement.ClearFormatting With oRange. Find .Text = "leur" .Replacement.Text = "there" .Forward = True .Wrap = wdFindStop 'cela empêche Word de continuer jusqu'à la fin du document .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With oRange.Find.Execute Replace:=wdReplaceAll End Sub 
wave wave wave wave wave