Dépassement de capacité
Résolu
boboros
-
boboros -
boboros -
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.
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.
1 réponse
-
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+-
-
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 -
-