Excel - VB - Colorer une ligne
Résolu
KraaaL
-
KraaaL -
KraaaL -
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...)
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:
- Excel - VB - Colorer une ligne
- Aller à la ligne excel - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Partager photos en ligne - Guide
- Word et excel gratuit - Guide
6 réponses
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)
Pour l'installer:
clic droit sur l'ongleet de ta feuille de travail
sélectionne "code"
copie colle la macro ci dessus
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
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 ;)
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 ;)
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
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
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
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
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
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
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.
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.
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.
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.