Filtre dans 2 colonnes de tableaux

Bonjour à tous sur le forum

Je voudrais savoir s'il est possible de filtrer dans un tableau une variable type range.

Voici mon code :

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criteria1:= _
        va1(i), Operator:=xlAnd ' cela fonctionne parfaitement
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:= _
        va2(0 to 200), Operator:=xlAnd  ' cela ne fonctionne pas du tout

va1 est une valeur précise

va2 est toutes les valeurs dans une range

Mon but est d'afficher toutes les cases contenant va1 en colonne D, et de garder dans mon tableau en colonne C seulement les valeurs (et toutes les valeurs) présente dans va2.

Je ne peux pas joindre le fichier

Cordialement,

Bonjour,

Je ne vois pas bien...

......AutoFilter 2, va1(i)

Tu filtres le 2e champs sur une valeur unique : va1 est une variable tableau dont tu utilises une valeur ?

NB- un opérateur xlAnd sans critère2 est inutile (et les arguments étant dans l'ordre, on peut se dispenser de leurs noms...)

......AutoFilter 1, va2, xlFilterValues

Pour ce 1er champ, cela suppose que va2 est une variable tableau, tu fournis donc le tableau intégral.

0 à 200, ça va pas marcher ! Si ce n'est pas toutes les valeurs de tableau, il te faut en recomposer un qui ne contienne que les valeurs à filtrer.

Cordialement.

MFerrand, Merci pour ta réponse rapide

......AutoFilter 2, va1(i)

va1 est incrémentée depuis une DB et prend plusieurs valeurs en fonction de i ( va1= blabla1 à i =1; va1 = blabla2 à i = 2...)

NB noté ! merci pour l'info

...
firstrow = Sheets("TEST").Range("G65000").End(xlUp).Row
Lastrow = Sheets("TEST").Range("AA65000").End(xlUp).Row
Sheets("TEST").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("AA" & firstrow & ":AA" & Lastrow), , xlNo).Name = _
        "TableauTEST"

nbr1 = Sheets("DB").Range("A65000").End(xlUp).Row - 1

For j = 1 To nbr1
    va1(j) = "=*" & Range("A" & j + 1).Value & "*"
    Nom1(j) = Range("A" & j + 1).Value
Next

Colletion = Sheets("TEST").Range("AA65000").End(xlUp).Row - 1
For j = 1 To Colletion
    va2(j) = "=*" & Range("AA" & j + 1).Value & "*"
Next

 For i = 1 To nbr1
    Sheets("UOS").Select
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter 2, va1(i)
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter 1, va2, xlFilterValues
...

Je rajoute une partie du code pour que tu comprennes mieux,

Je viens de reconsidérer ma plage en tableau, je n'arrive toujours pas a faire fonctionner le filtre.

Cordialement,

Si Tableau1 existe sur la feuille active, ça devrait filtrer, dès lors tout de même que les données critères de filtrage sont bien de même type que les données du tableau.

Nota: je ne mettrais pas de "=" dans mes valeurs des tableaux va1 et va2...?

MFerrand,

Je n'ai pas réussit avec ta méthode, en revanche j'ai trouvé une solution : Boucler la boucle

Sheets("feuil2").Select
For j = 1 To MaPlage1
    valeur1(j) = "=*" & Range("A" & j + 1).Value & "*"
Next

Sheets("TEST").Select
For j = 1 To MaPlage2
    valeur2(j) = "=*" & Range("AA" & j + 1).Value & "*"
Next

    For i = 1 To MaPlage1
        Sheets("feuil1").Select
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criteria1:= _
            valeur1(i)

            For j = 1 To MaPlage2
                Sheets("feuil1").Select
                ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:= _
                    valeur2(j)

Avec ce code je filtre ma colonne 2 de mon tableau en fonction d'une valeur qui est bouclée (se trouvant dans un autre tableau; voir ligne 1 à 4 du code ci-dessus)

Dans cette boucle je filtre ma colonne 1 de mon tableau en fonction d'une autre valeur qui est bouclée( se trouvant dans un autre tableau, voir ligne 6 à 9 du code ci-dessus)

ce code à pour but de copier coller la partie du tableau contenant les 2 critères

Quand toute les valeurs de valeur2 sont vérifiée, on recommence avec une nouvelle valeur pour valeur1

Mon problème est donc résolu.

Cependant le temps d'exécution est assez long (environ 100 lignes pour valeur1, 90 lignes pour valeur2 et 1000 lignes dans le tableau).

As-tu une solution pour réduire le temps ?

Cordialement,

Pour ça il faut commencer par supprimer les Select... et éviter de multiplier les opérations des filtrage en utilisant un tableau...

Rechercher des sujets similaires à "filtre colonnes tableaux"