Colorier des cellules avec une macro et/ou avec Privatesub
Le
captain-kirk
Bonjour à tous
Je suis en train de réaliser un tableau de bord social dans le cadre d'un stage et j'aurai besoin de votre aide concernant le coloriage de cellules à l'aide d'une macro.
J'ai un tableau qui est une base de données des salariés
-La colonne E donne des informations sur le sexe de la personne : Homme ou Femme ( elle s'étend de E6 à E95)
-La colonne H donne des informations sur la catégorie socioprofessionnelle du salarié (Ouvrier, Employé, Agent de maîtrise, Cadre) (H6 à H95)
-La colonne K contient les salaires. Je voudrais mettre une couleur en fonction du sexe de la personne (bleu clair pour les hommes ou rose pour les femmes). (K6 à K95)
-La colonne L contient exactement les mêmes salaires. Mais cette fois-ci, je voudrais mettre une couleur en fonction de la catégorie socioprofessionnelle auquelle appartient le salairé. (L6 à L95)
J'a intégré le code suivant pour colorier les cellules en fonction du sexe de la personne:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Byte, plage As Range
If Intersect(Target, Range("E6:E95")) Is Nothing Then: Exit Sub
lig = Target.Row
Set plage = Range(Cells(lig, 11), Cells(lig, 11))
Select Case Target
Case Is = "Homme"
plage.Interior.ColorIndex = 41
Case Is = "Femme"
plage.Interior.ColorIndex = 38
Case Else
plage.Interior.ColorIndex = -4142 ' enlève la couleur
End Select
Set plage = Nothing
End Sub
Ce code marche super bien. J'ai donc fait exactement le même mais pour les catégories socioprofessionnelles:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Byte, plage As Range
If Intersect(Target, Range("H6:H95")) Is Nothing Then: Exit Sub
lig = Target.Row
Set plage = Range(Cells(lig, 12), Cells(lig, 12))
Select Case Target
Case Is = "Ouvrier"
plage.Interior.ColorIndex = 6
Case Is = "Cadre"
plage.Interior.ColorIndex = 3
Case Is = "Employé"
plage.Interior.ColorIndex = 4
Case Is = "Agent de maîtrise"
plage.Interior.ColorIndex = 8
Case Else
plage.Interior.ColorIndex = -4142 ' enlève la couleur
End Select
Set plage = Nothing
End Sub
Normalement ça devrait marcher mais ça coince quand je veux rentrer les données dans la colonne H car l'ordinateur me marque Erreur de compilation : Nom ambigu détecté : Worksheet_Change
Peut-on mettre deux Private Sub dans une même feuille? Peut-on faire des macros au lieu d'utiliser Private sub. Si oui comment? (car j'y connais pratiquement rien)
Merci
Je suis en train de réaliser un tableau de bord social dans le cadre d'un stage et j'aurai besoin de votre aide concernant le coloriage de cellules à l'aide d'une macro.
J'ai un tableau qui est une base de données des salariés
-La colonne E donne des informations sur le sexe de la personne : Homme ou Femme ( elle s'étend de E6 à E95)
-La colonne H donne des informations sur la catégorie socioprofessionnelle du salarié (Ouvrier, Employé, Agent de maîtrise, Cadre) (H6 à H95)
-La colonne K contient les salaires. Je voudrais mettre une couleur en fonction du sexe de la personne (bleu clair pour les hommes ou rose pour les femmes). (K6 à K95)
-La colonne L contient exactement les mêmes salaires. Mais cette fois-ci, je voudrais mettre une couleur en fonction de la catégorie socioprofessionnelle auquelle appartient le salairé. (L6 à L95)
J'a intégré le code suivant pour colorier les cellules en fonction du sexe de la personne:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Byte, plage As Range
If Intersect(Target, Range("E6:E95")) Is Nothing Then: Exit Sub
lig = Target.Row
Set plage = Range(Cells(lig, 11), Cells(lig, 11))
Select Case Target
Case Is = "Homme"
plage.Interior.ColorIndex = 41
Case Is = "Femme"
plage.Interior.ColorIndex = 38
Case Else
plage.Interior.ColorIndex = -4142 ' enlève la couleur
End Select
Set plage = Nothing
End Sub
Ce code marche super bien. J'ai donc fait exactement le même mais pour les catégories socioprofessionnelles:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Byte, plage As Range
If Intersect(Target, Range("H6:H95")) Is Nothing Then: Exit Sub
lig = Target.Row
Set plage = Range(Cells(lig, 12), Cells(lig, 12))
Select Case Target
Case Is = "Ouvrier"
plage.Interior.ColorIndex = 6
Case Is = "Cadre"
plage.Interior.ColorIndex = 3
Case Is = "Employé"
plage.Interior.ColorIndex = 4
Case Is = "Agent de maîtrise"
plage.Interior.ColorIndex = 8
Case Else
plage.Interior.ColorIndex = -4142 ' enlève la couleur
End Select
Set plage = Nothing
End Sub
Normalement ça devrait marcher mais ça coince quand je veux rentrer les données dans la colonne H car l'ordinateur me marque Erreur de compilation : Nom ambigu détecté : Worksheet_Change
Peut-on mettre deux Private Sub dans une même feuille? Peut-on faire des macros au lieu d'utiliser Private sub. Si oui comment? (car j'y connais pratiquement rien)
Merci

Poser une question


vous ne pouvez pas téléporter deux Change dans le même CodeModule de
la feuille Enterprise
Veuillez placer vos vaisseaux dans le même Change
LSpoke ;-)
On 21 juil, 10:19, captain-kirk wrote:
Tu as du mettre 2 fois Private Sub Worksheet_Change(ByVal Target As Range)
pour traiter les 2 cas
Il faut n'en mettre qu'un et inclure tes 2 codes l'un à la suite de l'autre
pour finir avec un End Sub
Ainsi :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Byte, plage As Range
If Intersect(Target, Range("E6:E95")) Is Nothing Then: GoTo Suite
lig = Target.Row
Set plage = Range(Cells(lig, 11), Cells(lig, 11))
Select Case Target
Case Is = "Homme"
plage.Interior.ColorIndex = 41
Case Is = "Femme"
plage.Interior.ColorIndex = 38
Case Else
plage.Interior.ColorIndex = -4142 ' enlève la couleur
End Select
Set plage = Nothing
Suite:
If Intersect(Target, Range("H6:H95")) Is Nothing Then: Exit Sub
lig = Target.Row
Set plage = Range(Cells(lig, 12), Cells(lig, 12))
Select Case Target
Case Is = "Ouvrier"
plage.Interior.ColorIndex = 6
Case Is = "Cadre"
plage.Interior.ColorIndex = 3
Case Is = "Employé"
plage.Interior.ColorIndex = 4
Case Is = "Agent de maîtrise"
plage.Interior.ColorIndex = 8
Case Else
plage.Interior.ColorIndex = -4142 ' enlève la couleur
End Select
Set plage = Nothing
End Sub
Celà devrait convenir
Dis moi !!!!!!
mais toi tu avais déjà ton brevet de téléportation, ...
;o)
--
LSpoke
(mieux vaut apprendre à pecher que donner un poisson)
On 21 juil, 11:10, FFO
Que de distinction dont je n'ais pas conscience
Merci de me le rappeler !!!!
Merci à vous mais je crois que je vais devoir céder ma place de Capitaine parce que ça ne marche pas du tout.
Aucune des cellules ne se met en couleur. Pourtant, les codes couleurs sont bons.
Comment peut-on transposer ça en macro?