La couleur de la police change en fonction de la lettre

Résolu
Kouassi -  
 Kouassi -
Bonjour,
Dans une cellule Excel, je veux que la couleur de la police change automatiquement en fonction de la lettre que je tape :
Exemple :
- si je tape `'p'' le p s'affiche en rouge
- si c'est `'t'' que je tape il affiche en bleu.
- Etc.
Merci de partager avec moi la solution si vous l'avez !!
A voir également:

3 réponses

Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

voila deux exemples en A1:A20 et C1:C20
https://www.cjoint.com/?ECcsSrqHAwS
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
1
Kouassi
 
bonjour Mike,
c'est super ça marche parfaitement
http://www.cjoint.com/?ECdjhLF4Sg9

grand merci !!!
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour

En vba. Faire Alt F11 pour accéder a l'éditeur. Ensuite cliquer sur la feuille concernée en haut à gauche et mettre ce code:

Dim texte As String
Dim pos As Integer
 Dim x As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static selection_precedente As String
'Enregistrement de l'adresse de la sélection actuelle :
    selection_precedente = Target.Address
texte = Target.Value
Macro1
Macro2
End Sub
Sub Macro1()
Do
        'Boucle tant que le compteur x est inférieur au texte
        Do While x < Len(texte)
            'Incrémente le compteur.
            x = x + 1
'condition : si le xième caractère du texte correspond
    If Mid(texte, x, 1) = "p" Then
        pos = x 'définit la variable pos
        With ActiveCell.Characters(Start:=pos, Length:=1).Font
        .Name = "Arial"
        .FontStyle = "Normal"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 3 'rouge
    End With
    End If 'fin de la condition
  Loop
 Loop Until x = Len(texte)
End Sub
Sub Macro2()
Do
        'Boucle tant que le compteur x au texte
        Do While x < Len(texte)
            'Incrémente le compteur.
            x = x + 1
'condition : si le xième caractère du texte correspond
    If Mid(texte, x, 1) = "t" Then
        pos = x 'définit la variable pos
        With ActiveCell.Characters(Start:=pos, Length:=1).Font
        .Name = "Arial"
        .FontStyle = "Normal"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 5 'bleu
    End With
    End If 'fin de la condition
  Loop
 Loop Until x = Len(texte)
 End Sub


Il suffit après avoir saisie le texte dans la cellule de cliquer pour voir apparaître les lettres en couleur
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Une petite omission si la cellule sélectionnée ne contient aucun texte mettre ceci:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static selection_precedente As String
'Enregistrement de l'adresse de la sélection actuelle :
    selection_precedente = Target.Address
texte = Target.Value
If texte = "" Then Exit Sub
Macro1
Macro2
End Sub


a la place de:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static selection_precedente As String
'Enregistrement de l'adresse de la sélection actuelle :
    selection_precedente = Target.Address
texte = Target.Value
Macro1
Macro2
End Sub
0
Kouassi > cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention  
 
Merci de m'aider cs_Le Pivert,
je ne sais pas si j'utilise bien le code mais il ne marche que pour la première entrée sur la feuille et seulement si cette entrée est un ''p''.

Très cordialement,
Ruphin KOUASSI
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Bonsoir,

Pourquoi ne pas faire simple avec une mise en forme conditionnelle, exemple si les valeurs sont en colonne A, sélectionner la plage exemple A1 à A50
Mise en forme conditionnelle
la formule pour cette plage sera
=GAUCHE(A1;1)="P"
format, sélectionner le type de colorisation
idem pour t

à part que tu veuilles donner une couleur à chaque lettre de la chaine, mais dans quel intérêt

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Kouassi
 
salut Mike,
ta solution semble beaucoup plus simple mais j'ai rien compris
stp envoi moi un exemple à ***@***

merci
0