Formater les mots de la liste depuis une autre liste

Bonjour,

j'ai essayé un bon moment de faire ceci:

soit cell A1, la liste de plusieurs mots séparés par un retour à la ligne

soit cell B1, la liste de qques mots séparés par un retour à la ligne; ces mots sont présents également dans la cell A1

je voudrais que les mots présents dans B1 soient en rouge/gras dans la cell A1.

j'ai essayé avec une combinaison de "substitute" en ajoutant des "{}" et de code VBA, mais ça ne donne pas le résultat escompté.

Sub GrasRouge()

Dim Debut As Long, Fin As Long

    If InStr(1, ActiveCell, "{") > 0 Then
        Debut = InStr(1, ActiveCell.Text, "{")
        Fin = InStrRev(ActiveCell.Text, "}") + 1
        ActiveCell.Characters(5, 8).Font.Color = vbRed
        ActiveCell.Characters(5, 8).Font.Bold = True

    End If

End Sub
7rougegras.xlsm (9.80 Ko)

Bonjour,

Sub GrasRouge()
Dim n1 As Integer, n2 As Integer, i As Integer
mots = Split(Range("C3"), Chr(10))
For i = LBound(mots) To UBound(mots)
n1 = Application.Find(mots(i), Range("B3"))
n2 = Len(mots(i))
 With Range("B3").Characters(n1, n2)
   .Font.Color = vbRed
   .Font.Bold = True
 End With
Next
End Sub

Bonjour,

ça ne marche pas correctement.

en fait il me met en rouge les characters qu'il trouve dans la cellule d'a coté et non pas les mots.

en attaché, un exemple plus concret.

7rougegras.xlsm (15.22 Ko)

qqun pour m'aider svp?

up

Bonjour,

à tester,

Sub GrasRouge()
Dim n1 As Integer, n2 As Integer, i As Integer
Dim mot As String, mots As String, m As String
mot = Application.Substitute(Range("C3"), Chr(10), ", ")
mots = Split(mot, ",")
For i = LBound(mots) To UBound(mots)
m = Application.Trim(mots(i))
n1 = Application.Find(m, Range("B3").Value)
n2 = Len(mots(i))
 With Range("B3").Characters(n1, n2)
   .Font.Color = vbRed
   .Font.Bold = True
 End With
Next
End Sub
Rechercher des sujets similaires à "formater mots liste"