Filtres automatiques : plusieurs critères autorisés sur une colonne

Bonjour, je travaille actuellement sur un tableau qui est filtré automatiquement en fonction de plusieurs critères, voici le code :

Sub Filtre_G5()
With Sheets("Renommés")
crt = .Range("$B$1").Value
 If crt <> "" And Not IsError(Application.Match(crt, .Range("A:A"), 0)) Then
  .Range("$A$4:$G$4").AutoFilter Field:=1, Criteria1:="=" & .Range("$B$1").Value, Operator:=xlAnd
    .Range("$A$4:$G$4").AutoFilter Field:=6, Criteria1:=xlFilterThisMonth, Operator:=xlFilterDynamic
   ElseIf crt <> "" And IsError(Application.Match(crt, .Range("A:A"), 0)) Then
  .Range("$A$4:$G$4").AutoFilter Field:=1, Criteria1:="=" & .Range("$B$1").Value, Operator:=xlAnd
  .Range("$A$4:$G$4").AutoFilter Field:=6, Criteria1:=xlFilterThisMonth, Operator:=xlFilterDynamic
 Else
  .Range("$A$4:$G$4").AutoFilter Field:=1
    ' $B$1 est la cellule selon laquelle le fichier sera filtré
  ' ("$A$4:$G$4") est la plage de cellule des colonnes filtrantes
  ' Ne pas modifier la range ("A:A")
 End If
End With
End Sub

Plusieurs filtres sont appliqués :

- Filtre sur la colonne 1 en fonction de la cellule B1 --> fonctionne

- Filtre sur la colonne 6 en fonction de la date --> PROBLEME : le tableau se filtre bien en affichant uniquement les date du mois actuel, mais j'aimerais aussi qu'il autorise les cellules vides de cette colonne. Je peux avoir des lignes avec la colonne 1 correspondante à B1 et une colonne 6 soit vide soit avec une date.

J'ai lu sur le net qu'on pouvait utiliser "criteria2=..." mais je n'arrive pas à obtenir quelque chose de fonctionnel...

PS : mon code est surement maladroit... Si vous voyez un moyen de "l'épurer" je suis preneur aussi !

J'ai fait des test avec les commandes "xlOr" and "xlAnd", seul la commande xlOr donne un résultat mais toujours le même problème.

 .Range("$A$4:$G$4").AutoFilter Field:=6, Criteria1:=xlFilterThisMonth, Operator:=xlOr, Criteria2=""

avec ce code, le tableau est uniquement filtré en fonction des cellules vides, et non les vides ET celles qui contiennent des dates du mois actuel...

Bonjour Lockard

A+

Bonjour, je vous ai envoyé le fichier.

(fichier supprimé pour confidentialité, le code final a été quand même mis plus bas)

Bonjour Lockard

Voici le code pour le fichier joint

  .ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="=" & crt
  .ListObjects("Tableau1").Range.AutoFilter Field:=6, Criteria1:= _
        Array("="), Operator:=xlFilterValues, Criteria2:=Array(1, Month(Now()) & "/01/2022")

A+

super ça marche parfaitement ! Pour ceux que ça intéresse j'envois le code en entier :

Sub Filtre_G5()
With Sheets("Renommés")
crt = .Range("$B$1").Value
 If crt <> "" And Not IsError(Application.Match(crt, .Range("A:A"), 0)) Then
  .Range("$A$4:$G$4").AutoFilter Field:=1, Criteria1:="=" & .Range("$B$1")
    .ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="=" & crt
  .ListObjects("Tableau1").Range.AutoFilter Field:=6, Criteria1:= _
        Array("="), Operator:=xlFilterValues, Criteria2:=Array(1, Month(Now()) & "/01/2022")
 Else
  .Range("$A$4:$G$4").AutoFilter Field:=1
    ' $B$1 est la cellule selon laquelle le fichier sera filtré
  ' ("$A$4:$G$4") est la plage de cellule des colonnes filtrantes
  ' Ne pas modifier la range ("A:A")
 End If
End With
End Sub

Merci beaucoup, je n'aurais pas trouvé tout seul... Je clos le sujet !

Re,

J'aurais dû te poster le code entier, désolé
le code correcte avec un tableau structuré nommé "Tableau1" est celui-ci

Sub Filtre_G5()
  With Sheets("Renommés")
    crt = .Range("$B$1").Value
    If crt <> "" And Not IsError(Application.Match(crt, .Range("A:A"), 0)) Then
      .ListObjects("Tableau1").Range.AutoFilter
      .ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:="=" & crt
      .ListObjects("Tableau1").Range.AutoFilter Field:=6, Criteria1:= _
        Array("="), Operator:=xlFilterValues, Criteria2:=Array(1, Month(Now()) & "/01/2022")
    Else
      .ListObjects("Tableau1").Range.AutoFilter
      ' $B$1 est la cellule selon laquelle le fichier sera filtré
      ' ("$A$4:$G$4") est la plage de cellule des colonnes filtrantes
      ' Ne pas modifier la range ("A:A")
    End If
  End With
End Sub

A+

Rechercher des sujets similaires à "filtres automatiques criteres autorises colonne"