Effacer des lignes sélectionnées par Critère de filtre

Résolu
SamGuelis - 5 avril 2013 à 21:25
 SamGuelis - 8 avril 2013 à 23:40
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 avril 2013 à 21:44
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.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 avril 2013 à 21:51
"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.
3
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
0
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
0
Rejoignez-nous