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
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