Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub CommandButton1_Click() Dim deb As Single, i As Integer, temps1 As Single, temps2 As Single, temps3 As Single, tra As Integer tra = 1510 Application.ScreenUpdating = False 'méthode 1 : suppression ligne par ligne deb = Timer 'Application.ScreenUpdating = False For i = tra To 1 Step -2 ' un pas de 2 pour éviter des cellules contigües (et forcer union à ne pas les joindre ensemble) Cells(i, 1).EntireRow.Delete Next 'Application.ScreenUpdating = True temps1 = Timer - deb deb = Timer ' méthode 2 : un seul rage par union et suppression in fine deb = Timer Dim toto As Range ' un range unique de destination For i = 1 To tra Step 2 ' un pas de 2 pour éviter des cellules contigües (et forcer union à ne pas les joindre ensemble) If toto Is Nothing Then Set toto Cells(i, 1) Else Set toto Union(Cells(i, 1), toto) Next toto.EntireRow.Delete temps2 = Timer - deb 'méthode 3 : division en plusieurs Range par Union et suppression in fine Dim nb As Integer, ratio As Integer deb = Timer ratio = 20 ReDim vla(tra \ ratio + 1) As Range ' <<<<<<======== on prépare un tableau de ranges de destination For i = 1 To tra Step 2 ' un pas de 2 pour éviter des cellules contigües (et forcer union à ne pas les joindre ensemble) nb = (i \ ratio) If vla(nb) Is Nothing Then Set vla(nb) Cells(i, 1) Else Set vla(nb) Union(Cells(i, 1), vla(nb)) Next nb = 0 For i = UBound(vla) To 0 Step -1 If Not vla(i) Is Nothing Then vla(i).EntireRow.Delete Set vla(i) = Nothing End If Next temps3 = Timer - deb Application.ScreenUpdating = True 'méthode 4 : division en plusieurs Range par Union>> vers un seul ensuite ==>> et suppression in fine =========== deb = Timer ratio = 10 ReDim vla(tra \ ratio + 1) As Range ' <<<<<<======== on prépare un tableau de ranges de destination For i = 1 To tra Step 2 ' un pas de 2 pour éviter des cellules contigües (et forcer union à ne pas les joindre ensemble) nb = (i \ ratio) If vla(nb) Is Nothing Then Set vla(nb) Cells(i, 1) Else Set vla(nb) Union(Cells(i, 1), vla(nb)) Next nb = 0 If Not vla(0) Is Nothing Then For i = 1 To UBound(vla) If Not vla(i) Is Nothing Then Set vla(0) = Union(vla(i), vla(0)) Set vla(i) = Nothing Else Exit For End If Next End If vla(0).EntireRow.Delete temps4 = Timer - deb Application.ScreenUpdating = True MsgBox "méthode 1 ===>> " & temps1 & vbCrLf & "méthode 2 ===>> " & temps2 & _ vbCrLf & "méthode 3 ===>> " & temps3 & vbCrLf & "méthode 4 === >> " & temps4 End Sub