Condition dans un filtre

  • Initiateur de la discussion Initiateur de la discussion Sonskriverez
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sonskriverez

Guest
Bonjour à tous et lerci de votre aide,

'Selectionne les lignes 'toto'
Worksheets('sheet1').Select
Worksheets('Sheet1').Range('A1').AutoFilter Field:=8, Criteria1:='=*toto*' 'Selectionne selon le critère
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

Ce petit bout de macro filtre suivant un critère et delete les lignes concernée.
Le Pbl est que si le critère n'existe pas, tous ce delete, comment poser une codition du style SI critère existe pas passe ?
 
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
 
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
 
bonjour

tu peux tester cette adaptation


Dim Tbl As Range, Plage As Range
Dim Cible As Long

Set Plage = Worksheets('Sheet1').Range('H1:H' & _
Worksheets('Sheet1').Range('H65536').End(xlUp).Row)

On Error Resume Next
Cible = Application.WorksheetFunction.Match('*RESOLVED*', Plage, 0)

If Cible > 0 Then
Worksheets('Sheet1').Range('A1').AutoFilter Field:=8, Criteria1:='=*RESOLVED*'
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
End If

Set Plage = Worksheets('Sheet1').Range('G1:G' & _
Worksheets('Sheet1').Range('G65536').End(xlUp).Row)

On Error Resume Next
Cible = 0
Cible = Application.WorksheetFunction.Match('*FRAMSLN*', Plage, 0)

If Cible > 0 Then
'Selectionne les lignes 'FRAMSLN'
Worksheets('Sheet1').Range('A1').AutoFilter Field:=7, Criteria1:='=*FRAMSLN*'
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
End If



bonne journée
MichelXld
 
Salut sonskriverez,

Mauvaise philosophie !

Avec Excel et un minimum d'effort, il y a moyen de comprendre, parce que le raisonnement est logique.

Ce n'est pas le cas avec tout le monde !
Mais non mesdames, ce n'est pas à vous que je pense, enfin pas en deuxième instance.

Â+
 
Bonsoir ce fil, André, le Forum,

André, t'as rien trouvé de mieux pour te faire des copines ?

Un week-end qui commence dans la bonne humeur...

Alors excellent week-end à tous et surtout à toi André, si c'est encore possible...

Jean-Pierre
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

J
Réponses
1
Affichages
2 K
Jerome5625
J
L
Réponses
2
Affichages
1 K
Legendre
L
S
  • Question Question
Réponses
2
Affichages
2 K
sardaucar
S
A
Réponses
12
Affichages
2 K
A
E
Réponses
0
Affichages
1 K
eeyglunent
E
J
Réponses
1
Affichages
1 K
Réponses
4
Affichages
1 K
Compte Supprimé 979
C
P
Réponses
0
Affichages
1 K
porcinet95
P
A
Réponses
14
Affichages
41 K
Amstrad
A
Retour