Mise en forme conditionnelle caractères

Bonjour,

Je soliicite votre aide pou run petit probleme de mise en forme conditionnelle.

Voila dans une colonne, j'ai plusieurs lignes avec du texte sous cette forme grosso modo
abcde - dazjdhdaz - dazdaz - XX

ce que je veux faire c'est que si une cellule contient XX, alors XX devient rouge, et seulement XX et non la cellule entière ou toutes les infos

Merci de votre aide et conseil

1 réponse

  1. Bonjour jean philippe

    Ca ne peut pas se faire par une MFC

    Il faut passer par une macro mise dans le worksheet de la feuille qui lorsqu'une cellule est modifiée colore le mot cible en rouge

    Exemple de macro dans laquelle la colonne d'entrée est la colonne C et le mot à colorer chat

    Private Sub Worksheet_Change(ByVal Target As Range)
    'si plusieurs cellules selectionnées ou si on n'est pas en 3eme colonne sortie sans rien faire
    If Target.Count > 1 Or Target.Column <> 3 Then Exit Sub
    ' texte à colorer en rouge
    cible = "chat"
    ' longueur du mot
    nc = Len(cible)
    ' gestion de l'erreur si mot cible non trouvé dans la chaine (on va à la sortie)
    On Error GoTo fin
    ' emplcement du 1er caractère du mot cible dans la chaine
    dep = Application.WorksheetFunction.Find(cible, Target.Value)
    ' colore le texte en rouge à partir du 1er caratere mot cible sur la longueur du mot cible
    Cells(Target.Row, Target.Column).Characters(Start:=dep, Length:=nc).Font.Color = -16776961
    fin:
    
    Cdlmnt 
    Via
    End Sub

    0
    1. bonjour, merci pour la macro, elle fonctionne mais j'ai un problème, dans certaines cellules j'ai 2 XX, mais seul 1 seul XX se met en rouge, et j'aimerais appliquer la macro a deux colonne si possible, la C et la E

      Merci de ton aide
      0
    2. @Jean philippeBonjour

      Alors modifies la macro ainsi

      Private Sub Worksheet_Change(ByVal Target As Range)
      'si plusieurs cellules selectionnées ou si on n'est pas en 3eme colonne sortie sans rien faire
      If Target.Count > 1 Or (Target.Column <> 3  and Target.column<>5) Then Exit Sub
      ' texte à colorer en rouge
      cible = "chat"
      ' longueur du mot
      nc = Len(cible)
      ' gestion de l'erreur si mot cible non trouvé dans la chaine (on va à la sortie)
      On Error GoTo fin
      ' emplcement du 1er caractère du mot cible dans la chaine
      dep = Application.WorksheetFunction.Find(cible, Target.Value)
      ' colore le texte en rouge à partir du 1er caractère mot cible sur la longueur du mot cible
      Cells(Target.Row, Target.Column).Characters(Start:=dep, Length:=nc).Font.Color = -16776961
      dep2=Application.WorksheetFunction.Find(cible, Target.Value, dep+1)
      Cells(Target.Row, Target.Column).Characters(Start:=dep2, Length:=nc).Font.Color = -16776961
      fin:
      End sub


      Cdlmnt
      Via
      0
    3. Bonjour,

      cette fois ci plus rien ne fonctionne avec la macro, je ne sais pas ce qui cloche malheuresement

      merci
      0
    4. re, desolé je me suis trompé tout marche nickel !

      grand merci !
      0