couleur de ligne en fonction du contenu d1 cellule

Toutou

XLDnaute Occasionnel
Re bonjour à tous,
voilà, je dois gérer dans un tableau des commandes: refusées, accéptées ou en cours. Un tableau regroupe totues les données des commandes et à la fin de chaque ligne une cellule contient une des valeurs suivantes:
_en cours
_acceptées
_refusées

Mais pour que cela soit plus voyant, je voudrais modifié la couleur du texte de la ligne en fonction de la valeur affiché à la fin des lignes.
J'ai essayé avec une boucle If comme suit:

Dim coul As Range

If coul.Value = 'accepté' Then
coul.Row.Font.ColorIndex = 43

ElseIf coul.Value = 'refusé' Then
coul.Row.Font.ColorIndex = 5

ElseIf coul.Value = 'en attente' Then
coul.Row.Font.ColorIndex = 3

Mais ce n'est apparement pas la bonne méthode: la propriété 'Row' semble fausse; quelle propriété dois-je utiliser?

Merci d'avance, a +
Toutou ;)
 

anuky

XLDnaute Occasionnel
Salut toutou,

je te propose le code suivant pour résoudre ton problème de mise forme qui se trouve également dans le fichier joint (s'il passe):

Sub MiseEnForme
'
' MiseEnForme
' Macro enregistrée le 25/10/2005 par Guillaume JOLLY
'

Dim jDepart As Integer
Dim FeuilleDepart As Variant

Set FeuilleDepart = ActiveWorkbook.Sheets('feuil1')


jDepart = 1

'parcours du tableau
Do While FeuilleDepart.Cells(jDepart, 1).Value <> ''

'remplissage des cellule de la feuille d'arrivée

'si 'accepé' la cellule de la valeur est coloré en mauve
If FeuilleDepart.Cells(jDepart, 1) = 'accepté' Then
FeuilleDepart.Rows(jDepart).Interior.ColorIndex = 39
End If

'si 'refusé la cellule de la valeur est coloré en vert pâle
If FeuilleDepart.Cells(jDepart, 1) = 'refusé' Then
FeuilleDepart.Rows(jDepart).Interior.ColorIndex = 43
End If

'si en attente la cellule de la valeur est coloré en bleu pâle
If FeuilleDepart.Cells(jDepart, 1) = 'en attente' Then
FeuilleDepart.Rows(jDepart).Interior.ColorIndex = 33
End If


'mise à jour des compteur de position
jDepart = jDepart + 1
Loop


End Sub

C'est une boucle qui parcour ton tableau tant qu'elle ne trouve pas de case vide. Adapte là à ton problème.

N'hésite pas a demander si tu te pose des questions

Bon courrage
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Toutou, bonjour le forum,

tu ne définis par coul dans ta macro. Dans l'exemple qui suit, j'ai considéré que la dernière colonne éditée de chaque ligne était F (tu adapteras...) :


Sub Macro1()
Dim coul As Range

For Each coul In Range('F1:F' & Range('F65536').End(xlUp).Row) 'colonne à adapter

If coul.Value = 'accepté' Then
coul.EntireRow.Font.ColorIndex = 43

ElseIf coul.Value = 'refusé' Then
coul.EntireRow.Font.ColorIndex = 5

ElseIf coul.Value = 'en attente' Then
coul.EntireRow.Font.ColorIndex = 3

End If

Next coul
End Sub

Édition

Bonjour Anuki on s'est croisés...

Message édité par: Robert, à: 25/10/2005 16:28
 

anuky

XLDnaute Occasionnel
je vais essayer de joindre à nouveau le fichier, si ça ne marche pas tu as toujour le code

A+ [file name=Classeur1_20051025162531.zip size=7205]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20051025162531.zip[/file]
 

Pièces jointes

  • Classeur1_20051025162531.zip
    7 KB · Affichages: 36

Nikolaï

XLDnaute Nouveau
Bonjour

Tu peux faire cela si tu veux.

Sub toto()
Dim CELL As Range
For Each CELL In Range('A1:A10')
If CELL = 'accepté' Then
Range(CELL.Row & ':' & CELL.Row).Font.ColorIndex = 43
ElseIf CELL = 'refusé' Then
Range(CELL.Row & ':' & CELL.Row).Font.ColorIndex = 5
ElseIf CELL = 'en attente' Then
Range(CELL.Row & ':' & CELL.Row).Font.ColorIndex = 3
End If
Next
End Sub

A plus tard
Christophe
 

Gael

XLDnaute Barbatruc
Bonjour Toutou, Bonjour Anuky, bonjour Robert,

Pourquoi pas tout simplement avec une MFC.

Si la dernière cellule est en colonne I par exemple, une MFC sur toutes les colonnes de A à I avec 3 formules du type:

=$I3='Accepté' ==> motif couleur 1
=$I3='En cours' ==> motif Couleur 2
=$I3='Refusé' ==> motif couleur 3

A recopier sur toutes les lignes souhaitées.

@+

Gael

Pardon, Nikolaï, je ne t'avais pas vu, Bonjour à toi aussi.

@+

Gael

Message édité par: Gael, à: 25/10/2005 16:32
 
G

gibi

Guest
bonjour,



ceci marche mieux


For Each l In Selection.Rows
If l.Cells(1, 1).Value = 'accepté' Then

l.Font.ColorIndex = 43

ElseIf l.Cells(1, 1).Value = 'refusé' Then
l.Font.ColorIndex = 5

ElseIf l.Cells(1, 1).Value = 'en attente' Then
l.Font.ColorIndex

End If

Next

a adapter bien sur
 

Toutou

XLDnaute Occasionnel
Bobnjour ou Re-bonjour à tous,
Merci de vous être arrété sur mon problème,
pour l'instant je n'ai essayé que la proposittion de Robert (qui fonctionne bien) car c'était la plus rapide à réaliser.
Je vous tiendrait au courant surement demain pour les autres codes;
Encore merci beucoup pour votre aide précieuse, bonne soirée,
@ +
Toutou
;)
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 519
dernier inscrit
Thomas_grc11