Changer partiellement la couleur d'un texte dans une cellule

  • Initiateur de la discussion Initiateur de la discussion XLTOF
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

X

XLTOF

Guest
Bonjour a vous !

J'ai une question qui peut paraitre simple en apparence mais qui pour moi reste un obstacle insurmontable pour l'instant. (Vous pourrez donc facilement en déduire mon niveau dans excel ;-)) )

je souhaierai creer une macro qui recherche un mot particulier dans une plage de cellule et qui, lorsque le mot est trouvé, me le change de couleur ou me le passe en bold de façon à ce qu'il saute plus facilement aux yeux.
Pour l'instant via VBA j'arrive bien à lui faire changer la couleur du texte mais pour toute la Cellule... donc finalement cela n'améliore pas la lisibilité du mot cherché.

Avez vous une solution en stock ?

Merci d'avance pour votre aide

A+
 
Re : Changer partiellement la couleur d'un texte dans une cellule

Bonsoir XLTOF,
Bonsoir Guillaumega,

pourquoi VBA? La mise en forme conditionnelle est parfaite pour faire cela non?
Guillaumega, si tu connais la méthode pour faire une mise en forme conditionnelle avec effet partiel dans une cellule, moi je suis preneur...


Dans l'attente, XLTOF tu peux peut-être tester comme ça :
Code:
[COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]

[COLOR=NAVY]Option Explicit[/COLOR]

[COLOR=NAVY]Sub[/COLOR] Traitement()
[COLOR=GREEN]'myDearFriend!  -  www.mdf-xlpages.com[/COLOR]
[COLOR=NAVY]Dim[/COLOR] Plage [COLOR=NAVY]As[/COLOR] Range, Cel [COLOR=NAVY]As[/COLOR] Range
[COLOR=NAVY]Dim[/COLOR] LeMot [COLOR=NAVY]As String[/COLOR], AdrDeb [COLOR=NAVY]As String[/COLOR]

    [COLOR=GREEN]'A adapter -----------------------------------[/COLOR]
    [COLOR=NAVY]Set[/COLOR] Plage = Sheets("Feuil1").Range("A1:D57")
    LeMot = "Mot"
    [COLOR=GREEN]' --------------------------------------------[/COLOR]
    
    [COLOR=NAVY]With[/COLOR] Plage
        [COLOR=NAVY]Set[/COLOR] Cel = .Find(LeMot, LookAt:=xlPart)
        [COLOR=NAVY]If Not[/COLOR] Cel [COLOR=NAVY]Is Nothing Then[/COLOR]
            AdrDeb = Cel.Address
            [COLOR=NAVY]Do[/COLOR]
                Modif Cel, LeMot
                [COLOR=NAVY]Set[/COLOR] Cel = .FindNext(Cel)
            [COLOR=NAVY]Loop While Not[/COLOR] Cel [COLOR=NAVY]Is Nothing[/COLOR] And AdrDeb <> Cel.Address
        [COLOR=NAVY]End If
    End With
End Sub[/COLOR]

[COLOR=NAVY]Private Sub[/COLOR] Modif([COLOR=NAVY]ByRef[/COLOR] Cel [COLOR=NAVY]As[/COLOR] Range, LeMot)
[COLOR=NAVY]Dim[/COLOR] T [COLOR=NAVY]As String
Dim[/COLOR] Pos [COLOR=NAVY]As Integer[/COLOR]
    T = Cel.Text
    [COLOR=NAVY]Do[/COLOR]
        Pos = InStr(Pos + 1, T, LeMot)
        [COLOR=NAVY]If[/COLOR] Pos > 0 [COLOR=NAVY]Then
            With[/COLOR] Cel.Characters(Start:=Pos, Length:=Len(LeMot)).Font
                .FontStyle = "Gras"
                .ColorIndex = 3     [COLOR=GREEN]'rouge[/COLOR]
            [COLOR=NAVY]End With
        End If
    Loop Until[/COLOR] Pos = 0
[COLOR=NAVY]End Sub[/COLOR]
Et si tu ne veux pas que la procédure soit sensible à la casse, tu peux modifier comme ça :
Code:
Pos = InStr(Pos + 1, T, LeMot[B], vbTextCompare[/B])
Cordialement,
 
Dernière édition:
Re : Changer partiellement la couleur d'un texte dans une cellule

Bonjour à vous !
Je ne savais pas qu'il y avait un service de nuit sur Excel Downloads ;-))
Vous ne dormez jamais ?
En tout cas quelle rapidité. C'est mieux que SOS médecins !!! merci à vous !

Je vais tester ta solution MyDearFriend. Je ne connais pas l'instruction Instr.
Si je comprend bien le principe tu charge l'ensemble de la cellule dans une variable string , tu détermines la position du mot dans cette chaine et tu selectionnes ensuite les caractères dans la cellule en fonction de la longueur du mot ?

Je te tiens au courant
Merci encore
A+
 
Re : Changer partiellement la couleur d'un texte dans une cellule

Bonsoir XLTOF,

Je ne savais pas qu'il y avait un service de nuit sur Excel Downloads ;-))
Vous ne dormez jamais ?
En tout cas quelle rapidité. C'est mieux que SOS médecins !!! merci à vous !
Pour ma part, sauf pendant mes congés, je n'ai pas le loisir de me joindre à la fête en journée... alors j'écourte un peu mes nuits pour pouvoir pratiquer, moi aussi, la passion qui nous anime tous un peu ici...

Si je comprend bien le principe tu charge l'ensemble de la cellule dans une variable string , tu détermines la position du mot dans cette chaine et tu selectionnes ensuite les caractères dans la cellule en fonction de la longueur du mot ?
Oui, en gros, c'est à peu près ça 🙂

Je cherche d'abord les cellules contenants LeMot.
Le texte de chacune d'elles est traité ensuite dans la procédure Modif().
Dans cette procédure, je situe LeMot dans la chaîne de caractères (par sa position de départ et sa longueur effectivement) et je définie ensuite les propriétés d'affichage des caractères correspondants. Je procéde ici dans une boucle (Do...Loop) dans l'hypothèse où LeMot apparaîtrait plusieurs fois dans une même cellule.

Cordialement,
 
Re : Changer partiellement la couleur d'un texte dans une cellule

Salut à vous

J'ai testé ta solution MydearFriend
ça marche très bien.

Bravo pour votre réactivité à tous et encore merci
je pense que je vais trainer très souvent sur ce forum désormais ! ;-))

A bientôt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour