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 :

Macro - Modifier la couleur d'un texte à la demande


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Gestionnaire back office
    Inscrit en
    Juin 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Gestionnaire back office

    Informations forums :
    Inscription : Juin 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Macro - Modifier la couleur d'un texte à la demande
    Bonjour !

    Voici mon souci :

    J'ai créé une macro j'ai trouvé sur le net une macro qui me permet d'ouvrir une pop-up, de saisir un code hexadécimal afin de modifier d'un clic la couleur de tous les mots en bleu dans mon texte. Sauf que ceci n'est valable qu'une fois car la macro se base sur la couleur à modifier au début, à savoir le bleu (Selection.Find.Font.Color = RGB(65, 124, 255) ). Or j'aimerais pouvoir utiliser la pop up à l'infini. Faudrait donc que le code hexa saisie soit enregistré quelque part et que ça soit celui-ci qui soit modifié à la prochaine saisie. M'voyez ?

    Voici mon code VBA pour le moment. J'ai pas eu le temps "d'anonymiser" mon fichier de travail, mais y a besoin je le ferais bien sûr.

    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
    Sub test()
    Dim strCouleur As Long
     
    ' Si une sélection est faite, ne fonctionne que sur celle-ci !
     
    'positionne le curseur en haut
    Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=1
     
    strCouleur = hexa_color(InputBox("Code hexa de la couleur (ex : #FF0000)", "Nouvelle couleur"))     ' !!! la saisie utilisateur n'est pas vérifiée !
     
    Selection.Find.ClearFormatting
     
    Selection.Find.Font.Color = RGB(65, 124, 255)     'bleu docaposte
     
    Selection.Find.Replacement.ClearFormatting
     
    Selection.Find.Replacement.Font.Color = strCouleur
     
    Selection.Find.Execute Replace:=wdReplaceAll
     
    End Sub
    Merci beaucoup !!!

  2. #2
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Il y aurait une solution
    - dans un module standard (Module1) de votre document passez :
    Public Const LAST_COULEUR As Long = 16743489,
    - dans le module ThisDocument passez
    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
    37
    38
    39
    40
    41
    42
    Sub test()
    ' http://www.cpearson.com/excel/vbe.aspx
    ' reference : Microsoft Visual Basic for Applications Extensibility 5.3
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent
    Dim CodeMod As VBIDE.CodeModule
    Dim wdDoc As Document
    Dim i As Long
     
    ' bleu docaposte = RGB(65, 124, 255), en HEXA = #417CFF, en Long = 16743489
    Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=1
     
    NEW_COULEUR = hexa_color(InputBox("Code hexa de la couleur (ex : #417CFF)", "Nouvelle couleur", "#C92CB2"))
     
    Selection.Find.ClearFormatting
    Selection.Find.Font.Color = LAST_COULEUR
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Color = NEW_COULEUR
    Selection.Find.Execute Replace:=wdReplaceAll
     
    a = "Public Const LAST_COULEUR As Long = " & LAST_COULEUR
    b = "Public Const LAST_COULEUR As Long = " & NEW_COULEUR
     
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
     
    Set VBProj = ActiveDocument.VBProject
    Set VBComp = VBProj.VBComponents("Module1") ' !!! attention au nom du module standard !!!
    Set CodeMod = VBComp.CodeModule
     
    Set wdDoc = ActiveDocument
     
    With CodeMod                                ' dans le module
        For i = 1 To .CountOfLines              ' on cherche de la 1ère à la dernière ligne
            If .Lines(i, 1) = "" & a & "" Then  ' ceci : Public Const LAST_COULEUR As Long = 16743489
                .ReplaceLine i, "" & b & ""     ' pour le remplacer par ceci : Public Const LAST_COULEUR As Long = 11676873
            End If
        Next i
    End With
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Gestionnaire back office
    Inscrit en
    Juin 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Gestionnaire back office

    Informations forums :
    Inscription : Juin 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse !!

    Cependant, j'ai toujours un peu de mal avec les placement des codes... Voici ce que je vois :

    Nom : Capture.PNG
Affichages : 68
Taille : 9,8 Ko

    A moins que ça soit dans la fenêtre de droite ?

    Bref... C'est déjà pas clair dans Excel, mais j'ai l'impression que c'est pire sur Word

    Merci en tout cas !

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    re
    réponse en img
    Images attachées Images attachées   
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

Discussions similaires

  1. Modifier la couleur d'un texte avec ng-class
    Par l_achraf dans le forum AngularJS
    Réponses: 0
    Dernier message: 21/02/2019, 22h53
  2. Réponses: 4
    Dernier message: 07/03/2016, 15h05
  3. [LibreOffice][Texte] Modifier une couleur de texte via une macro
    Par sylvcod dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 18/06/2014, 12h18
  4. modifier la couleur d'un texte dans un input text
    Par mic79 dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 05/01/2005, 16h45

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