Condition dur filtre

S

sonskriverez

Guest
Bonsoir,

Je voudrais deleter des lignes à partir d'un filtre automatique, pour ce faire j'emploie le code suivant :

Worksheets('Sheet1').Range('A1').AutoFilter Field:=8, Criteria1:='=*RESOLVED*'
' Delete les lignes selectionnées
Application.DisplayAlerts = False
Set tbl = ActiveCell.CurrentRegion = True
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Delete
Application.DisplayAlerts = True
Selection.AutoFilter ' Enlève le filtre automatique

Mes 2 problèmes sont :

1°) avec cette méthode si le critère n'existe pas toutes les données de la feuille sont deletées, comment tester si le critère existe ?

2°) je dois répéter ce module 9 fois car 9 critères différents, il y a t-il un autre moyen de deleter plusieurs lignes avec plusieurs critères.

Merci de votre aide et longue vie au forum
 

MichelXld

XLDnaute Barbatruc
bonjour

tu pourrais pas exemple verifier le nombre de lignes visibles dans la feuille . si le nombre =65536 (aucune ligne masquée) , le critere n'existe pas dans la feuille


If Feuil1.Columns(1).SpecialCells(xlCellTypeVisible).Count <> 65536 Then
MsgBox 'Le critere existe dans la feuille'
Else
MsgBox ' Le critere n'existe pas dans la feuille'
End If



par contre je n'ai pas bien compris la 2eme partie de ta question



bonne journée
MichelXld
 
S

sonskriverez

Guest
Désolé Michelxld, j'ai essayé cela ne fonctionne pas.

dans l'exemple: le critère de la 1 ere boucle existe y'a pas de pbl, par contre le critère de 2ème n'existe pas et cela ne marche pas

Peut-être qu'il considère que la feuille n'est pas vide à cause de la ligne de filtre?

'Selectionne les lignes 'RESOLVED'
Worksheets('sheet1').Select
Worksheets('Sheet1').Range('A1').AutoFilter Field:=8, Criteria1:='=*RESOLVED*' 'Selectionne selon le critère
If Feuil1.Columns(1).SpecialCells(xlCellTypeVisible).Count <> 65536 Then
Set tbl = ActiveCell.CurrentRegion
Application.DisplayAlerts = False
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Delete
Application.DisplayAlerts = True
Selection.AutoFilter ' Enlève le filtre automatique
Else
Selection.AutoFilter ' Enlève le filtre automatique
End If

'Selectionne les lignes 'FRAMSLN'
Worksheets('Sheet1').Range('A1').AutoFilter Field:=7, Criteria1:='=*FRAMSLN*'
If Feuil1.Columns(1).SpecialCells(xlCellTypeVisible).Count <> 65536 Then
Set tbl = ActiveCell.CurrentRegion
Application.DisplayAlerts = False
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Delete
Application.DisplayAlerts = True
Selection.AutoFilter ' Enlève le filtre automatique
Else
Selection.AutoFilter ' Enlève le filtre automatique
End If
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 345
Messages
2 087 473
Membres
103 553
dernier inscrit
jhnm