La couleur de la police change en fonction de la lettre

Résolu/Fermé
Kouassi - 2 mars 2015 à 14:21
 Kouassi - 3 mars 2015 à 08:59
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 2/03/2015 à 18:33
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
bonjour Mike,
c'est super ça marche parfaitement
http://www.cjoint.com/?ECdjhLF4Sg9

grand merci !!!
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
2 mars 2015 à 15:53
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
2 mars 2015 à 16:00
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
2 mars 2015 à 17:25
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 2/03/2015 à 17:39
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
salut Mike,
ta solution semble beaucoup plus simple mais j'ai rien compris
stp envoi moi un exemple à ***@***

merci
0