3 votes

Macro MS Word : comment changer les surlignages d'une couleur spécifique à une autre - à l'intérieur du texte sélectionné ?

Je veux changer les surbrillances jaunes du texte sélectionné (pas dans tout le document) en surbrillances rouges. Ce VBA change les couleurs de surbrillance mais ne s'arrête pas au texte sélectionné (il change également les surbrillances en dessous du texte sélectionné).

Sub SwitchHighlightsColor()
    Dim r As Range
    Set r = ActiveDocument.Range

    With r.Find
        .Highlight = True
        .Forward = True
        Do While .Execute(FindText:="", Forward:=True) = True
            If r.HighlightColorIndex = wdYellow Then   ' Highlight color you want to change
                r.HighlightColorIndex = wdRed          ' the new Highlight color you want to have
                r.Collapse 0
            End If
        Loop
    End With
End Sub

3voto

Jonno Points 20324

Essayez avec les modifications suivantes :

Sub SwitchHighlightsColor()
    Dim r As Range
    Set r = Application.Selection.Range

    With r.Find
        .Highlight = True

        Do While .Execute(FindText:="") And r.InRange(Application.Selection.Range)
            If r.HighlightColorIndex = wdYellow Then   ' Highlight color you want to change
                r.HighlightColorIndex = wdRed          ' the new Highlight color you want to have
                r.Collapse 0
            End If
        Loop
    End With
End Sub

enter image description here

enter image description here

enter image description here

EDIT :

Ce code alternatif fonctionne sur une base par lettre, plutôt que par mot. En tant que tel, il devrait changer toutes les lettres avec un surlignage à la couleur correcte. Il sera cependant difficile à annuler, car vous devrez annuler chaque lettre individuellement au lieu de le faire en une seule fois.

Sub SwitchHighlightsColorPerLetter()
    Dim r As Range
    Set r = Application.Selection.Range

    With r.Find
        .Highlight = True

        Do While .Execute(FindText:="") And r.InRange(Application.Selection.Range)
            For Each x In r.Characters
                If x.HighlightColorIndex = wdYellow Then   ' Highlight color you want to change
                    x.HighlightColorIndex = wdRed          ' the new Highlight color you want to have
                    x.Collapse 0
                End If
            Next
        Loop
    End With
End Sub

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X