Criteria Range pour filtre avancé

Bonjour,

Le code ci-dessous me génère un problème:

Range("B18:AC34157").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _

:=Sheets("Filtre avancé 2").Range("A1", Range(H1).End(xlDown)), Unique:=False

Je sais que cela vient de la partie Range("A1", Range("H1").End(xlDown)), apparemment Excel n'accepte pas la façon que j'ai eu de formuler la range.

Mon idée est de définir une range qui ne sera pas toujours la même (pas du type A1:AD150 par exemple) mais bien une range qui sera limitée par la dernière cellule de la colonne H qui contiendra une valeur.

J'espère que je suis clair, pourriez-vous m'aider? Je ne comprends pas pourquoi cela ne fonctionne pas...

Merci!

Bonjour et bienvenue sur le forum

Essaie de mettre des guillemets sur H1 :

MS2015 a écrit :

Range("A1", Range("H1").End(xlDown)),

Bye !

Bonjour!

Merci mais en fait je les ai oubliés en les tapant dans mon message...Même avec les guillemets cela ne fonctionne pas...

Quelqu'un peut-il m'aider?

Merci

Toujours personne pour m'aider???

Bonjour,

Tu dis que tu souhaites définir une plage de critères qui sera limitée par la dernière cellule de la colonne H qui contiendra une valeur.

Es-tu sûr qu'il s'agit bien de la plage de critères ?

Ne serait-ce pas plutôt la plage de données ?

A+

Oui j'en suis sûr. La plage de données est bien B18:AC34157.

Et comme je l'ai déjà dit, la formule fonctionne correctement si en lieu et place de ceci Range("A1", Range("H1").End(xlDown))

J'ai Range("A1:H30") par exemple

Si toutes les cellules de la plage H1:H30 sont renseignées, les deux formulations sont identiques

Range("A1", Range("H1").End(xlDown)) <=> Range("A1:H30")

Peux-tu poster un exemple ?

A+

C'est bien pourquoi je ne comprends vraiment pas pourquoi cela ne fonctionne pas...

Malheureusement je ne peux pas poster le fichier, ce sont des données confidentielles et cela me prendrait un certain temps de faire un extrait...

Je donne juste le déroulement:

J'ai mes données principales.

Elles sont filtrées et les données filtrées sont extraites dans un nouvel onglet où y sont ajoutés des éléments.

Ces données extraites doivent ensuite servir de filtre avancé à une autre feuille de données.

Comme les données extraites initialement ne sont pas toujours de la même taille (varient selon les filtres définis dans la première étape), la plage de définitions des critères de mon filtre avancé varie entre A1:H2 et A1:Hx, x correspondant au numéro de ligne de la dernière cellule non vide la colonne.

Tout mon problème vient donc du fait que je ne peux pas définir une plage fixe pour mon filtre avancé.

Et je ne comprends pas pourquoi cela ne fonctionne pas, je viens de refaire le test, avec "A1:H30" cela fonctionne, dès lors que je remplace et mets Range("A1",Range("H1").End(xlDown)) cela ne marche plus. Et dans mon exemple présent oui H30 est bien la dernière cellule non vide de la colonne...

Ne disposant pas de fichier, je ne peux pas effectuer de test.

Tu peux vérifier ta plage de critères en exécutant ta procédure en pas à pas ou en plaçant un point d'arrêt.

A+

Je ne peux pas mettre de fichier, on me dit que la taille est trop importante...Voici le code complet, que vouss pouvez tester en créant 2 onglets du même nom :

Sheets("Résultats filtre avancé 1").Select

Range("A1").Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlDown)).Select

Range("A1", Range("C1").End(xlDown)).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _

:=Sheets("Filtre avancé 2").Range("A1", Range("C1").End(xlDown)), Unique:=False

J'ai vérifié, si je mets Range("A1:C5") à la place de Range("A1", Range("C1").End(xlDown). Il doit s'agir d'un problème de formulation car le test est effectué...

Je comprends mieux

Essaie avec

    Sheets("Résultats filtre avancé 1").Select
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    With Sheets("Filtre avancé 2")
        Range("A1", Range("C1").End(xlDown)).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _
        :=.Range("A1", .Range("C1").End(xlDown)), Unique:=False
    End With

A+

Rechercher des sujets similaires à "criteria range filtre avance"