VBA : Suppression des lignes résultant d'un filtre
Bonjour à Tous,
Suite à des filtres, j'aimerais supprimer les lignes résultantes de mes filtres (sauf la 1ère : Titre de mes colonnes).
La 1ère cellule variant en fonction du résultat (ex : Rows("3:3").Select ou Rows("7:7").Select).
A la main, j’obtiens :
'*********************
' DelNonINC Macro
'*********************
Sub DelNonINC()
ActiveSheet.ListObjects("TabDatas").Range.AutoFilter Field:=8, Criteria1:= _
"<>INC*", Operator:=xlAnd
Rows("3:3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ListObjects("TabDatas").Range.AutoFilter Field:=8
End Sub
'*********************
' DelMax0 Macro
'*********************
Sub DelMax0()
ActiveSheet.ListObjects("TabDatas").Range.AutoFilter Field:=11, Criteria1:= _
"0"
Rows("7:7").Select
Range("F7").Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ListObjects("TabDatas").Range.AutoFilter Field:=11
End Sub
Je vous remercie par avance,
Bonjour chrisdruddy, le forum,
Tu souhaites donc supprimer les lignes visibles après filtre, mais en conservant les titres.
ActiveSheet.ListObjects("TabDatas").DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
Un essai:
'*********************
' DelNonINC Macro
'*********************
Sub DelNonINC()
Application.DisplayAlerts = False
With ActiveSheet.ListObjects("TabDatas")
.Range.AutoFilter Field:=8, Criteria1:= _
"<>INC*", Operator:=xlAnd
.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
.Range.AutoFilter Field:=8
End With
Application.DisplayAlerts = True
End Sub
'*********************
' DelMax0 Macro
'*********************
Sub DelMax0()
Application.DisplayAlerts = False
With ActiveSheet.ListObjects("TabDatas")
.Range.AutoFilter Field:=11, Criteria1:= _
"0"
.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
.Range.AutoFilter Field:=11
End With
Application.DisplayAlerts = True
End Sub
Cordialement,
- Messages
- 4'093
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Suggestion complémentaire car la solution précédente ne se restreint pas à la ligne du tableau mais supprime la ligne entière de la feuille.
'*********************
' DelMax0 Macro
'*********************
Sub DelMax0()
Dim lignes_filtrées As Range
With [TabDatas].ListObject
.Range.AutoFilter Field:=11, Criteria1:="0"
On Error Resume Next
Set lignes_filtrées = .DataBodyRange.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
.Range.AutoFilter Field:=11
End With
If Not lignes_filtrées Is Nothing Then lignes_filtrées.Delete
End Sub
Merci à vous cela fonctionne.
Cependant pour Thev, il y a un affichage "bizarre" pendant le traitement qui peut-être source d'erreur et je retiendrais la solution de Xorsankukai.
Mais les 2 fonctionnent au final et encore merci à vous