Mise en forme conditionnelle caractères

Jean philippe -  
 Jean philippe -
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. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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. Jean philippe
       
      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
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > Jean philippe
         
        Bonjour

        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
    2. Jean philippe
       
      Bonjour,

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

      merci
      0
    3. Jean philippe
       
      re, desolé je me suis trompé tout marche nickel !

      grand merci !
      0