VBA Erreur 13 quand tu me tiens...

debutantVBA Messages postés 2 Statut Membre -  
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je vais finalement vous exposer mon propre problème car après avoir parcouru tous les forum d'aide, je n'ai pas trouvé de réponse à mon problème.
Voici le code ci-dessous qui me donne du fil à retordre :

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

If Intersect(Target, Range("T9:T5000")) Is Nothing Then: Exit Sub

Lig = Target.Row
Set plage = Range(Cells(Lig, 1), Cells(Lig, 21))

Select Case Target
Case Is = "PIECES DEMANDEES"
plage.Interior.ColorIndex = 7
Case Is = "A TRAITER"
plage.Interior.ColorIndex = 41
Case Is = "REAL EN COURS"
plage.Interior.ColorIndex = 6
Case Is = "INJECTEE"
plage.Interior.ColorIndex = 8
Case Is = "SOLDE"
plage.Interior.ColorIndex = 16
Case Is = "ENVOYE A PARIS"
plage.Interior.ColorIndex = 3
Case Is = "EFT PAYEE"
plage.Interior.ColorIndex = 4

End Select

Set plage = Nothing
End Sub

Ce code me permet de colorier les lignes de mon tableau suivant les données qui sont dans la colonne T. Le problème, c'est que lorsque je veux supprimer une ligne de mon tableau, j'ai un message d'erreur CODE 13 qui s'affiche et je ne trouve pas de solution (je suis débutant).

Je fais donc appel à votre aide "les PRO-grammeurs".
Merci d'avance A+

1 réponse

gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 731
 
bonjour

Tout d'abord, changes :

Dim Lig As Byte
par
Dim Lig As Long

car avec Byte tu ne peux pas dépasser 256 lignes.

Ensuite si tu supprimes une ligne, tu n'as rien à colorer et donc tu mets ceci en début :

If Target.Count > 1 Then Exit Sub


Tu sortiras de ta macro si plus d'une cellule est concernée car dans ce cas tu ne peux pas tester ta valeur ce qui provoque ton erreur.
0