Supprimer des lignes sur les 100 dernières lignes remplies

Bonjour,

J’ai un tableau de près de 5000 lignes, qui se remplis tout les jours.

Sur ce tableau je cherche à supprimer les lignes qui ont un 0 en colonnes C et E et F avec la macro suivante :

For i = ActiveSheet.UsedRange.Rows.Count To 7 Step -1
          If Cells(i, 3) = 0 Or Cells(i, 3) = "" Then
            If Cells(i, 5) = 0 Or Cells(i, 5) = "" Then
              If Cells(i, 6) = 0 Or Cells(i, 6) = "" Then
                Rows(i).Delete
              End If
            End If
          End If
        Next

Le problème c’est qu’elle dure beaucoup trop longtemps avec toutes ces lignes.

Existe t’il un moyen de limiter la suppression aux 100 dernières lignes non vides ?

Merci et bon dimanche :)

Bonjour,

pour que ça soit rapide il faut tout supprimer d'un coup.
Pour se faire je suppose que ton tableau a une ligne de titres avec un filtre auto, et que ta colonne A est toujours remplie.

Sub suppLig0()
    Application.ScreenUpdating = False
    Columns(2).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("B2").Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1).FormulaR1C1 = _
        "=OR(RC[2]="""",RC[2]=0,RC[4]="""",RC[4]=0,RC[5]="""",RC[5]=0,)"
    ActiveSheet.Range("$A$1").Resize(Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=2, Criteria1:="VRAI"
    On Error Resume Next
    Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase").Rows.Count - 1) _
        .SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
    On Error GoTo 0
    Columns(2).EntireColumn.Delete
End Sub

J'insère une colonne en B pour une formule détectant tes lignes indésirables, je filtre dessus et les supprimes en une fois. La colonne B est ensuite supprimée.
La totalité du tableau est traité à chaque fois.
eric

9classeur1.xlsm (21.46 Ko)

PS : éventuellement tu peux ajouter Application.ScreenUpdating = False en 1ère ligne si tu veux éviter le petit clignotement (non mis dans le fichier).

Ca fonctionne du feu de dieu ! Merci beaucoup

peut-être supprimer au tout début un éventuel filtre laissé par un utilisateur ce qui ferait que certaines lignes ne seraient pas vues :

With sheets("Feuil1")
    If .AutoFilterMode And .FilterMode Then .ShowAllData
End with

eric

Rechercher des sujets similaires à "supprimer lignes 100 dernieres remplies"