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 :
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:=xlAndou comme suit :
ActiveSheet.Range("A1:AZ135863").AutoFilter Field:=40, Criteria1:=Array("DSI", "DF"), Operator:=xlFilterValuesCa, 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 :
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 SubDaniel
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 SubDaniel