Comment créer un filtre qui va garder des valeurs spécifiées dans un Array

Bonjour,

J'aurais aujourd'hui besoin d'aide pour créer avec VBA un filtre qui va prendre les valeurs des cellules qui sont notées dans une feuille nommée "Produits en Promo"

Je souhaite repartir de la vue de mon tableau lorsqu'il est uniquement filtré selon le critère CF ="cf", et à ce moment là, appliquer un filtre sur les données de la colonne Base (colonne C) et ne conserver que les valeurs qui se trouvent dans les cellules de la feuille mentionnée avant ("Produits en Promo").

Ainsi je n'aurai dans mon exemple plus que dans base les valeurs c d et f. Dans mon cas réel ce sont des String.

(Pour obtenir cette vue filtrée :

image

1. sélectionner Cf=cf

2- sélectionner dans Séries= IMPACT PROMO

3- Sélectionner dans le filtre de la colonne L (W11/20223 Total) tout sauf vide

J'ai un Sub copier_contenu_vue_filtrée qui me copie ces valeurs dans la feuille "Produits en Promo"

Sub copier_contenu_vue_filtrée()
' sélectionner la vue qu'on obtient une fois avoir filtré
' copier ces données dans la feuille Produits en Promo
   Dim sortie As Worksheet
   Set sortie = Worksheets("Produits en Promo")
   Worksheets("Futurmaster").Range("$C$13:$C$1270").SpecialCells(xlCellTypeVisible).Copy sortie.Range("A1")

End Sub

J'ai écrit ceci :

Sub FiltrerParCritèresMultiple_bis()
    Dim ws As Worksheet
    Dim critères() As Variant
    Dim dernier_rg As Long
    Dim Cellule As Range
    Dim j As Long
    dernier_rg = Worksheets("Produits en promo").Cells(Rows.Count, 1).End(xlUp).Row
    MsgBox (dernier_rg)
    ReDim critères(1 To dernier_rg, 1 To 1)

    ' Définir la feuille de travail
    Set ws = Worksheets("FuturMaster")

      j = 1
    For Each Cellule In Worksheets("Produits en promo").Range("A1:A" & dernier_rg)
        critères(j, 1) = Cellule.Value
        j = j + 1
    Next Cellule
    Dim i As Long
     For i = LBound(critères) To UBound(critères)
        Debug.Print critères(i, 1)
    Next i

    ' Appliquer le filtre

    Worksheets("FuturMaster").Range("$A$13:$AW$1270").AutoFilter Field:=3, Criteria1:=critères, Operator:=xlFilterValues

End Sub

Or faire tourner ce module ne filtre que par une seule des valeurs et non les 3 comme je le voudrais.

image

Voici la vue que je souhaiterais avoir

image

Je débute en VBA donc j'apprécierais énormément de l'aide..

Merci à tous :)

14floflo.xlsx (18.48 Ko)

Floflo

PS : merci de ne pas enlever les lignes blanches en haut de ma feuilles excel, elles contiennent des informations que j'ai du enlever pour confidentialité

Hello,

comme ceci ?

Worksheets("FuturMaster").Range("$A$13:$AW$1270").AutoFilter Field:=3, Criteria1:=Application.Transpose(critères), Operator:=xlFilterValues

Bonjour Rag02700,

Malheuresement quand je remplace ma ligne

Worksheets("FuturMaster").Range("$A$13:$AW$1270").AutoFilter Field:=3, Criteria1:=critères, Operator:=xlFilterValues

par la tienne, j'obtiens encore le même résultat..

J'en viens à me demander s'il est vraiment possible de filtrer en VBA avec plus que 2 critères..

bonjour FloFlo44, Rag02700,

j'ai mis tout dans un tableau structuré

Sub FloFlo()
     Dim aA, aFilter, i

     aA = Evaluate("UNIQUE(FILTER(Tabel1[Base],(Tabel1[CF]=""cf"")*(Tabel1[Séries]=""impact promo"")))")     'array avec les valeurs uniques après filtrage

     If VarType(aA) = vbError Then
          MsgBox "erreur, aucun ""base"" après filtrage", vbCritical
     Else
          ReDim aFilter(UBound(aA) - 1)      'dimensioner array 1D avec base 0 et autant d'éléments
          For i = 1 To UBound(aA)
               If i = 1 And UBound(aA) = 1 Then     'seulement 1 élément
                    aFilter(0) = CStr(aA(i))
               Else
                    aFilter(i - 1) = CStr(aA(i, 1))     'plusieurs éléments
               End If
          Next

          With Range("Tabel1").ListObject.Range     'ce tableau
               .AutoFilter                   'enlever filtre précédent
               .AutoFilter 3, aFilter, xlFilterValues     'appliquer filter sur "Base"
          End With
     End If
End Sub
12floflo.xlsb (33.47 Ko)

Bonjour BsAlv,

Merci infiniment, c'est exactement ce que je cherchais !

Bien cordialement,

FloFlo

Rechercher des sujets similaires à "comment creer filtre qui garder valeurs specifiees array"