OVH Cloud OVH Cloud

parcourir le document par un FIND

11 réponses
Avatar
jean-paul.bataille
Bonjour,

Plutot que parcourir mon document paragraphe par paragraphe,
pour gagner du temps,
il me semble pr=E9f=E9rable de proc=E9der au moyen d'un "FIND",

Voici le code qui tourne :

Sub Formater_NomEtDate()
'PASSER LES NOMS D'OBJETS EN "Titre 2"
'PASSE LES PARAGRAPHES CONTENANT UNE CHAINE REP=C9RE EN STYLE
PERSONNALIS=C9

Dim rng As Range
Dim parag As Paragraph

Set rng =3D ActiveDocument.Range

With rng.Find
.Text =3D "FindMe"
.Replacement.Text =3D "\&"

If .Execute Then
Set Para =3D rng.Paragraphs(1)
If Not (Para Is Nothing) Then
Set rng =3D Para.Range
rng.Style =3D "UserStyle_1"
Para.Previous.Range.Style =3D "UserStyle_2"
Else
MsgBox "CAS =C0 TRAITER ?"
End If
End If
End With

End Sub

Ce code trouve bien la premi=E8re occurence de la chaine FindMe",
modifie bien le style du paragraphe contenant "FindMe" et celui le
pr=E9c=E9dent.

MAIS il ne passe pas aux autres occurence de "FindMe"
Quelque chose comme :
Selection.Find.Execute Replace:=3DwdReplaceAll
Merci d evotre collaboration

1 réponse

1 2
Avatar
jean-paul.bataille
> Bien joué.



Pas si finement que cela : aprés le "Find", quelque soit le résultat
je change de style , ce n'est pas ce qui est désiré en particulier
lors du dernier "FindMe" inclus dans mon texte.

Il faut rajouter un IF … THEN … pour éviter ça.
Il y a peut étre plus élégant comme solution.

Ce qui donne finalement :

Do
'boucler pour passer en revue les "FindMe"
Selection.Find.ClearFormatting
With Selection.Find
.Text = "FindMe"
myResult = .Execute
End With
If myResult = True Then
'traiter par paragraphe complet
Selection.Expand unit:=wdParagraph
'paragraphe précédent le "FindMe"
Selection.Range.Previous.Style = "Titre 1"
'paragraphe du "FindMe"
Selection.Range.Style = "Titre 2"
Selection.MoveRight unit:=wdCharacter, Count:=1
End If
Loop While myResult

Merci Géo, merci Heureux-Oli
1 2