IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Word Discussion :

Changer la couleur du surlignage


Sujet :

Word

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Changer la couleur du surlignage
    Bonjour,

    J'ai des centaines de documents Word, dans lesquels je surligne des caractères afin de les mettre en valeur. Ce ne sont pas forcément des mots, mais des caractères (documents techniques).

    Je veux changer la couleur d'un surlignage: tout ce qui est en violet, doit devenir rose.

    J'ai du temps. Faire ce changement, petit à petit, document par document, n'est pas un problème.

    Je me dirige donc vers une macro VBA sous Word.

    J'ai un code qui fonctionne presque. Mais je n'arrive pas à passer la cap du "presque":
    . le code met bien ce qui est déjà surligné en rose,
    . mais il bascule en rose TOUT ce qui est surligné. Or je le ne veux basculer que le violet en rose.

    Attention: c'est pour un Office Pro 2010. Désolé...

    Dans le bloc "With rng.Find", j'ai tenté, sans succès (j'ai l'impression que sous 2010 cela n'existait pas):
    .HighlightColorIndex (membre de méthode ou de données introuvable)
    .Shading.BackgroundPatternColor (membre de méthode ou de données introuvable)

    J'avoue ne pas arriver à trouver chez Microsoft l'information qui pourrait me débloquer.

    Un grand merci d'avance.

    Le code utilisé est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
        Set rng = ActiveDocument.Content
        rng.Find.ClearFormatting
        rng.Find.Replacement.ClearFormatting
     
        With rng.Find
            .Highlight = True ' Rechercher le texte surligné
            .Text = ""
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = True ' Appliquer le formatage au texte recherché
        End With
     
        ' Remplacer la surbrillance violet par rose
        Do While rng.Find.Execute
            i = i + 1
            rng.HighlightColorIndex = wdColorPink
            rng.Collapse wdCollapseEnd
        Loop

  2. #2
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 351
    Points : 552
    Points
    552
    Par défaut
    Bonjour,

    Testé sur Word 2010 et sur Word Office 365 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub Test()
     
    Dim Rng As Range
    'Dim I As Long
     
        Set Rng = ActiveDocument.Content
        Rng.Find.ClearFormatting
        Rng.Find.Replacement.ClearFormatting
     
        With Rng.Find
            .Highlight = True ' Rechercher le texte surligné
            .Text = ""
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = True ' Appliquer le formatage au texte recherché
        End With
     
        ' Remplacer la surbrillance violet par rose
        Do While Rng.Find.Execute
           ' I = I + 1
     
            With Rng
                 If .HighlightColorIndex = wdViolet Then .HighlightColorIndex = wdPink
                 .Collapse wdCollapseEnd
            End With
        Loop
     
    End Sub

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Super ! Super !

    Un grand merci !

    Oui, tout simplement, cela fonctionne !

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Re bonjour,

    Je viens de me rendre compte que, dans certains documents, j'utilisais deux couleurs. J'ai donc modifié le code ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If (.HighlightColorIndex = wdViolet Or .HighlightColorIndex = wdTurquoise) Then
         .HighlightColorIndex = wdPink
    End If
    Cela fonctionne bien.

    Sauf que...

    Si les caractères violets et turquoise sont séparés par un espace (ou un autre caractère) non mis en surbrillance, ils deviennent bien jaunes.

    Par contre, si j'ai des caractères violets, puis, collés, des caractères turquoise: les deux restent dans leur surbrillance d'origine.

    Il n'y a pas d'urgence.

    Merci d'avance.

  5. #5
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 351
    Points : 552
    Points
    552
    Par défaut
    Et en faisant deux passes avec des couleurs différentes ?

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'y avais pensé. Je viens de refaire les test, si les caractères sont collés, ils ne changent pas de surbrillance.

    Je patine un peu car, bizarrement, je ne trouve pas de documentation Microsoft exploitable sur:
    - With Rng.Find
    et
    - Do While Rng.Find.Execute

    Auriez-vous un lien à me fournir ?

    Merci d'avance.

  7. #7
    Membre confirmé
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 351
    Points : 552
    Points
    552
    Par défaut
    Essayez jusqu'au niveau caractère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Sub Test()
     
    Dim Rng As Range
    Dim I As Long
     
        Set Rng = ActiveDocument.Content
        Rng.Find.ClearFormatting
        Rng.Find.Replacement.ClearFormatting
     
        With Rng.Find
            .Highlight = True ' Rechercher le texte surligné
            .Text = ""
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = True ' Appliquer le formatage au texte recherché
        End With
     
        ' Remplacer la surbrillance violet par rose
        Do While Rng.Find.Execute
     
            With Rng
                   For I = 1 To .Characters.Count
                      If .Characters(I).HighlightColorIndex = wdViolet Then .Characters(I).HighlightColorIndex = wdPink
                 Next I
             '    If .HighlightColorIndex = wdViolet Then .HighlightColorIndex = wdPink
                 .Collapse wdCollapseEnd
            End With
        Loop
     
    End Sub

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Oui ! Oui ! Et re-oui !

    Super. Même les caractères surlignés qui se touchent changent de couleur !

    Encore merci, vraiment !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer la couleur de surlignage d'un textbox
    Par atar64 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/02/2008, 11h35
  2. [Forms] changer les couleurs
    Par Nounoursonne dans le forum Forms
    Réponses: 11
    Dernier message: 02/04/2004, 09h40
  3. [VB6]Changer la couleur d'une ligne d'un ListView
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/03/2003, 17h02
  4. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37
  5. Changer les couleurs de la palette avec du RGB
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 11
    Dernier message: 13/01/2003, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo