Re !
Voilà une nouvelle macro encore plus LENTE....décidément :
Sub DeleteFaux()
Dim CelluleCourante As Range
Dim CelluleSuivante As Range
Set CelluleCourante = ActiveSheet.Range("A16")
Do While Not IsEmpty(CelluleCourante) = True
Set CelluleSuivante = CelluleCourante.Offset(1, 0)
If CelluleCourante.Value = False Then
CelluleCourante.EntireRow.Delete
End If
Set CelluleCourante = CelluleSuivante
Loop
End Sub
Soit maintenant : 39,046 secondes
Et avec :
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = False
.ScreenUpdating = False
End With
36,54 secondes.
Et avec la nouvelle macro 1 seconde :
Sub RecopieVrai()
Sheets("Filtrage").Select
Range("A16:O16").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("VersExport").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("Filtrage").Select
Range("c16:O16").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A1").Select
Sheets("VersExport").Select
Range("A2").Select
Selection.AutoFilter Field:=1, Criteria1:="1"
Range("A3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Filtrage").Select
Range("A16").Select
ActiveSheet.Paste
Sheets("VersExport").Select
Selection.AutoFilter Field:=1
Selection.AutoFilter
Range("A3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A1").Select
End Sub
En fait que fait cette nouvelle macro :
Elle sélectionne les lignes et colonnes à garder dans la feuille de départ (Filtrage), elle les copie, puis va faire un Coller spécial Valeur, dans une autre feuille (export).
Elle revient dans la feuille de départ faire le néttoyage.
Puis elle repart dans la feuille Export, applique un filtre automatique, mais pour garder les "Vrais".
Elle sélectionne les "Vrais" restants et les copie.
Elle repart dans ma première feuille et recolle les lignes à garder.
Puis elle va faire le ménage dans ma feuille Export.
Et voilà !
Plein de manips faites avec l'enregistreur de macro, puis légèrement modifiées après.
Macro testée pour effacer 1500 lignes sur 15 000 en 1,5 seconde.
Par contre sur une dizaine de tests, sur des gros fichiers, la macro a planté une fois....????
Mais, honnêtement, je préfèrerais une macro plus "Vba", qui me semblerait plus sure dans le temps.
@ +
Moa
@ +
Moa