Supprimer ligne en VBA

Bonjour,

Je souhaiterai, via une macro, que toutes les lignes ne contenant pas " 2019" dans la colonne "L" soit supprimées:

J´ai trouver ce code "Très lent"

Sub Supprimer ligne()

Dim i%
For i = 25000 To 5 Step -1
If Cells(i, 12).Value <> "2019" Then Rows(i).EntireRow.Delete
Next i
End Sub

mais je pense pas qu'il à était fait pour environ 350 000 lignes et 17 colonne

Je vous remercie d'avance

Max

Bonjour,

Si ta question concerne la méthode ...

Le principe de la boucle n'est pas très efficace ...

Pour les bases de données importantes, la méthode la plus efficace est AutoFilter

En espèrant que cela t'aide

A titre d'exemple

Sub SupLignesFiltrees()
   ' Supprimer toutes les Lignes pour lesquelles, dans la Colonne L, la valeur est différente de 2019
  Dim fbase As Range
  [A1].CurrentRegion.AutoFilter 12, "<>2019"
  Set fbase = [_FilterDatabase]
  fbase.Offset(1, 0).Resize(fbase.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
  ActiveSheet.AutoFilterMode = False
End Sub

Bonjour,

Un autre exemple avec AutoFilter.

Cdlt.

Public Sub DeleteRowsInRange()
Dim rng As Range
    With ActiveSheet
        If .FilterMode Then .ShowAllData
        .Cells(1).CurrentRegion.AutoFilter 12, "<>2019"
        With .AutoFilter.Range
            On Error Resume Next
            Set rng = .Offset(1).Resize(.Rows.Count - 1, 1).SpecialCells(12)
            On Error GoTo 0
        End With
        If Not rng Is Nothing Then rng.EntireRow.Delete
        .AutoFilterMode = False
    End With
End Sub

Bonjour ames007, Jean-Eric

Je vous remercie nickel bonne journée

Max

Merci pour le retour ...

Rechercher des sujets similaires à "supprimer ligne vba"