XL 2019 Modifier la couleur de certains caractères dans une cellule

ValyRabary

XLDnaute Nouveau
Hello tout le monde 👋,

Étant donné que la mise en forme conditionnelle d'une cellule s'applique sur tous les caractères d'une cellule, existerait il une solution pour appliquer une mise forme conditionnel sur certains caractères dans une cellule ?

Actuellement, je souhaiterais que le caractère "§" soit seulement en couleur blanche lorsque je saisis ce dernier dans une cellule.

Vous trouverez en pièce jointe la feuille ↓

Merci de votre réponse.
 

Pièces jointes

  • alea.xlsx
    13.1 KB · Affichages: 8

job75

XLDnaute Barbatruc
Bonjour ValyRabary,

Une MFC ne peut pas faire ça, il faut du VBA.

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cible$, L%, coul&, pos%
cible = "§": L = Len(cible)
coul = vbWhite 'code couleur blanche
Set Target = Intersect(Target, UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target 'si entrées multiples
    pos = InStr(Target, cible)
    If pos Then Target.Characters(pos, L).Font.Color = coul
Next
End Sub
A+
 

Pièces jointes

  • alea(1).xlsm
    17.6 KB · Affichages: 2

job75

XLDnaute Barbatruc
La macro précédente ne traite que la 1ère occurrence du texte cible recherché.

Pour traiter toutes les occurrences :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cible$, L%, coul&, x$, i%
cible = "§": L = Len(cible)
coul = vbWhite 'code couleur blanche
Set Target = Intersect(Target, UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target 'si entrées multiples
    x = Target
    For i = 1 To Len(x)
        If Mid(x, i, L) = cible Then Target.Characters(i, L).Font.Color = coul
Next i, Target
End Sub
Si cible est formée de lettres notez que la casse est respectée.
 

Pièces jointes

  • alea(2).xlsm
    17.8 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
Bonjour
@job75 tu pourrais m'expliquer le but de ceci
VB:
Set Target = Intersect(Target, UsedRange)
If Target Is Nothing Then Exit Sub
peut être sur les versions supérieures à 2007 et 2013 le comportement est différent mais ches moi
a partir du moment ou une cellule déclenche le change ,elle fait partie du usedrange
 

Discussions similaires