Effacer des lignes sélectionnées par Critère de filtre [Résolu]

Signaler
-
 SamGuelis -
Bonjour

Je souhaite pouvoir dans une procédure effacer dans une feuille des lignes sélectionnées par filtre selon différent critères. Mon souci est connaitre les lignes de début et de fin chaque fois que le critères change.
Exemple enregistré par macro:
" Range("A3:G3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$G$478").AutoFilter Field:=5, Criteria1:= _
"Full Time (Partial TS entry)"
'il faudrait déterminer le nombre de ligne de la zone à chaque fois
Rows("5:452").Select
Selection.Delete Shift:=xlUp"
Je voudrais pour chaque critère donc récupérer "dynamiquement" la plage à effacer; donc ce qui correspond à Rows("5:452") puisque le nombre de lignes changera au fur et à mesure que j'effacerai de lignes.
Merci pour vos conseils.


SamGuelis

4 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
238
Bonjour,
D'où, dans ton exemple, sortent les rangs 5 à 542 ?
Ils sont déterminés comment et par quoi ?
Ils arrivent là comme un cheveu sur la soupe, dans la moindre explication !
S'ils sont ceux qui restent visibles après filtre, ils constituent une plage toto déterminables par SpecialCells(xlCellTypeVisible)
et si ce sont ceux à supprimer, toto.entirerow.delete les supprimera d'un coup.
Reviens avec ton code sur ces bases, après avoir jeté dans ton aide VBA un coup d'oeil sur les mors que j'ai ici soulignés.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
238
"REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Bonsoir
Pour répondre à ta question sur les lignes 5:452, elles sont bien sûr les lignes résultats du filtre. En fait tu n'as pas saisi la demande. Je veux répéter des sélections de lignes avec différents critères A priori je ne sais pas d'avance quelles sont les numéros de lignes qui seront sélectionnées.
Mais je suivrai tes indications.
SamGuelis
Bonjour
Juste pour ajouter une précision à la réponse de ucfoutu. Utiliser
SpecialCells(xlCellTypeVisible) et toto.entirerow permet bien d'effacer les lignes résultats du filtre. Seulement la ligne d'entête était aussi effacée. Or comme cette ligne avait aussi des noms de champs je veux la garder. J'ai remplacé plagecritere.entirerow.delete par selection.deleteVoici mon code, il y a peut-être plus simple, pour filtrer et effacer les lignes (tout en gardant ma ligne d'en-tête)?

Sub week_automat()
Dim colFin As Integer
Dim lignefin As Integer
Dim plagecritere As Range

...
colFin = Cells(3, Columns.Count).End(xlToLeft).Column
lignefin = Cells(Rows.Count, 1).End(xlUp).Row
Set plagecritere = Range(Cells(4, colFin), Cells(lignefin, colFin))
Range("A3:G3").Select 'la ligne ou sera le filtre est aussi ligne d'en-tête de tableau.

Selection.AutoFilter
ActiveSheet.Range(Cells(3, colFin), Cells(lignefin, colFin)).AutoFilter Field:=5, Criteria1:= _
"Full Time (Partial TS entry)"

plagecritere.SpecialCells(xlCellTypeVisible).Select
plagecritere.Delete Shift:=xlUp
...
End Sub


SamGuelis