Filtre élaboré et VBA

Bonjour,

J'ai créé un code et j'ai un petit soucis pour un filtre élaboré tout simple mais qui ne marche pas en VBA (j'ai récupéré cette partie avec l'enregistreur de Macro mais il ne veut pas le reproduire une fois dans le code !)

Range("A1:B162").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "F1:G2"), CopyToRange:=Range("K1:L162"), Unique:=False

Un peu d'aide serait la bienvenue, merci d'avance

Cdlt

Patrick

bonjour,

Tu ne peux pas utilisé une macro enregistrée de cette manière (surtout dans cette situation !)

Une macro enregistrée fonctionne dans un certain contexte. L'enregistreur tient compte du contexte actuel (au moment de l'enregistrement.)

Pour utiliser le code a un autre moment tu dois tenir compte du contexte à ce moment là (et il est bien rare qu'il n'ait pas changé)

Quand bien même ce serait le cas tu dois le préciser dans la macro.

Nom de la feuille source,

Nom de la feuille cible

Le filtre automatique est il affiché ? La plage est-elle filtrée ou non ?

Dans tous les cas cela induit des lignes supplémentaires dans ta macro.

Et ça en l'absence d'un fichier modèle on ne peut guère le faire à ta place.

A+

Bonjour,

merci pour votre réponse rapide

Je joint un morceau du fichier ...

voilà la feuille que j’obtiens ... je voudrais voir en colonne K et L le résultat filtré des colonne A et B selon le critère F et G (produit >0)

Merci beaucoup pour votre aide

Cdlt

127classeur1.xlsx (9.18 Ko)

Re...

Dans ces conditions, avec ce classeur, elle marche très bien cette macro.

Parce que -dans ce classeur- VBA ne peut pas se tromper : il n'y a qu'une feuille. Donc la macro s'adresse forcément à cette unique feuille... (encore que.... Mébon !)

Pour sécuriser (un peu) tu peux modifier ta macro de la manière suivante :

Sub test()
Dim Ws As Worksheet
Set Ws = Worksheets("Tri") 'à modifier en fonction du nom réel de la feuille cible.
Ws.Range("A1:B162").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Ws.Range("F1:G2"), CopyToRange:=Ws.Range("K1:L162"), Unique:=False
End Sub

A+

Merci beaucoup, ca marche nickel

cdlt

Rechercher des sujets similaires à "filtre elabore vba"