Changer la couleur de tous les éléments d'une certaine couleur

Résolu
Bonjour

Étant débutant en VBA et n'ayant pas trouvé de script satisfaisant sur le net pour réaliser ce que je souhaite, je soumet ici ce que je désire obtenir.
je souhaiterais, pour Word (2010), réaliser une macro VBA capable
- de repérer dans un document Word tout les éléments d'une certaine couleur, définie par un code RGB (par exemple, un bleu pur RGB (0,0,255)), y compris le texte dans les zones de texte et y compris aussi les formes insérées (trait et/ou remplissage !)
- de changer la couleur de tous ces éléments pour une couleur définie par un code RGB (par exemple, un magenta RGB (255,0,255) )

je ne sais si cela est possible, je me pose à ce titre la question de la possibilité de changer la couleur:
- d'un mot (de la couleur choisie pour être remplacée), même s'il est isolé dans un paragraphe
- d'une lettre (de la couleur choisie pour être remplacée), même si elle est au sein d'un mot (je me doute que là, ça commence à devenir vraiment tordu... )

Merci d'avance à tous ceux qui prendraient la peine de me répondre, même en ne m'apportant qu'une aide partielle !

3 réponses

  1. Contributeur
    Bonjour,

    Essaie ceci:

    Sub Surligne()
    Dim wd
    For Each wd In ActiveDocument.Words
    wd.Select
    If Selection.Font.ColorIndex = wdGreen Then MsgBox "Ok " & Selection.Range.Text
    Selection.Font.ColorIndex = wdRed
    Next wd
    End Sub

    1
    1. Excellent, Voilà 90% de l'objectif atteint !
      Merci pour cette réponse rapide et efficace qui m'apporte une aide considérable !

      Le script fonctionne pour le texte hors zone de texte (en ajoutant End If à la fin de la boucle conditionnelle), cela m'encourage à tenter de le compléter pour qu'il s'applique aussi au texte présent au sein de zones de texte, peut-être est-ce simple à réaliser mais je ne sais s'il faut utiliser une procédure similaire en remplaçant ActivDocument.Words par ActivDocument.Shapes. ou ActivDocument.Shapes.Text ou un truc du genre.
      Je vais essayer de trouver mais dans tous les cas merci déjà de tout coeur pour cette aide !
      1
      1. Contributeur
        Pour les shapes:

        Sub Surshape()
        Dim wd
        For Each wd In ActiveDocument.Shapes
        wd.Select
        If Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 0, 255) Then
        Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 255)
        End If
        Next wd
        End Sub
        


        les textes:

        Sub Surligne()
        Dim wd
        For Each wd In ActiveDocument.Words
        wd.Select
        If Selection.Font.Color = RGB(0, 0, 255) Then
        Selection.Font.Color = RGB(255, 0, 255)
        End If
        Next wd
        End Sub

        1
        1. Contributeur
          - d'une lettre (de la couleur choisie pour être remplacée), même si elle est au sein d'un mot (je me doute que là, ça commence à devenir vraiment tordu... )


          On peut le faire aussi:

          Sub Surlettre()
          With ActiveDocument.Content.Find
              .ClearFormatting
               .Font.Color = RGB(0, 0, 255)
              With .Replacement
                  .ClearFormatting
                 .Font.Color = RGB(255, 0, 255)
              End With
              .Execute FindText:="", ReplaceWith:="", Format:=True, _
                  Replace:=wdReplaceAll
          End With
          End Sub


          et voilà, après une petite recherche sur Google (Google est notre ami)

          @+ Le Pivert
          0