Dépassement de capacité

Résolu/Fermé
boboros - 1 août 2013 à 12:18
 boboros - 2 août 2013 à 10:59
Bonjour,

J'ai réalisé un programme pour colorier les cellules dans Excel en fonction du mot que je mets dans une colonne.
Malheureusement, après la ligne 250 cela ne marche plus et on me met qu'il y a un problème de capacité.

Merci d'avance de m'apporter une solution.

Je vous joins mon code ci-dessous:

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

If Intersect(Target, Range("AA1:AA5000")) Is Nothing Then: Exit Sub

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

Select Case Target
Case Is = "A"
plage.Interior.ColorIndex = 48 'Gris pour "A"'
Case Is = "B"
plage.Interior.ColorIndex = 2 'Blanc pour "B"'
Case Is = "C"
plage.Interior.ColorIndex = 10 'Vert pour "C"'
Case Is = "D"
plage.Interior.ColorIndex = 10 'Vert pour "D"'
Case Is = "E"
plage.Interior.ColorIndex = 33 'Bleu pour "E"'
Case Is = "F"
plage.Interior.ColorIndex = 45 'Orange pour "F"'
Case Is = "G"
plage.Interior.ColorIndex = 3 'Rouge pour "G"'
Case Is = "H"
plage.Interior.ColorIndex = 3 'Rouge pour "H"'
Case Is = "I"
plage.Interior.ColorIndex = 10 'Vert pour "I"'
Case Else
plage.Interior.ColorIndex = -4142 'Enlève la couleur'

End Select

Set plage = Nothing
End Sub

########################################################

Encore merci.
A voir également:

1 réponse

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
1 août 2013 à 12:34
Bonjour,

ça doit être après la ligne 256 (2^8...)
Tu as défini lig comme étant un octet. Ainsi, il ne peut pas dépasser 255.

Mets-le en Integer, en Variant ou en Double, ou alors ne lui affecte pas de type.

PS : je trouve un peu curieux d'utiliser Worksheet_Change pour ça

A+
1
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
1 août 2013 à 16:27
Jusqu'à Excel 2003 tu peux utiliser:
Dim lig As Integer, plage As Range

A partir d'Excel 2007 il vaut mieux utiliser :
Dim lig As Long, plage As Range
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
2 août 2013 à 09:38
Salut Patrice,

J'ajouterai qu'avec les capacités des ordinateurs actuels, la différence entre Integer et Long étant quasi incommensurable, il convient de toujours utiliser Long.
En effet, même sur 2003, on peux dépasser les 32000 lignes et des...
Il faut aussi penser à la portabilité de vos applications, excel 2003 ayant déjà 10 ans.

Bonne journée
0
Merci beaucoup à tous pour vos remarques.
Mon programme marche comme je veux maintenant :)
Encore Merci
0