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 :

Une macro qui surligne automatiquement certains mots dans une couleur donnée


Sujet :

VBA Word

  1. #1
    Membre régulier
    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
    Points : 73
    Points
    73
    Par défaut Une macro qui surligne automatiquement certains mots dans une couleur donnée
    Bonjour le Forum !

    J'aimerais disposer d'une macro qui surligne certains mots-clés dans tout texte, sans même que j'aie à lancer la macro.
    J'ai trouvé sur le Net (*) quelque chose qui ressemble à ça mais 1/ elle ne s'exécute pas automatiquement (il faut la lancer) 2/ elle n'est pas conçue pour surligner chaque mot-clé dans une couleur spécifique.
    Je ne suis pas assez savant en VBA pour faire évoluer ce code vers ce que je souhaite.
    Quelqu'un pourrait-il m'y aider ?
    Merci !!!

    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 xsurlignerauto()
    Dim Tableau(4) As String
    Tableau(0) = "GREFF"
    Tableau(1) = "PODIUM"
    Tableau(2) = "FMR"
    Tableau(3) = "AGE"
    Tableau(4) = "XXXX"
    Dim Mot As String
    Dim i As Integer
    For i = 0 To UBound(Tableau)
      Mot = Tableau(i)
    ' choix de la couleur
      If i <= 2 Then
        Options.DefaultHighlightColorIndex = wdYellow
      Else
        Options.DefaultHighlightColorIndex = wdPink
      End If
    ' Pour surligner le texte
    Selection.Find.ClearFormatting
      Selection.Find.Replacement.ClearFormatting
      Selection.Find.Replacement.Highlight = True
      With Selection.Find
        .Text = Mot
        .Replacement.Text = Mot
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = False
      End With
      Selection.Find.Execute Replace:=wdReplaceAll
    Next i
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 652
    Points : 34 356
    Points
    34 356
    Par défaut
    Salut,

    quand tu dis automatiquement, est-ce par exemple a l'ouverture du classeur ? a tout instant ? a la demande via un raccourci clavier ?

  3. #3
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Ce genre de chose peut être faite sans macro.

    Avec un simple remplacer
    • Comme tu vas utiliser le surlignage, commence par choisir avec l'outil de surlignage la couleur que tu veux appliquer.
    • A droite de l'onglet "Accueil", clique sur "Remplacer".
    • Dans la zone "Rechercher" saisis le mot à mettre en forme.
    • Si nécessaire, fait afficher les options de remplacement avec le bouton "Plus >>".
    • Place toi bien dans la zone "Remplacer"
    • Clique sur le bouton "Format" et clique sur surlignage (tu ne peux pas choisir la couleur ici, c'est pour cela que je te l'ai fait sélectionné avant ...).
    • Pour que le job se fasse, lance avec "Remplacer partout".



    Explication de ce qu'on demande à Word :
    Recherche le mot "XXX" et remplace le par le même mot mais en lui appliquant la mise en forme choisie.
    Rien ne t'empèche de mettre tout çà dans une macro. Au niveau rapidité d’exécution on devrait être pas mal.

  4. #4
    Membre régulier
    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
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    @jerome.vaussenat
    Je veux vraiment le faire par une macro pour ne pas avoir à lancer et paramétrer la commande Rechercher/Remplacer après chaque saisie de texte...

    @Jean-Philippe André
    L'idée serait que la macro s'exécute dès que je tape du texte. Ou à la limite, que je la déclenche manuellement, si ça perturbe trop le fonctionnement ordinaire de Word.

    Merci.

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Si tu veux quelque chose qui surveille chaque nouveau mot et le surligne immédiatement, le plus simple, c'est sans doute de te faire une balise active (Smart Tag) avec VB.net

    Pour quelque chose que tu vas lancer avec un bouton, l'enregistreur de macros devrait te mâcher 95% du code.

  6. #6
    Membre régulier
    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
    Points : 73
    Points
    73
    Par défaut
    Merci pour ta réponse.
    Finalement, au vu du nombre limité de couleurs disponibles pour le surlignage dans Word, j'ai décidé de mettre les mots en valeur en les passant dans une police très épaisse (Arial Black).
    Et comme je ne sais pas faire une macro qui se déclenche automatiquement à la frappe d'un mot-clé, j'ai fait une macro toute simple, que je lance dès que j'ai écrit qqch qui contient au moins un de ces mots-clés.
    Pas si loin de ce que je cherchais au début finalement.

    Merci à ceux qui m'ont aidé.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/03/2016, 10h05
  2. Conserver que certains mots dans une chaine
    Par michaugier dans le forum Langage
    Réponses: 0
    Dernier message: 04/03/2010, 15h58
  3. Macro qui va chercher des conditions dans une table
    Par piflechien73 dans le forum VBA Access
    Réponses: 5
    Dernier message: 13/09/2009, 22h29
  4. [RegEx] Détécter certains mots dans une phrase
    Par amoiraud dans le forum Langage
    Réponses: 5
    Dernier message: 30/04/2009, 13h54
  5. [RegEx] Se débarraser de certains mots dans une chaine
    Par Bruno.C dans le forum Langage
    Réponses: 5
    Dernier message: 19/12/2008, 18h34

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