Macro pour suppression via filtre

Résolu/Fermé
clio - 10 avril 2012 à 17:56
 Clio - 16 avril 2012 à 11:23
Bonjour,

Je travaille sur des extractions d'outils métier sur lesquelles j'applique un filtre pour supprimer certaines lignes via une macro.
J'ai un problème avec la suppression de certaines lignes dont les critères sont :
- cellule non vide colonne AG
Mais ma macro me supprime également la ligne d'en tête et ne me les supprime pas toutes car les cellules sont vides en début de ligne.

Rows("1:1").Select
Selection.AutoFilter
Range("A1").AutoFilter Field:=33, Criteria1:="<>"
Range("A2", [A65000].End(xlUp)).Delete Shift:=xlUp
Selection.AutoFilter

Quelqu'un peut il m'aider ? HELP ;)

A voir également:

10 réponses

Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
10 avril 2012 à 22:24
Bonjour,
Dans un premier temps, essayez avec cette ligne d'instruction :
Range("a2", "A" & [A65000].End(xlUp).Row + 1).Delete Shift:=xlUp
0
La macro passe mais ne m'enlève pas les lignes concernées
'Suppression des lignes avec une info de non prod colonne AG
Range("A1").AutoFilter Field:=33, Criteria1:="<>"
Range("a2", "A" & [A65000].End(xlUp).Row + 1).Delete Shift:=xlUp
Selection.AutoFilter

En fait, les lignes concernées ont peu de cellules renseignées, j'ai l'impression que c'est ce qui les empêchent d'être détectées.
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
Modifié par Le Pingou le 12/04/2012 à 10:38
Bonjour,
Je viens de réaliser un test avec plus de 17'000 lignes et le résultat est conforme à la procédure.
J'ai bien toutes les lignes où la cellule de la colonne [AG/33] est vide soit suppression des autres.
Ma réponse concerne ce message:
La macro passe mais ne m'enlève pas les lignes concernées
'Suppression des lignes avec une info de non prod colonne AG
Range("A1").AutoFilter Field:=33, Criteria1:="<>"
Range("a2", "A" & [A65000].End(xlUp).Row + 1).Delete Shift:=xlUp
Selection.AutoFilter

En fait, les lignes concernées ont peu de cellules renseignées, j'ai l'impression que c'est ce qui les empêchent d'être détectées.

Il n'est pas valable pour:
La macro passe mais ne m'enlève pas les lignes concernées
Dim i As Long
For i = Range("A65536").End(xlUp).Row To 2 Step -1
If Cells(i, 33) Like "*CD*" Then Rows(i).Delete
Next i

En fait, les lignes concernées ont peu de cellules renseignées, j'ai l'impression que c'est ce qui les empêchent d'être détectées.


Salutations.
Le Pingou
0
ça marche pas ... je suis pas une flèche en VB mais là j'arrive pas à trouver la faille...

voici le début de ma macro
'ONGLET NON CLOTUREES
Sheets("Non cloturées").Select

'Suppression des lignes d'inter "annulées" ou "clôturées"
Rows("1:1").Select
Selection.AutoFilter
Range("A1").AutoFilter Field:=3, Criteria1:="=Annulée", Operator:=xlOr, Criteria2:="=Clôturée"
Range("A2", [A65000].End(xlUp)).Delete Shift:=xlUp
Selection.AutoFilter

'Suppression des lignes autres que "3A" ou "DB" colonne D
Range("A1").AutoFilter Field:=4, Criteria1:="<3A>", Criteria2:="<DB>"
Range("A2", [A65000].End(xlUp)).Delete Shift:=xlUp
Selection.AutoFilter

'Suppression des lignes avec une info de non prod colonne AG
Range("A1").AutoFilter Field:=34, Criteria1:="<>"
Range("a2", "A" & [A65000].End(xlUp).Row + 1).Delete Shift:=xlUp
Selection.AutoFilter

la 1ère manip de suppression fonctionne (annulées/cloturées)
et ensuite ça marche plus !!!
Le problème ne viendrait il pas de la commande Selection.AutoFilter ???

Merci beaucoup pour ton aide ! (je mange tout mon chocolat de Pâques à ta santé !!)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
12 avril 2012 à 11:19
Bonjour,
Je constate que les conditions de suppressions des lignes ont évolué en nombre de critère ; au début ce n'était que les lignes différentes de vide en colonne [AG/33].
Dans ce sens je vais attendre votre dernière version... !
0
en fait je n'avais évoqué que mon problème pour le filtre sur la colonne AG car le reste fonctionnait.
(ou AH, en fait c'est l'abréviation et le libellé complet donc on peut supprimer les lignes indifférements selon l'une ou l'autre colonne. Et comme j'ai testé les 2, je m'aperçois que ma macro est sur le filtre AH/34)

J'ai construit à ma macro en supprimant des lignes grace au filtre et en plusieurs étapes.

du coup, je ne comprends pas trop ce qu'est ma "dernière version".
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
12 avril 2012 à 16:29
Bonjour,
Essayez avec ces lignes d'instruction:
'ONGLET NON CLOTUREES
Sheets("Non cloturées").Select
' Suppression des lignes d'inter "annulées" ou "clôturées"
Rows("1:1").SelectSelection.AutoFilter   
Range("A1").AutoFilter Field:=3, Criteria1:="=Annulée", Operator:=xlOr, Criteria2:="=Clôturée"   
Range("a2", "A" & [A65000].End(xlUp).Row + 1).Delete Shift:=xlUp   
Range("A1").AutoFilter Field:=3
' Suppression des lignes autres que "3A" ou "DB" colonne D   
Range("A1").AutoFilter Field:=4, Criteria1:="<>3A", Operator:=xlOr,  Criteria2:="<>DB"   
Range("a2", "A" & [A65000].End(xlUp).Row + 1).Delete Shift:=xlUp
Range("A1").AutoFilter Field:=4
' Suppression des lignes avec une info de non prod colonne AG   
Range("A1").AutoFilter Field:=33, Criteria1:="<>"   
Range("a2", "A" & [A65000].End(xlUp).Row + 1).Delete Shift:=xlUp   
Range("A1").AutoFilter Field:=33
Selection.Autofilter
0
Merci de m'aider :)
Après lancement de la macro, il ne me reste que les lignes avec une valeur dans la colonne "non prod". donc pile l'inverse de ce que je cherche à faire !

Vraiment je ne comprends pas d'ou vient le problème avec cette programmation...
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
12 avril 2012 à 22:04
Bonjour,
C'est étonnant car les critères non pas été changer.
Pouvez-vous réaliser une copie d'écran (éditeur VBA) de la procédure que vous utilisez, la coller sur un document Word et le mettre sur https://www.cjoint.com/
0
Bonjour,

le problème n'est pas résolu mais contourné (j'ai exclu les lignes dès l'extraction sur l'outil)

Néanmoins, je vous remercie de vous être penché sur mon problème !
0