Faire une boucle pour traiter tout le document (macro word)

Signaler
Messages postés
4
Date d'inscription
lundi 30 novembre 2009
Statut
Membre
Dernière intervention
7 décembre 2009
-
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
-
Bonjour a tous!

Je voudrais faire une boucle (dans une macro word) pour mettre un tiret au début de chaque paragraphe d'un document Word.

J'ai réussi a le faire pour le premier paragraphe mais je ne sais pas comment intégrer le code dans une boucle pour traiter tout le document !?

Quelqu'un peut-il me donner la structure de la boucle a faire pour traiter tout le document???

Merci pour votre aide

3 réponses

Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
bonjour

Dim par As Paragraph
Dim doc As Document

'se repositionner en haut du doucment
Selection.HomeKey Unit:=wdStory

'parcourir les paragraphes et insérer un tiret
For Each par In ActiveDocument.Paragraphs
par.Range.InsertBefore " -"
Next par
Messages postés
4
Date d'inscription
lundi 30 novembre 2009
Statut
Membre
Dernière intervention
7 décembre 2009

Merci Loulou69. Cela fonctionne!

Si tu devais faire une recherche de tous les mots par ex. "Pin" dans un document texte, comment fais-tu pour continuer la recherche et traiter les autres mots "Pin" apres que le premier mot eu été trouvé ?

Mon problème est que le code (ci-joint un ex.) ne traite que le premier mot "Pin" dans le document et ne traite pas les autres...Je ne sais pas comment lui dire de continuer apres la première recherche...? Dois-je insere le ".find" dans un "For each" ?

Merci d'avance pour ton aide !!!


Sub SearchInColor()
Selection.Find.ClearFormatting
'Selection.Find.Font.Color = 5737262
With Selection.Find
.Text = "Pin"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
'Selection.HomeKey Unit:=wdLine
Selection.TypeText Text:="OK"

End Sub
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
Dans ton exemple le groupe de ligne
"With selection.Find" jusqu'a "End With"
Prépare les parametres de recherche

Ensuite il suffit de remplacer le "Selection.FInd.Execute" par une boucle

While Selection.Find.Execute 'la selection se deplacera au prochain mot trouvé
Selection.TypeText Text:="OK"
Wend
Attention le selection.TypeText prendra la forme du paragraphe de début de document mais pas forcément la forme de la zone dans laquelle le texte est trouvé : mais je n'ai pas de solution si tu la trouve penses à me dire comment tu fais dans ce cas. (A moi de te demander)


Bonsoir