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

VBA Word Discussion :

Surligner dans d'autres couleurs que celles proposées par Word ?


Sujet :

VBA Word

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 159
    Par défaut Surligner dans d'autres couleurs que celles proposées par Word ?
    Bonjour le forum,

    J'anime chaque semaine une réunion qui rassemble une quinzaine d'interlocuteurs.
    Pour ne louper aucun sujet, je surligne à la main le nom des interlocuteurs dans le compte rendu de la semaine précédente, ce qui me permet de retrouver en un coup d'œil, tous les sujets qui concernent un interlocuteur donné.
    J'aimerais mener la même opération d'une macro qui fasse automatiquement le même type de surlignage.

    J'ai donc besoin de couleurs nombreuses, variées et si possibles pas trop intenses.
    Je ne trouve pas mon bonheur avec la palette que propose Word, où les couleurs sont peu nombreuses, flashy et/ou trop sombres.
    Y a-t-il un moyen pour surligner dans d'autres couleurs que celles proposées par le système ?

    Si ce n'est pas possible, j'ai bien pensé à ajouter une trame de fond aux textes que je veux surligner, parce que le choix de couleurs est plus étendu (même si les couleurs sont trop intenses à mon goût).
    Problème pour moi qui suis nul en VBA : je sais créer une macro qui surligne un texte donné en employant la fonction rechercher/remplacer, en revanche je ne sais pas faire la même chose pour appliquer une trame de fond.

    Merci à qui pourra m'aider !

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Bonjour

    Par macro tu peux utiliser diverses méthodes mais comme tu évoques le chercher/remplacer en voici une :

    Tu crées un style caractères pour chacun des noms (pour simplifier à l'identique du nom ici) dans le modèle qui te sert pour le CR
    Nom : Styles_caractères.png
Affichages : 3125
Taille : 87,5 Ko

    Puis une macro utilises ces styles en chercher/remplacer
    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
    33
    34
    Sub coloration()
    '
    '
    Dim mesnoms(3)
    mesnoms(1) = "titi"
    mesnoms(2) = "toto"
    mesnoms(3) = "tutu"
     
    On Error GoTo Fin:
    Application.DisplayAlerts = False
    Selection.WholeStory
        With Selection.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Forward = True
            .Wrap = wdFindAsk
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            For i = 1 To UBound(mesnoms)
                .Replacement.Style = ActiveDocument.Styles(mesnoms(i))
                .Text = mesnoms(i)
                .Replacement.Text = mesnoms(i)
                .Execute Replace:=wdReplaceAll
            Next i
            .ClearFormatting
            .Replacement.ClearFormatting
        End With
    Fin:
    Application.DisplayAlerts = True
    End Sub
    Edit : gestion d'erreur partielle ajoutée au code

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 159
    Par défaut
    Bonjour,

    Merci pour ta réponse, qui est futée...mais qui me convient mal : mon CR est déjà écrit avec des styles.
    Si je devais créer un style par interlocuteur, ça serait ingérable...
    Je préférerais une autre astuce.

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    RE

    Ce sont des styles de caractères qui ne changent pas le style de paragraphe utilisé et le changement est fait par macro...
    Quinze styles c'est 15 minutes une fois pour toutes dans le modèle et tu peux modifier les couleurs associées aux styles sans toucher au code et sans connaître leur code...

    Sinon il faut une boucle par interlocuteur/couleur pour colorer le fond de chaque occurrence recherchée une par une du début à la fin.
    Si le document est long cela peut prendre du temps...
    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
    33
    34
    35
    36
    Sub coloration2()
     
    Dim mesnoms(5, 2) 'nom et teinte associée
    mesnoms(1, 1) = "titi"
    mesnoms(2, 1) = "toto"
    mesnoms(3, 1) = "tutu"
    mesnoms(4, 1) = "tata"
    mesnoms(5, 1) = "tete"
    mesnoms(1, 2) = 16774097
    mesnoms(2, 2) = 14876613
    mesnoms(3, 2) = 16773119
    mesnoms(4, 2) = 16765393
    mesnoms(5, 2) = 15204351
     
    Application.ScreenUpdating = False
        Selection.Find.ClearFormatting
        With Selection.Find
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            For i = 1 To UBound(mesnoms)
                Selection.HomeKey Unit:=wdStory
                .Text = mesnoms(i, 1)
                While Selection.Find.Execute
                    Selection.Shading.BackgroundPatternColor = mesnoms(i, 2)
                Wend
            Next i
        End With
        Selection.HomeKey Unit:=wdStory
    End Sub

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 159
    Par défaut
    Bonjour,

    J'ignorais cette différence entre styles de caractères et styles de paragraphes.
    En tous cas, ta macro marche parfaitement, c'est cool. Mille mercis !!!

    Pour avoir l'occasion de te remercier une mille-et-unième fois :
    y a-t-il un moyen de forcer à respecter la casse, car les noms que je veux surligner sont tjs écrits en majuscules, et certains d'entre eux peuvent se retrouver fortuitement à l'intérieur d'un mot écrit en minuscules ?

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Bonjour

    Dans la macro modifier la ligne MatchCase pour (et rentrer les noms en majuscules au début de la macro )

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Août 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 159
    Par défaut
    C'est dans mes cordes ;o)
    Merci !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/11/2014, 17h46
  2. Réponses: 6
    Dernier message: 05/09/2013, 18h20
  3. Réponses: 7
    Dernier message: 10/06/2009, 22h29
  4. Réponses: 5
    Dernier message: 27/11/2008, 17h34
  5. Ecrire dans une autre fenetre que celle de l'application
    Par aurelien59 dans le forum Windows
    Réponses: 3
    Dernier message: 15/05/2007, 11h50

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