dépassement de capacité

  • Initiateur de la discussion Initiateur de la discussion jexcel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jexcel

XLDnaute Nouveau
bonjour à tous,

je galère sur une macro qui m'affiche dépassement de capacité au bout de 7000 lignes.

je pense qu'il y a surrement une facon d'ecrire le code plus simplement :

merci d'avance,

jean

Sub retraitement()
Dim compteur1 As Integer
Dim compteur2 As Integer
Dim a As Integer
a = 4
Sheets("test").Select
compteur1 = 7
compteur2 = 20


Do While Cells(compteur1, a) <> "stop"
Cells(compteur1, a).Select
If ActiveCell.Value = Cells(compteur1 - 1, a).Value And ActiveCell.Offset(0, 3).Value = Cells(compteur1 - 1, a + 3).Value Then
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(1, 0) = Sheets("test").Range("a" & compteur1)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 1) = Sheets("test").Range("a" & compteur1).Offset(0, 1)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 2) = Sheets("test").Range("a" & compteur1).Offset(0, 2)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 3) = Sheets("test").Range("a" & compteur1).Offset(0, 3)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 4) = Sheets("test").Range("a" & compteur1).Offset(0, 4)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 5) = Sheets("test").Range("a" & compteur1).Offset(0, 5)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 6) = Sheets("test").Range("a" & compteur1).Offset(0, 6)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 7) = Sheets("test").Range("a" & compteur1).Offset(0, 7)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 8) = Sheets("test").Range("a" & compteur1).Offset(0, 8)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 9) = Sheets("test").Range("a" & compteur1).Offset(0, 9)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 10) = Sheets("test").Range("a" & compteur1).Offset(0, 10)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 11) = Sheets("test").Range("a" & compteur1).Offset(0, 11)


Else


compteur2 = compteur2 + 20

Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(1, 0) = Sheets("test").Range("a" & compteur1)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 1) = Sheets("test").Range("a" & compteur1).Offset(0, 1)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 2) = Sheets("test").Range("a" & compteur1).Offset(0, 2)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 3) = Sheets("test").Range("a" & compteur1).Offset(0, 3)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 4) = Sheets("test").Range("a" & compteur1).Offset(0, 4)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 5) = Sheets("test").Range("a" & compteur1).Offset(0, 5)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 6) = Sheets("test").Range("a" & compteur1).Offset(0, 6)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 7) = Sheets("test").Range("a" & compteur1).Offset(0, 7)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 8) = Sheets("test").Range("a" & compteur1).Offset(0, 8)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 9) = Sheets("test").Range("a" & compteur1).Offset(0, 9)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 10) = Sheets("test").Range("a" & compteur1).Offset(0, 10)
Sheets("retraitement").Range("a" & compteur2).End(xlUp).Offset(0, 11) = Sheets("test").Range("a" & compteur1).Offset(0, 11)




Application.CutCopyMode = False
End If

compteur1 = compteur1 + 1

Loop
Sheets("test").Select
Range("A1").Select
Sheets("menu").Select
Range("a1").Select

End Sub
 
Re : dépassement de capacité

Bonjour Jean

Si j'ai bien compris, c'est bizarre que tu bloques sur 7000 alors que le type de donnée "integer" est valide pour des variable allant de "-32 768" à "32 767", quelle est la variable qui est en dépassement ? tu peux essayer de la passer en type "long".

Par contre ta boucle me semble un peu lourde, sans doute un moyen de faire autrement, explique nous peut être la finalité de ton code, ous pourrons peut être t'aider à alléger tout ca.

bon après midi
@+
 
Re : dépassement de capacité

bonjour,
où est l'arrêt avec "stop" ? de Do While Cells(compteur1, a) <> "stop"
il faudrait peut-être afficher la valeur des compteurs, chacun dans une cellule, pour voir ce qui se passe.
bye
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
243
Réponses
10
Affichages
548
Réponses
4
Affichages
463
Réponses
12
Affichages
501
Réponses
3
Affichages
666
Retour