Filtre Elaboré sélection de la plage

3 réponses
Avatar
kristofb
Bonjour =E0 tous,
En pack office 2003, je cherche a effectu=E9 un filtre =E9labor=E9 qui
prennent en compte toutes les cellules de la feuille "data", en
utilisant les crit=E8res pr=E9sent dans la feuille "crit=E8re" le tout dans
la feuille r=E9sultat.
Sheets("r=E9sultat").Select
Range("A1").Select
Sheets("data").Range("A1:K28575").AdvancedFilter
Action:=3DxlFilterCopy, _
CriteriaRange:=3DSheets("crit=E8re").Range("A1:A7"),
CopyToRange:=3DRange("A1"), _
Unique:=3DFalse

J'ai essay=E9
Sheets("data").Range("A1", "A" &
Range("A1").SpecialCells(xlLastCell).Row).AdvancedFilter
Action:=3DxlFilterCopy, _
CriteriaRange:=3DSheets("crit=E8re").Range("A1:A7"),
CopyToRange:=3DRange("A1"), _
Unique:=3DFalse

Mais au lieu d'avoir le r=E9sultat escompt=E9 je n'ai que la cellule A1 de
la feuille Data.

Quelqu'un peut il m'aider ?
Merci =E0 tous.

3 réponses

Avatar
isabelle
bonjour kristof,

essaie avec

CriteriaRange:="critère!A1:A7"

--
isabelle



Le 2011-11-10 10:59, kristofb a écrit :
Bonjour à tous,
En pack office 2003, je cherche a effectué un filtre élaboré qui
prennent en compte toutes les cellules de la feuille "data", en
utilisant les critères présent dans la feuille "critère" le tout dans
la feuille résultat.
Sheets("résultat").Select
Range("A1").Select
Sheets("data").Range("A1:K28575").AdvancedFilter
Action:=xlFilterCopy, _
CriteriaRange:=Sheets("critère").Range("A1:A7"),
CopyToRange:=Range("A1"), _
Unique:úlse

J'ai essayé
Sheets("data").Range("A1", "A"&
Range("A1").SpecialCells(xlLastCell).Row).AdvancedFilter
Action:=xlFilterCopy, _
CriteriaRange:=Sheets("critère").Range("A1:A7"),
CopyToRange:=Range("A1"), _
Unique:úlse

Mais au lieu d'avoir le résultat escompté je n'ai que la cellule A1 de
la feuille Data.

Quelqu'un peut il m'aider ?
Merci à tous.
Avatar
kristofb
Merci de ton aide Isabelle,
Cependant, avec ce code, j'ai "erreur d'execution '1004': Référence
non valide".

Sheets("résultat").Select
Range("A1").Select
Sheets("data").Range("A1", "A" &
Range("A1").SpecialCells(xlLastCell).Row).AdvancedFilter
Action:=xlFilterCopy, _
CriteriaRange:="critère!A1:A7", CopyToRange:=Range("A1"), _
Unique:úlse
Avatar
kristofb
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:úlse
End Sub

Merci à celles et ceux qui m'ont aidé.