Macro avec filtre élaboré

Résolu/Fermé
kristof - 14 nov. 2011 à 12:09
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 14 nov. 2011 à 19:49
Bonjour,
J'ai enregistré une macro avec un filtre élaboré, je souhaiterai remplacer les valeurs brutes K28575 et K7 dans les "Range" par respectivement les zones comprises entre A1 et la dernière cellule de la feuille Data et Critère.
Voici le code généré :
Sheets("data").Range("A1:K28575").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("critère").Range("A1:A7"), CopyToRange:=Range("A1"), _
Unique:=False

Est ce possible ?
Merci à ceux qui se pencheront sur mon cas.


A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié par Patrice33740 le 14/11/2011 à 15:26
Essaies ce code :
Dim rngData As Range   
Dim rngCritere As Range   
Set rngData = Worksheets("Data").Range("a1").CurrentRegion   
Set rngCritere = Worksheets("Critères").Range("a1").CurrentRegion   
rngData.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rngCritere, _   
    CopyToRange:=Worksheets("Résultat").Range("a1")   

Cordialement
Patrice
1
Je m'en suis sorti en utilisant les "Noms définis".
Dans le principe, je sélectionne mes données je les nomme et j'utilise
leur nom dans le filtre élaboré.
J'ai nommé les Données "data", les Critères "critere"
Voici le source de la macro.

Sub Macro2()
'Positionnement dans feuille et sélection des data
Sheets("Feuil2").Select
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
'attribution d'un nom défini à la plage de données
ActiveWorkbook.Names.Add Name:="data", RefersToR1C1:=Selection
'
'Positionnement dans feuille et sélection des criteres
Sheets("Feuil3").Select
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
'attribution d'un nom défini à la plage de critères
ActiveWorkbook.Names.Add Name:="Critere", RefersToR1C1:=Selection
Sheets("Feuil4").Select
'
'utilisation du filtre élaboré
Range("data").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range("critere"), CopyToRange:=Range("A1"), _
Unique:=False
End Sub

Merci de t'être penché sur mon sujet.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié par Patrice33740 le 14/11/2011 à 16:04
Les Select dans le code, c'est déconseillé !
0
kristof44 Messages postés 2 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 14 novembre 2011
14 nov. 2011 à 19:22
Dès que possible je testerai ton code qui me semble plus simple que ce que j'ai fait.
Je ne savais pas que l'on pouvais définir des variables en range.
Et merci pour ton "déconseil" pour le select.

Peux tu me dire quelle incidence ont les select dans le code ?
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
14 nov. 2011 à 19:49
Il n'est pas utile de sélectionner une cellule ou une feuille pour agir dessus, c'est une perte de temps et une source d'erreur.
Le select feuille provoque les évènements Deactivate de la feuille quitée et Activate de feuille choisie.
Le select cellule provoque l'évènement SelectionChange de la feuille.
0