Macro avec filtre élaboré

Résolu
kristof -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
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.

1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    1. kristof
       
      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
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Les Select dans le code, c'est déconseillé !
      0
    3. kristof44 Messages postés 2 Statut Membre
       
      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
    4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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