Supprimer des lignes - cellules qui ne commencent pas par

Bonjour à tous,

Je cherche à ne conserver sur ma feuille que

les cellules dont la colonne AR ne sont pas égales à "" et dont les cellules dont la colonne B sont des noms dont la première lettre va de G à N

J'ai fait ceci, en éliminant chaque condition l'une après l'autre via un filtre (ici avec le "" puis le "A*" et alors ainsi de suite pour chaque première lettre dont la ligne doit être supprimée), mais je sais qu'il doit il y avoir un moyen bien plus simple (j'ai environ 2000 lignes sur ma feuille)

Sub supprimer()

With Worksheets("Rapport")
Dim LastRw As Long
LastRw = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
         ActiveSheet.Range("AR2:AR" & LastRw).AutoFilter 1, ""
                 .AutoFilter.Range.EntireRow.Delete

         ActiveSheet.Range("B2:B" & LastRw).AutoFilter 1, "=A*"
         .AutoFilter.Range.EntireRow.Delete

End With

Je me disais que je pourrais conserver le premier delete via le filtre "" sur ma colonne AR, puis chercher la dernière ligne des "N" de ma colonne B, supprimer les lignes à partir de la ligne suivante, et finir par chercher la première ligne des "G" et supprimer les lignes au-dessus jusqu'à ma ligne 2 (la ligne1 étant mes intitulés) mais je ne trouve pas comment l'écrire.

Pouvez-vous m'aider ?

Merci à vous, bonne après midi

Bonjour Lorence,

Voici une proposition :

1classeur1.xlsm (15.65 Ko)

et le code modifié :

Sub supprimer2()
Dim LastRw As Long
Dim i As Byte
    With Worksheets("Rapport")
        LastRw = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
        ActiveSheet.Range("$A$1:$AR$1").AutoFilter Field:=44, Criteria1:="" 'Filtre sur la colonne AR, soit la colonne 44
        For i = 65 To 90 'En format ascii, les chiffres 65 à 90 correspondent aux lettres A à Z : voir ici https://www.rapidtables.com/code/text/ascii-table.html
            If i < 71 Or i > 78 Then
                ActiveSheet.Range("$A$1:$AR$1").AutoFilter Field:=2, Criteria1:="=" & Chr(i) & "*" 'Filtre sur la colonne B, soit la colonne 2
                If ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row > 1 Then
                    Rows("2:" & LastRw).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp 'Supprime les lignes filtrées
                End If
            End If
        Next
    Selection.AutoFilter
    End With
End Sub
Rechercher des sujets similaires à "supprimer lignes qui commencent pas"