Mise en couleur d'une partie d'un texte dans une cellule

WocaM

XLDnaute Junior
Bonjour,

N'ayant pas trouvé ce que je cherche sur le forum, je pose donc mon problème

j'ai crée un fichier pour le planning de notre équipe et je souhaiterai mettre en couleur de façon automatique une partie d'un texte dans une cellule lorsque qu'un texte particulier est renseigné et cela évidement sur toutes les cellules qui compose la semaine (1 feuille par semaine)

J'ai déjà un bout de code qui me permet de modifier automatiquement une cellule quand on y tape un texte particulier mais cela prend en charge la cellule entière alors que moi là, je voudrais juste une partie de ce texte. Cette modification de couleur/format, etc.. est activé lorsque l'on clique sur un bouton

voila mon bout de code avec mes cellules qui se modifient si la cellule contient le mot "RA" ou si la cellule est de couleur de fond rouge:
Code:
'modification couleur texte/couleur de fond ou type de texte
    With Selection
    For rwIndex = 1 To 13
    For colIndex = 1 To 6
        With Selection.Cells(rwIndex, colIndex)
           If .Value = "RA" Then .Font.ColorIndex = 2
           If .Interior.ColorIndex = 3 Then .Font.ColorIndex = 2 'Blanc/fond rouge
    End With
    Next colIndex
    Next rwIndex
    End With

merci d'avance
WocaM
 

tototiti2008

XLDnaute Barbatruc
Re : Mise en couleur d'une partie d'un texte dans une cellule

Bonjour WocaM,

mais cela prend en charge la cellule entière alors que moi là, je voudrais juste une partie de ce texte
ça veut dire quoi, que tu ne veux mettre en couleur de texte Blanc que certains caractères ? lesquels ? "RA" ? je suppose que tu souhaites également traiter les cellules qui contiennent les lettres RA en plus d'autres caractères ?
 

WocaM

XLDnaute Junior
Re : Mise en couleur d'une partie d'un texte dans une cellule

Merci de ta réponse rapide, je vais essayer d’être plus clair

dans la cellule il y a plusieurs lignes qui peuvent être écrite correspondant aux différentes choses que l'on peut être amené à faire au cours de la journée et je souhaiterais pouvoir mettre en rouge par exemple une partie du texte, voila un exemple de ce qui peut se trouvé dans une cellule

"Point sur Vérification ponts SF6 Morbras et OT respectifs
Point sur Auxiliares Zone Morbras et OT respectifs"

et il faudrait que la 2ieme ligne soit rouge par exemple
j'arrive avec mon code à modifier une cellule avec un texte particulier que je spécifie dans le VBA mais cela s'applique uniquement sur la cellule entière et non sur une partie du texte de la cellule
 

WocaM

XLDnaute Junior
Re : Mise en couleur d'une partie d'un texte dans une cellule

pas le temps d’écrire une réponse que déjà une solution met proposé

Pierrot93 je vois le principe de fonctionnement mais pour mon projet il faudrait que cela agisse sur plusieurs cellules sur plusieurs colonnes
mon fichier contient une colonne par jour (5 pour la semaine) et plusieurs lignes (par nombre de personnes dans l’équipe)

je ne vois pas trop comment intégrer ton code au mien (qui arrive a balayer toutes mes cellules)

merci de tes éclaircissement

Cordialement
WocaM
 

WocaM

XLDnaute Junior
Re : Mise en couleur d'une partie d'un texte dans une cellule

j'ai essayé d’adapter ton code au mien cela marche si je met un stop dans le code
mais sinon cela me fais une boucle infini donc c'est pas encore ça

Code:
Dim t As String, x As Range
t = "essai"
 With Selection
    For rwIndex = 1 To 13
    For colIndex = 1 To 6
        With Selection.Cells(rwIndex, colIndex)
           If .Value = "RA" Then .Font.ColorIndex = 2
           If .Interior.ColorIndex = 3 Then .Font.ColorIndex = 2 'Blanc/fond rouge
           Set x = .Find(t, , xlValues, xlPart, , , False)
            If Not x Is Nothing Then
            Do
                 x.Characters(InStr(x, t), Len(t)).Font.ColorIndex = 3
           Set x = .FindNext
            Loop While Not x Is Nothing
            End If
        End With
    Next colIndex
    Next rwIndex
    End With
 

Pierrot93

XLDnaute Barbatruc
Re : Mise en couleur d'une partie d'un texte dans une cellule

Re,

oui, normal tu as retiré le "replace", ce qui fait que la valeur est toujours présente et retrouvée par les "findnext"... il faut modifier dans ce sens...
Code:
    Set x = .Find(t, , xlValues, xlPart, , , False)
    If Not x Is Nothing Then
        p = x.Address
        Do
            'tes instructions
            Set x = .FindNext(x)
        Loop While x.Address <> p
    End If

et rajouter cette déclaration de variable :
Code:
Dim p As String
 

WocaM

XLDnaute Junior
Re : Mise en couleur d'une partie d'un texte dans une cellule

ça marche nickel sauf juste une chose, si c'est pas trop te demander

là dans la variable "t" j'ai mis "essai"
or si je marque "ESSAI" ou "Essai" par exemple dans ma cellule
il me colore le début de mon texte soit les 5 premiers caractères

il n'y a pas un moyen pour que cela ne prenne pas la casse du mot ou phrase à mettre en couleur
enfin c'est vraiment du bonus car sinon c'est parfait

Merci beaucoup
WocaM
 

Pierrot93

XLDnaute Barbatruc
Re : Mise en couleur d'une partie d'un texte dans une cellule

Re,

euh, pas trop compris dans quel sens tu veux utiliser la casse, maire regarde du coté des fonctions vba UCase et LCase, elles devraient résoudre ce problème... A noter que le dernier argument de la méthode "FIND" ( le False) permet d'ignorer la casse dans la recherche..

bonne soirée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 478
Membres
103 556
dernier inscrit
titboine