Besoin d'un coup de pouce pour une macro

Résolu/Fermé
dmadkami - 18 août 2010 à 17:25
 dmadkami - 19 août 2010 à 11:56
Bonjour,

voilà j'ai un fichier excel qui répertorie tous les produits chimiques que j'utilise.
J'ai fais une macro pour "allumer" en rouge la ligne qui correspond à mon produit dès que j'ai une certaine donnée dans une cellule : des colonnes CU à DC j'entre une information sur la toxicité de mon produit et selon la donnée je veux que toute la ligne se colorie en rouge. j'ai tapé le code suivant mais ça déconne et je trouve pas pourquoi (ça fait deux jours que je suis deçu, je suis un débutant en macro, alors j'ai besoin d'aide):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Byte, plage As Range

If Intersect(Target, Range("CU3:CU999")) Is Nothing Then: Exit Sub

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

Select Case Target
Case Is = "R39 Danger d'effets irréversibles très graves."
plage.Interior.ColorIndex = 3
Case Is = "R40 Effets cancérogène suspecté : preuves insuffisantes."
plage.Interior.ColorIndex = 3
Case Is = "R45 Peut provoquer le cancer."
plage.Interior.ColorIndex = 3
Case Is = "R46 Peut provoquer des altérations génétiques héréditaires."
plage.Interior.ColorIndex = 3
Case Is = "R48 Risque d'effets graves pour la santé en cas d'exposition prolongée."
plage.Interior.ColorIndex = 3
Case Is = "R49 Peut provoquer le cancer par inhalation."
plage.Interior.ColorIndex = 3
Case Is = "R60 Peut altérer la fertilité."
plage.Interior.ColorIndex = 3
Case Is = "R61 Risque pendant la grossesse d'effets néfastes pour l'enfant."
plage.Interior.ColorIndex = 3
Case Is = "R62 Risque possible d'altération de la fertilité."
plage.Interior.ColorIndex = 3
Case Is = "R63 Risque possible pendant la grossesse d'effets néfastes pour l'enfant."
plage.Interior.ColorIndex = 3
Case Is = "R64 Risque possibles pour les bébés nourris au lait maternel."
plage.Interior.ColorIndex = 3
Case Is = "R68 Possibilité d'effets irréversibles."
plage.Interior.ColorIndex = 3
Case Else
plage.Interior.ColorIndex = -4142
End Select
Set plage = Nothing

End Sub


La ligne "lig = Target.Row" s'affiche surlignée en jaune donc je pense que l'erreur vient de là mais je vois pas où.
Merci d'avance pour votre aide
A voir également:

3 réponses

bacus13 Messages postés 30 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 1 septembre 2010 8
Modifié par bacus13 le 18/08/2010 à 17:52
Déjà, déclare lib comme Integer ou Long car si tu vas jusqu'à la ligne 999 tu vas avoir une erreur Dépassement de Capacité

Ensuite, tu peux me donner le numéro de l'erreur qui apparait ?
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
18 août 2010 à 18:31
Bonjour,

Dim lig As Byte ----> lig ne peut être supérieur à 255

Il faut donc déclarer lig as Integer


Bonne continuation
0
"f894009 44Messages postés

25 novembre 2007Date d'inscription

18 août 2010Dernière intervention
18 aoû 2010 à 18:31
Bonjour,

Dim lig As Byte ----> lig ne peut être supérieur à 255

Il faut donc déclarer lig as Integer "

Merci pour ta réponse j'ai entré le code suivant mais ça ne marche toujours pas:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim lig As Integer, plage As Range

If Intersect(Target, Range("CU3:CU999")) Is Nothing Then: Exit Sub

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

Select Case Target
Case Is = "R39 Danger d'effets irréversibles très graves."
plage.Interior.ColorIndex = 3
Case Is = "R40 Effets cancérogène suspecté : preuves insuffisantes."
plage.Interior.ColorIndex = 3
Case Is = "R45 Peut provoquer le cancer."
plage.Interior.ColorIndex = 3
Case Is = "R46 Peut provoquer des altérations génétiques héréditaires."
plage.Interior.ColorIndex = 3
Case Is = "R48 Risque d'effets graves pour la santé en cas d'exposition prolongée."
plage.Interior.ColorIndex = 3
Case Is = "R49 Peut provoquer le cancer par inhalation."
plage.Interior.ColorIndex = 3
Case Is = "R60 Peut altérer la fertilité."
plage.Interior.ColorIndex = 3
Case Is = "R61 Risque pendant la grossesse d'effets néfastes pour l'enfant."
plage.Interior.ColorIndex = 3
Case Is = "R62 Risque possible d'altération de la fertilité."
plage.Interior.ColorIndex = 3
Case Is = "R63 Risque possible pendant la grossesse d'effets néfastes pour l'enfant."
plage.Interior.ColorIndex = 3
Case Is = "R64 Risque possibles pour les bébés nourris au lait maternel."
plage.Interior.ColorIndex = 3
Case Is = "R68 Possibilité d'effets irréversibles."
plage.Interior.ColorIndex = 3
Case Else
plage.Interior.ColorIndex = -4142
End Select
Set plage = Nothing

End Sub
0
bacus13 Messages postés 30 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 1 septembre 2010 8
19 août 2010 à 11:17
qu'est ce qui ne marche pas ? et quel est le numero d'erreur ?
0
une erreur de ma part,
le code est bon et tout fonctionne parfaitement
Merci pour votre aide
0