Excel - VB - Colorer une ligne

Résolu/Fermé
KraaaL - 16 sept. 2008 à 10:50
 KraaaL - 16 sept. 2008 à 16:51
Bonjour,

Il m'arrive souvent de parcourir votre forum (en posant des questions à Google...) mais là je ne trouve pas une réponse pouvant m'aider.

Donc voici mon problème (en espérant que quelqu'un puisse m'aider...) :
(je vais essayer de bien m'exprimer parce que je suis super nul en informatique)

Sur une feuille dans Excel je dois :

Colorer des lignes de 6 couleurs différentes en fonction des valeurs d'une cellule de cette ligne.
Les lignes commencent à la colonne A et se terminent à la colonne P.

La cellule qui détermine la couleur de la ligne se trouve en colonne J.

Les couleurs que la ligne doit prendre sont :

Jaune pâle pour "En attente"
Jaune foncé pour "Déclinée"
Bleu clair pour "En attente clt"
Vert clair pour "Gagnée"
Rouge pour "Perdue"
Vert foncé pour "Terminée"

Il y a plus d'une centaine de ligne.
Début à la ligne 6.

Fonctionnement du fichier :

On remplie les case A6 à P6 et en fonction de la valeur de J6, la ligne (de A6 à P6) passe dans l'une des 6 couleurs citées ci-dessus.
Idem pour la ligne 7, On remplie les cases A7 à P7 et en fonction de la valeur de P7, la ligne (de A7 à P7) passe dans l'une des 6 couleurs.
Idem pour les lignes 8, 9... jusqu'à la ligne 156.

Autres informations :

Je ne peux pas regroupé les 2 différents jaune ni les 2 différents vert.
Je ne peux pas utiliser la mise en forme conditionnelle.
Je bosse sur Excel 2003.

J'ai bien trouvé ça comme formule :

If Target.Value = "GHV" Then
Range(Target.Address, Target.Offset(0, 3).Address).Interior.Color = RGB(185, 253, 208)
End If

Mais le problème c'est que cela colorier la case qui à la valeur "GHV" et seulement 3 cases à droite...
Et en plus cela fonctionne n'importe ou dans la feuille... (chose que je ne souhaite pas)

Si une âme charitable veut bien se pencher sur mon problème, je lui en serait plus que fort reconnaissant.
D'avance merci.
Bonne journée.

KraaaL
(où l'incompétent en informatique...)
A voir également:

6 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
16 sept. 2008 à 14:02
Bonjour tout le monde

la macro ci dessous colorie la ligne( [6-156] entre colonnes A et P suivant la valeur indiquée dans la colonne J . La couleur est annulée si une nouvelle saisie n'est pas valable (critères sensibles à la casse)

comme l'indique Papou, tu as intérêt a créer une liste déroulante (si tu ne sais pas comment faire, regarde dans les astuces du site CCM)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Byte, plage As Range

If Intersect(Target, Range("J6:J156")) Is Nothing Then: Exit Sub

lig = Target.Row
Set plage = Range(Cells(lig, 1), Cells(lig, 16))

Select Case Target
    Case Is = "En attente"
        plage.Interior.ColorIndex = 19 'Jaune pâle pour "En attente"
     Case Is = "Déclinée"
        plage.Interior.ColorIndex = 27 'Jaune foncé pour "Déclinée"
    Case Is = "En attente clt"""
        plage.Interior.ColorIndex = 34 'Bleu clair pour "En attente clt"
    Case Is = "Gagnée"
        plage.Interior.ColorIndex = 35 'Vert clair pour "Gagnée"
    Case Is = "Perdue"
        plage.Interior.ColorIndex = 3 'Rouge pour "Perdue"
    Case Is = "Terminée"
        plage.Interior.ColorIndex = 31 'Vert foncé pour "Terminée"
    Case Else
        plage.Interior.ColorIndex = -4142 ' enlève la couleur
End Select

Set plage = Nothing
End Sub


Pour l'installer:

clic droit sur l'ongleet de ta feuille de travail
sélectionne "code"
copie colle la macro ci dessus
3
Merci beaucoup à tous !!!!

RailBird, j'ai compris le principe de ta macro et ai réussi à l'utiliser merci !!

Michel_m, après avoir donné un nom à la macro j'ai pu l'utiliser et ça marche également !!

Papou79, comment dire... Tu m'as fait tout le boulot !!
J'ai plus qu'à calquer mon fichier sur celui que tu m'as donné et ça roule !!

Je vais donc prendre ta solution (ne m'en voulait pas RailBird et Michel_m mais je n'ai pas suffisamment de temps pour me mettre au VB donc je prend le fichier déjà fait)

En tous cas un grand merci à vous tous !!!
En parcourant le forum ça m'a souvent aidé à trouver des réponses à mes soucis (exemple pour le listes déroulante de choix que je maîtrise maintenant), mais là je ne pensais pas qu'on m'aurait solutionné mon problème en moins d'une journée !!

Encore merci à tous et un grand bravo à Commentcamarche.net c'est vraiment un site super !!!

Merci beaucoup à tous !!
A bientôt,

Bien à vous,

KraaaL


PS : on peut locker ce topic et le mettre dans les résolus ;)
2
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 243
16 sept. 2008 à 11:14
bonjour

je te fournis une macro complementaire qui permet la mise en route de MFC pratiquement illimitées
https://www.cjoint.com/?jqlksHaX1h
Macro complementaire : Menu Outils / Macro complementaire / Parcourir / Cocher la macro

un fichier exemples : la feuille 2 t'interresse ainsi que la feuille MFC
https://www.cjoint.com/?jqlmGRbOFG

cette macro ne fait pas que cela, elle fait des MFC sonores, Par des dommentaires, Par des images, mais etant au boulot, je n'ai pas le fichier exemples complet
1
Sub Coloriage()

For i = 1 To 20
For j = 1 To 200

If ActiveSheet.Cells(i, j) = "GHV" Then
ActiveSheet.Cells(i, j).Interior.Color = RGB(185, 253, 208)
End If

Next
Next

End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci pour vos réponses aussi rapides !

wilfried_42 :

j'ai fait exactement ce que tu m'as dit avec le premier fichier mais rien ne se passe...
Je ne peux toujours pas mettre plus de 3 MFC.

Pour le second fichier, j'ai à peu près compris comment celui-ci fonctionne, j'essaie de l'adapter à mon fichier.
Je te ferai un retour dès que j'aurai terminé.

RailBird :

Peux tu m'expliquer à quoi sert ta macro ?
Parce que je l'ai exécutée mais rien ne se passe...
Peux tu me donner plus d'informations STP ??

Encore merci à vous 2,
Bon app' !

KraaaL
0
Papou79 Messages postés 36 Date d'inscription samedi 29 mars 2008 Statut Membre Dernière intervention 13 novembre 2008 12
16 sept. 2008 à 13:42
Bonjour Kraaal, les participants,

Je t'envoie un fichier exemple avec tes critères.
La liste des états se trouve en feuille 2. Les cellules "A6:A156" ont une liste déroulante contenant tes 6 états possibles. Il te sera très simple de modifier la liste le cas échéant.
La macro se déroule après saisie dans une des cellules de la feuille 1. Si la cellule modifiée n'est pas dans la zone "A6:P156", elle n'est pas exécutée.

Cliques sur ce lien :
http://www.cijoint.fr/cjlink.php?file=cj200809/cijqync3a8.xls

Espérant t'avoir aidé.

Cordialement.
0
En gros, ma macro elle sert à colorer la/les cellules contenant le chaine "GHV" en vert clair ce qui était ta demande.
Sinon rien ne se passe.
Elle s'éxecute pour les lignes 1 à 20 et les colonnes 1 à 200 d'ailleurs faudrait changé par :

Sub Coloriage()

For i = 1 To 200
For j = 1 To 20

If ActiveSheet.Cells(i, j) = "GHV" Then
ActiveSheet.Cells(i, j).Interior.Color = RGB(185, 253, 208)
End If

Next
Next

End Sub

Maintenant la macro parcourt de la ligne 1 à 200, pour les colonnes 1 à 20.
Il est possible d'améliorer ce code afin de l'adapter à ton besoin.

Je pense que c'est le type de code que tu voulais.
0