Macro Word pour repérage de lignes en couleur dans un texte en noir

docEPS01 Messages postés 2 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 18 septembre 2007 - 18 sept. 2007 à 18:25
docEPS01 Messages postés 2 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 18 septembre 2007 - 18 sept. 2007 à 20:23
Bonjour,

je cherche à faire une macro Word pour réaliser les opérations suivantes :
Dans un fichier de plusieurs centaines de pages constitué de lignes séparées par des sauts de paragraphes et dont certaines lignes sont en couleur (exemple : rouge)
- repérer ces lignes (j'ai utilisé Ctrl f avec mise en forme : couleur de police : rouge)
- aller au début de la ligne repérée et y ajouter une série de caractères reconnaissables (par exemple ###)
- sélectionner la ligne ainsi modifiée et en changer la couleur (couleur automatique)

L'objectif final sera de pouvoir filtrer les lignes repérées dans Excel

Voici le code que j'ai obtenu :

Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ""
        .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:="###"
    Selection.HomeKey Unit:=wdLine
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Selection.Font.Color = wdColorAutomatic
End Sub

Cette macro ne fonctionne pas correctement puisqu'elle ajoute les ### quelle que soit la couleur de la ligne.
Quelqu'un sait-il pourquoi?

Par ailleurs, comment faire une boucle pour répéter l'opération sur tout le fichier ?

Si quelqu'un peut m'indiquer le code d'une macro qui supprimerait tout le texte qui n'est pas de la couleur désirée, ça sera encore plus simple et je suis preneur.

Merci d'avance

1 réponse

docEPS01 Messages postés 2 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 18 septembre 2007
18 sept. 2007 à 20:23
J'ai trouvé le moyen pour que ça fonctionne une fois (il n'y avait pas de référence à la couleur dans ma version initiale) :

Selection.Find.ClearFormatting

Selection.Find.Font.Color = wdColorRed

    With Selection.Find

        .Text = ""

        .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:="###"

    Selection.HomeKey Unit:=wdLine

    Selection.EndKey Unit:=wdLine, Extend:=wdExtend

    Selection.Font.Color = wdColorAutomatic

End Sub


Maintenant, je voudrais mettre ça dans une boucle pour traiter tout mon
fichier, mais je ne sais vraiment pas comment on fait. Merci d'avance
pour votre aide.
0
Rejoignez-nous