VBA: Comment supprimer des lignes filtrées dans Excel?
J'ai un tableau Excel qui contient des données. En utilisant ensuite le code vba je suis en train de filtrer uniquement les cellules vides dans certains domaines, et de supprimer ces lignes
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=7, Criteria1:= _
"="
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=8, Criteria1:= _
"="
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=9, Criteria1:= _
"="
ActiveSheet.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.rows.Count - 1).rows.Delete
ActiveSheet.ShowAllData
Il ne fonctionne que si j'ai des cellules vides dans cette colonne.
Mais j'ai fait face à un problème, lorsque je n'ai pas de cellules vides, et en utilisant le code ci-dessus, toute ma gamme est la suppression de la feuille. Comment éviter ce problème? Devrais-je changer de condition de filtre ou quelque chose d'autre?
OriginalL'auteur mbigun | 2013-06-19
Vous devez vous connecter pour publier un commentaire.
Utilisation SpecialCells seulement supprimer les lignes qui sont visibles après le filtrage automatique:
Si vous avez une ligne d'en-tête dans votre gamme que vous ne voulez pas supprimer, ajouter un offset à la plage à exclure:
Méthode expliquée sur cette page combine du filtrage et de la compensation et de la suppression, ce qui rend la lecture du code plus facile.
With rRange 'Filter, offset(to exclude headers) and delete visible rows .AutoFilter Field:=lCol, Criteria1:=strCriteria .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With
juste précéder la suppression de la ligne avec un bloc try-catch car il renvoie une erreur si vous essayez de supprimer un vide de sélection : on Error Resume Next
Salut je me demandais comment puis-je modifier la ligne ci-dessus pour supprimer les lignes masquées après le filtre ?
OriginalL'auteur Jon Crowell
Comme une alternative à l'utilisation de UsedRange ou de fournir explicite d'une plage d'adresses, le filtre automatique.Gamme de propriété peut également préciser l'aire de répartition concernés.
Tel qu'utilisé ici, le Décalage des causes de la première ligne après le filtre automatique de la gamme à être également supprimés. Afin d'éviter cela, je voudrais essayer de l'utiliser .Resize() après .Offset().
OriginalL'auteur KeyLimePy