1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Sub DeleteRowsByAdvancedFilter()
' Déclaration des variables
Const myFormula As String = "=MOD(ROW(A2)-1,4)=0" ' La formule qui sera insérée dans la zone des critères
Dim areaData As Range, areaCriteria As Range
' Assignation des variables objets
Set areaData = ThisWorkbook.Worksheets("db").Range("A1").CurrentRegion ' Zone des données
With areaData
Set areaCriteria = areaData.Offset(ColumnOffset:=.Columns.Count+1).Resize(2, 1) ' Zone des critères 2 colonnes à droite de la zone des données
End With
' Placement des critères (Etiquettes de colonne + critère calculé)
areaCriteria(1) = "_fn_": areaCriteria(2).Formula = myFormula
' Filtrer les données
areaData.AdvancedFilter xlFilterInPlace, areaCriteria
' Suppression des lignes filtrées (C'est à dire visibles) sans la première ligne
With areaData
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.Worksheet.ShowAllData ' Supprime le filtre
End With
areaCriteria.Clear
Set areaData = Nothing: Set areaCriteria = Nothing
End Sub |
Partager