Mise en forme conditionnelle caractères

Fermé
Jean philippe - 10 mars 2016 à 13:58
 Jean philippe - 11 mars 2016 à 14:20
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

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
10 mars 2016 à 15:09
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
Jean philippe
11 mars 2016 à 09:33
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
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > Jean philippe
11 mars 2016 à 10:30
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
Jean philippe
11 mars 2016 à 14:07
Bonjour,

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

merci
0
Jean philippe
11 mars 2016 à 14:20
re, desolé je me suis trompé tout marche nickel !

grand merci !
0