Voici la suite de la macro qui permet de rechercher la même occurrence d'un style dans un document. Ici à titre d'exemple, la recherche du style "normal" que l'on surligne.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Sub SearchStyle()
Dim strStyle As String
strStyle = "Normal"
Selection.HomeKey Unit:=wdStory
With Selection.Find
.Text = ""
.ClearFormatting
.Style = strStyle
Do While .Execute
Selection.Range.HighlightColorIndex = wdYellow
' Moves the insertion point to the end of a range
' sans cette action, on peut tomber dans une boucle infinie
' si le document contient aussi des tableaux !
Selection.Collapse Direction:=wdCollapseEnd
Loop
End With
End Sub |
Une ligne importante, est la ligne suivante :
Selection.Collapse Direction:=wdCollapseEnd
qui comme indique la documentation Microsoft : "Moves the insertion point to the beginning or end of a range."
Sans cette ligne, la recherche de l'occurrence pourra s'arrêter et boucler indéfiniment dans certain cas, en particulier si votre document contient aussi des tableaux !!!
UPDATE
La solution ci-dessus ne fonctionne pas lorsque la fin du document est rencontrée, à nouveau une boucle infinie !
Voici une autre solution qui semble fonctionner dans tous les cas :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Sub SearchStyle2()
Dim strStyle As String
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
.Text = ""
.Style = "Normal"
Do While .Execute
With .Parent
If .End = ActiveDocument.Content.End Then
Selection.Range.HighlightColorIndex = wdYellow
Exit Do
Else
Selection.Range.HighlightColorIndex = wdYellow
.Move Unit:=wdParagraph, Count:=1
End If
End With
Loop
End With
End Sub |
Auriez-vous d'autres pistes ou des améliorations à apporter à ce bout de code ?
Partager