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 une partie d'un texte word [WD-2013]


Sujet :

VBA Word

  1. #1
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut Surligner une partie d'un texte word
    Bonjour,

    Je cherche à surligner d'une certaine couleur une partie d'un texte dans word. L'écriture se fait via excel.

    Comment puis je procéder. je ne trouve rien sur internet.

    merci d'avance bonne journée.

    j'ai testé ceci mais cela ne fonctionne pas. Il ne reconnait pas l'objet. Y-a-t-il aussi une fonction du style Csurligner("partie de chaine") & "reste de la chaine"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WordDoc.Tables(1).Columns(1).Cells(1).Range.Text = "Témoin" & vbCr & "NaCl" & vbCr & JOUR
    WordDoc.Tables(1).Columns(1).Cells(1).Range.Characters(1, 6).Font.ColorIndex = 3
    du coup via word j'arrive à surligner toute la case du tableau via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Tables(1).Columns(1).Cells(1).Range.HighlightColorIndex = wdYellow
    mais comment faire pour surligner que "Témoin" dans mon exemple svp?

    merci d'avance et bonne journée
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  2. #2
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Bonjour,

    j'ai trouvé une solution:

    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
    Sub surligner(LETXT As String)
    If LETXT <> "" Then
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Highlight = True
        With Selection.Find
            .Text = LETXT
            .Replacement.Text = LETXT
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    End If
    End Sub
    Sub Main()
    surligner ("Témoin")
    End Sub
    par contre j'ai une question:

    - est il possible de changer la couleur du surlignage car il est en jaune par défaut. Je n'arrive pas à choisir la couleur.

    merci d'avance
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bboy-eazy Voir le message

    Bonjour,

    Voir l'aide en ligne à la rubrique WdWord :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Range.HighlightColorIndex = wdBrightGreen
    Référence du développeur Word
    WdColor, énumération
    Spécifie la couleur 24 bits à appliquer.
    Nom Valeur Description
    -----------------------------------------------------------
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    wdColorAqua	13421619	Couleur cyan.
    wdColorAutomatic	-16777216	Couleur automatique. Valeur par défaut*; généralement, noir.
    wdColorBlack	0	Noir.
    wdColorBlue	16711680	Bleu.
    wdColorBlueGray	10053222	Gris-bleu.
    wdColorBrightGreen	65280	Vert vif.
    wdColorBrown	13209	Brun.
    wdColorDarkBlue	8388608	Bleu foncé.
    wdColorDarkGreen	13056	Vert foncé.
    wdColorDarkRed	128	Rouge foncé.
    wdColorDarkTeal	6697728	Bleu-vert foncé.
    wdColorDarkYellow	32896	Jaune foncé.
    wdColorGold	52479	Or.
    wdColorGray05	15987699	Dégradé de gris n°5.
    wdColorGray10	15132390	Dégradé de gris n°10.
    wdColorGray125	14737632	Dégradé de gris n°125.
    wdColorGray15	14277081	Dégradé de gris n°15.
    wdColorGray20	13421772	Dégradé de gris n°20.
    wdColorGray25	12632256	Dégradé de gris n°25.
    wdColorGray30	11776947	Dégradé de gris n°30.
    wdColorGray35	10921638	Dégradé de gris n°35.
    wdColorGray375	10526880	Dégradé de gris n°375.
    wdColorGray40	10066329	Dégradé de gris n°40.
    wdColorGray45	9211020	Dégradé de gris n°45.
    wdColorGray50	8421504	Dégradé de gris n°50.
    wdColorGray55	7566195	Dégradé de gris n°55.
    wdColorGray60	6710886	Dégradé de gris n°60.
    wdColorGray625	6316128	Dégradé de gris n°625.
    wdColorGray65	5855577	Dégradé de gris n°65.
    wdColorGray70	5000268	Dégradé de gris n°70.
    wdColorGray75	4210752	Dégradé de gris n°75.
    wdColorGray80	3355443	Dégradé de gris n°80.
    wdColorGray85	2500134	Dégradé de gris n°85.
    wdColorGray875	2105376	Dégradé de gris n°875.
    wdColorGray90	1644825	Dégradé de gris n°90.
    wdColorGray95	789516	Dégradé de gris n°95.
    wdColorGreen	32768	Vert.
    wdColorIndigo	10040115	Indigo.
    wdColorLavender	16751052	Lavande.
    wdColorLightBlue	16737843	Bleu clair.
    wdColorLightGreen	13434828	Vert clair.
    wdColorLightOrange	39423	Orange clair.
    wdColorLightTurquoise	16777164	Turquoise clair.
    wdColorLightYellow	10092543	Jaune clair.
    wdColorLime	52377	Vert clair.
    wdColorOliveGreen	13107	Vert olive.
    wdColorOrange	26367	Orange.
    wdColorPaleBlue	16764057	Bleu moyen.
    wdColorPink	16711935	Rose.
    wdColorPlum	6697881	Prune.
    wdColorRed	255	Rouge.
    wdColorRose	13408767	Rose saumon.
    wdColorSeaGreen	6723891	Vert marin.
    wdColorSkyBlue	16763904	Bleu ciel.
    wdColorTan	10079487	Brun tanné.
    wdColorTeal	8421376	Bleu-vert.
    wdColorTurquoise	16776960	Turquoise.
    wdColorViolet	8388736	Violet.
    wdColorWhite	16777215	Blanc.
    wdColorYellow	65535	Jaune.

  4. #4
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Bonjour Eric,

    merci pour ton aide,

    J'étais bien parti la dessus en fait mais le truc c'est que je ne sais pas ou le placer dans mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Range.HighlightColorIndex = wdRed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        With Selection.Find
            .Text = LETXT
            .Replacement.Text = LETXT
            .Range.HighlightColorIndex = wdRed
        End With
    ne fonctionne pas car .find.range ne va pas ensemble

    ainsi que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If LETXT <> "" Then
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Highlight = True
        Selection.Range.HighlightColorIndex = wdBrightGreen
    le code se déroule bien mais le surlignage est toujours jaune...
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bboy-eazy Voir le message
    A tester.

    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
     
    Sub Essai()
     
    Dim LeTXT As String
     
        LeTXT = "Eric"
     
        With ActiveDocument.Content.Find
             .ClearFormatting
             'propriétés de remplacement
             With .Replacement
                  .Highlight = wdRed
             End With
             .Execute FindText:=LeTXT, ReplaceWith:=LeTXT, Format:=True, MatchCase:=True, MatchWholeWord:=True, Replace:=wdReplaceAll
        End With
     
    End Sub
    Dernière modification par Invité ; 14/11/2017 à 13h14.

  6. #6
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Bonjour et merci Eric,

    je pense que ton code fonctionne mais en fait avec différents tests et en commencant à mieux comprendre la method Find, j'ai un soucis.

    en fait cela fonctionne quand par exemple il y a déjà une surbrillance appliquée au premier mot "Témoin" dans mon exemple. ceci coloriait tout en jaune car il y avait une surbrillance jaune. par contre si il y a pas de surbrillance au depart et bien rien ne s'applique.

    j'ai compris, et stoppe moi si je me trompe, que la première partie constitue la base de travail ( ce qu'on cherche et les propriétés à trouver). j'ai donc ajouté à ton code false à highlight car il n'y en a pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ActiveDocument.Content.Find
             .ClearFormatting
             .Highlight = false
    et donc rajouter pour le remplacement après:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
             With .Replacement
                  .Highlight = true
                  .Highlight = wdRed
             End With
    mais ca ne fonctionne pas
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bboy-eazy Voir le message
    Le code de mon précédent message trouve les occurrences d'une chaîne et les met en surbrillance avec la couleur définie. Dans mon exemple, je ne remplace pas la chaîne. Sans doute que ton problème réside là.
    Peux-tu expliquer, ce que tu cherches à faire réellement ? Au besoin, mets un exemple dans un fichier avec ton code et explique ce que tu veux obtenir.

  8. #8
    Inactif  

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

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

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

    Tu as un exemple avec Replacement là:

    https://msdn.microsoft.com/fr-fr/vba...-property-word


    Regarde aussi cette page et son exemple. Le remplacement varie selon que le Find est lancé à partir d'un objet Range ou d'un objet selection.

    Comme dans le code ici. La surbrillance est appliquée à partir d'un objet Range, parce que le texte d'un signet est un objet range. Mais comme j'ai dit, il faut adapter les noms d'objets.

    Pour te sauver le trouble de chercher, j'ai même vérifié que le Content d'un document Word est un objet Range
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  9. #9
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Bonjour,


    Merci pour vos réponses.

    J'ai donc regardé tous ces liens et bidouiller un peu histoire de comprendre.

    résultat, j'ai réussi à faire ma coloration par cette methode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Coloration()
    Selection.Tables(1).Select
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
         .MatchWildcards = True
         .Text = "Témoin"
              While .Execute
                   Selection.Range.Select
                   Selection.Range.HighlightColorIndex = wdYellow
                   Selection.Collapse wdCollapseEnd
              Wend
    End With
    End Sub
    merci à tous
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

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

Discussions similaires

  1. [XL-2013] Surligner une partie d'un string Excel vers Word
    Par bboy-eazy dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 15/11/2017, 09h36
  2. Surligner une partie d'une zone de texte
    Par raymonizuka dans le forum VBA Access
    Réponses: 6
    Dernier message: 11/06/2008, 13h28
  3. [C#] Comment copier une partie d'un texte ?
    Par zidenne dans le forum C#
    Réponses: 1
    Dernier message: 18/09/2006, 10h37
  4. Afficher une partie d'un document word
    Par joeln3 dans le forum ASP
    Réponses: 9
    Dernier message: 25/08/2006, 12h17
  5. comment récuperer une partie selectionné de texte?
    Par Death83 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/09/2005, 12h22

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