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

Résolu/Fermé
D-velop Messages postés 2 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 27 décembre 2015 - 26 déc. 2015 à 22:55
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 28 déc. 2015 à 13:55
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 !
A voir également:

3 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 déc. 2015 à 08:13
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
D-velop Messages postés 2 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 27 décembre 2015 1
Modifié par D-velop le 27/12/2015 à 21:25
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
28 déc. 2015 à 08:05
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
28 déc. 2015 à 13:55
- 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