AutoFilter sur une colonne dont le nombre de valeurs à filtrer peut varier

Bonjour,

Je sèche sur un souci concernant la fonction AutoFilter pour laquelle, sur un onglet, sur une colonne Direction, je souhaite filtrer sur un nombre variable de valeurs (parfois 1, d'autres 2, ou 3, ou plus). Ceci afin de copier la vue filtrée dans un autre tableau, le sauver, et le déposer dans un dossier dédié aux personnes concernée par ce tableur.

Pour gérer la variabilité du nombre de valeur à filtre, j'ai un onglet nommé Exports avec, par ligne, le nom à récupérer pour le fichier, puis la ou les valeurs pour filtrer sur une colonne :

capture d e cran 2023 04 14 a 07 46 00

Ainsi, je vais filtrer une première fois une colonne du tableau sur la valeur Présidence (B2) pour faire une copie du tableau filtré dans un tableur nommé Présidence (A2). Par contre, je vais aussi filtrer le tableau sur la même colonne du tableau sur la valeur DSI (B3) ET la valeur DF (C3) pour faire une copie du tableau filtré dans un tableur nommé Support (A3). Ainsi, grâce à ce tableau, je gère 1 ou plusieurs critères.

Venons-en au code du filtrage. Je sais faire cela pour filtrer sur 1 valeur :

ActiveSheet.Range("A1:AZ135863").AutoFilter Field:=40, Criteria1:=Sheets("Exports").Cells(Ligne, 1 + Conditions * 2)

Ce qui "traduit" donne bien :

ActiveSheet.Range("A1:AZ135863").AutoFilter Field:=40, Criteria1:="Présidence"

Ce que je ne sais pas faire, par exemple avec la ligne 3 de mon onglet Exports, c'est faire la même chose pour filtrer automatiquement comme suit, sachant que là j'ai 2 critères, mais je peux en avoir 3, 4, 5, ... :

ActiveSheet.Range("A1:AZ135863").AutoFilter Field:=40, Criteria1:="DSI", Criteria2:="DF", Operator:=xlAnd

ou comme suit :

ActiveSheet.Range("A1:AZ135863").AutoFilter Field:=40, Criteria1:=Array("DSI", "DF"), Operator:=xlFilterValues

Ca, je ne sais pas faire, je bute là dessus. Si vous aviez donc une idée d'un bout de code pour permettre de filtrer sur 1 colonne sur une liste variable de valeurs selon le contexte, je suis preneur. Merci par avance.

Bonjour PalmBox

je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER] et notamment

  • Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).

Merci de votre compréhension

Bonjour,

Ca serait plus facile avec un classeur. Avec cette disposition, les valeurs à filtrer étant en colonne E :

capture d ecran 2023 04 14 114013
Sub test()
  Dim Arr
  Arr = Application.Transpose(Range("E1", Cells(Rows.Count, 5).End(xlUp)).Value)
  Arr = Array("DSI", "DF", "DG")
  Range("A:A").AutoFilter 1, Arr, Operator:=xlFilterValues
End Sub

Daniel

Oups, désolé.

Sub test()
  Dim Arr
  Arr = Application.Transpose(Range("E1", Cells(Rows.Count, 5).End(xlUp)).Value)
  Range("A:A").AutoFilter 1, Arr, Operator:=xlFilterValues
End Sub

Daniel

Rechercher des sujets similaires à "autofilter colonne nombre valeurs filtrer varier"