Mettez en évidence des mots contenus dans une plage de cellules.

Lorsque l’on sélectionne une ou plusieurs cellules, il est possible de mettre la police de la valeur contenue dans ces cellules dans une couleur choisie;

Il est possible également de mettre dans une certaine couleur un ou plusieurs mots contenu dans cette cellule. Pour cela, il suffit de sélectionner le mot et choisir sa police.

Ce que je vous propose dans ce billet, c’est de le faire à l’aide d’une procédure VBA.

Le code de la procédure

Sub CharacterColor(AreaText As Range, TextColoring As String, Optional RGBCode As Long = vbRed, Optional ResetColor As Boolean = True)
 ' Procédure de mise en évidence des mots dans une plage de cellules
 ' Author : http://Philippe.Tulliez.be
 ' Date   : 15/12/2015
 ' Version : 1.1
 ' Arguments
 ' AreaText     (Range)  Plage de cellules à l'intérieure de laquelle les mots seront mis en évidence
 ' TextColoring (String) Liste des mots séparés par un ';' à mettre en évidence
 ' [RGBCode]    (Numérique) Code (RGB) de la couleur qui mettra les mots en évidence (d:vbRed (rouge))
 ' [ResetColor] (Boolean) Efface la couleur de la plage AreaTexte (d:True)
 Dim Cel As Range, nbWord As Integer, tbl() As String, Start As Integer
 If ResetColor Then AreaText.Font.Color = 0 ' Efface la mise en forme précedente
 TextColoring = LCase(TextColoring)
 tbl = Split(TextColoring, ";")
 For Each Cel In AreaText
  For nbWord = 0 To UBound(tbl)
   Start = InStr(LCase(Cel), tbl(nbWord))
    Do While Start
     Cel.Characters(Start, Len(tbl(nbWord))).Font.Color = RGBCode
     Start = InStr(Start + 1, LCase(Cel), tbl(nbWord))
    Loop
  Next
 Next
End Sub

Exemple d’une procédure d’appel

Sub TestCharacterColor()
 Const SheetName As String = "Textes"    ' Nom de la feuille où se trouve les textes à mettre en forme
 Const RangeAddress As String = "A2:A4"  ' Plage de cellules où se trouve les textes à mettre en forme
 Const WordList As String = "raison;trop;le" ' Liste des mots qui doivent être mis en évidence
 Dim rng As Range
 Set rng = ThisWorkbook.Worksheets(SheetName).Range(RangeAddress)
 CharacterColor rng, WordList
End Sub

Liens

Je vous conseille la lecture de ce tutoriel : Les couleurs en VBA Excel: Les équivalences Hex-Long-RGB