Macro pour modifier la couleur de certains mots

Bonjour à tous !

Avant de commencer, je dois préciser que mon besoin concerne Word... J'ai vu par ci par là sur le forum qu'il pouvait arriver que des questions concernant Word soient posées, j'ai donc osé ! Mais dites moi si je suis hors sujet !

Ceci étant dit, voilà mon soucis :

J'ai un document avec quelques mots en orange dont j'aimerais changer la couleur avec une boite de dialogue. En gros, je clique sur le bouton qui lance ma macro, une fenêtre s'ouvre m'invitant à saisir mon code hexa de couleur et paf, les mots orange se transforme en mots bleus (si c'est Christophe qui demande par exemple).

Jusqu'ici j'ai plus ou moins réussi avec ce code là :

Sub test()
Dim strCouleur As Long

' Si une sélection est faite, ne fonctionne que sur celle-ci !

strCouleur = hexa_color(InputBox("Code hexa de la couleur (ex : #FF0000)", "Nouvelle couleur"))     ' !!! la saisie utilisateur n'est pas vérifiée !

Selection.Find.ClearFormatting

Selection.Find.Font.Color = RGB(255, 108, 57)     ' Orange

Selection.Find.Replacement.ClearFormatting

Selection.Find.Replacement.Font.Color = strCouleur

Selection.Find.Execute Replace:=wdReplaceAll

End Sub

Function hexa_color(ByVal hexa) 'Returns -1 in case of error

       If Len(hexa) = 7 Then hexa = Mid(hexa, 2, 6) 'If color with #

    If Len(hexa) = 6 Then

        num_array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f")

        char1 = LCase(Mid(hexa, 1, 1))
        char2 = LCase(Mid(hexa, 2, 1))
        char3 = LCase(Mid(hexa, 3, 1))
        char4 = LCase(Mid(hexa, 4, 1))
        char5 = LCase(Mid(hexa, 5, 1))
        char6 = LCase(Mid(hexa, 6, 1))

        For i = 0 To 15
            If (char1 = num_array(i)) Then position1 = i
            If (char2 = num_array(i)) Then position2 = i
            If (char3 = num_array(i)) Then position3 = i
            If (char4 = num_array(i)) Then position4 = i
            If (char5 = num_array(i)) Then position5 = i
            If (char6 = num_array(i)) Then position6 = i
        Next

        If IsEmpty(position1) Or IsEmpty(position2) Or IsEmpty(position3) Or IsEmpty(position4) Or IsEmpty(position5) Or IsEmpty(position6) Then
            hexa_color = -1
        Else
            hexa_color = RGB(position1 * 16 + position2, position3 * 16 + position4, position5 * 16 + position6)
        End If

    Else
        hexa_color = -1
    End If

End Function

Mais 3 soucis se posent :

1/La modif de couleur ne s'opère que dans le texte "normal" on va dire. Or j'ai des mots orange dans mon en-tête, dans un tableau, dans une forme...

2/Même à l'intérieur du texte "normal", la modif ne s'opère qu'après mon curseur.

3/ Histoire de rendre le truc plus simple, j'ai une bordure de tableau et des puces dont la couleur doit aussi changer...

Bref, j'ai un début de commencement de quelque chose, mais je suis encore loin. J'imaginais qu'une solution pouvait être de changer le style via la macro, mais je sais pas faire (oui parce que le code du haut, faut pas rêver, c'est pas de moi hein...).

Merci beaucoup par avance pour votre aide, même si on est pas sur Excel, je vous en serais d'autant plus reconnaissant.

Rechercher des sujets similaires à "macro modifier couleur certains mots"