IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Extraction de données avec Zone de critères et zone d'extraction sur feuille active


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Par défaut Extraction de données avec Zone de critères et zone d'extraction sur feuille active
    Bonjour,

    je suis un peu novice avec les macros et je voudrais mettre ce nom de feuille "9522 AGE 01" en référence contenant ce nom car celui ci est variable pour chaque feuille. Mon classeur peut contenir entre 500 et 1500 feuilles nommées par une liste variable.

    Dans mon code j'ai mis en gras ce que je voudrais en variable sachant que le nom de ma feuille est en D4 de chaque feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Extraction() 
    ' 
    ' Extraction Macro 
    ' 
    Sheets("Base4").Select 
    Range("Q15").Select 
    Range("A8:R1523").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ 
    Sheets("9522 AGE 01").Range("F1:H2"), CopyToRange:=Range("X8:AF9"), Unique _ 
    :=False 
    Range("X9").Select 
    Range(Selection, Selection.End(xlToRight)).Select 
    Range(Selection, Selection.End(xlDown)).Select 
    Selection.Cut 
    Sheets("9522 AGE 01").Select 
    Range("E24").Select 
    ActiveSheet.Paste 
    Range("E24").Select 
    End Sub
    je suis sur Excel 2013

    merci pour l'aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 186
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si le nom de ta feuille est en cellule D4 et d'après ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CriteriaRange:= Sheets(Range("D4")).Range("F1:H2")
    Non testé
    Il faut proscrire l'utilisation des Select, Selection, Activate, etc.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Par défaut
    Merci Philippe pour ta réponse,

    Mais cela ne fonctionne pas

    Car mes critères ne sont pas sur la feuille de la base mais sur la future feuille d'extraction et le nom de la feuille est aussi sur la feuille d'extraction

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 186
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Tu parles d'une future feuille d'extraction, cela signifierait donc qu'elle n'est pas crée ?
    De toutes manière pour la simplicité de la lecture de ton code et pour rendre pérenne ton application, je te conseille d'utiliser trois variables objets de type Range pour définir les trois zones (Données, critères et exportation) en précisant bien la filiation complète de ceux ci (Classeur, feuille et plage de cellules).
    Ensuite c'est un jeux d'enfant.

    Petit Exemple ci-dessous qui utilise trois feuilles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub ExportByAdvancedFilter_Exemple_1()
    Dim rngSource As Range, rngTarget As Range, rngCriteria As Range
     With ThisWorkbook
      Set rngSource = .Worksheets("Data").Range("A1").CurrentRegion              ' Zone Data
      Set rngTarget = .Worksheets("Export").Range("A1")                          ' Zone d'exportation
      Set rngCriteria = .Worksheets("ExportDashboard").Range("A1").CurrentRegion ' Zone des critères
     End With
     Debug.Print "Source = " & rngSource.Address _
              & " Export = " & rngexport.Address _
             & " Critère = " & rngCriteria.Address
     ' Suppression des cellules de la feuille cible
     rngTarget.Worksheet.Cells.Clear
     ' Exportation suivant les critères
     rngSource.AdvancedFilter xlFilterCopy, rngCriteria, rngTarget
     ' Suppresion des références aux variables objets
     Set rngSource = Nothing: Set rngTarget = Nothing: Set rngCriteria = Nothing
    End Sub
    S'il y a plusieurs exportations à effectuer et que la zone d'exportation est différente à chaque fois, il faut assigner les références des plages à la variable objet dans une boucle.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Par défaut
    Erreur de ma part je suis sur la feuille d'extraction

    Mon objectif :

    c'est que par la suite je puisse dupliquer cette feuille contenant le bouton macro et qu'en cliquant dessus il me fasse l'extraction voulu

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 186
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Je ne vois pas clair dans ton objectif.
    De toutes manières quoi qu'il arrive, il faut définir ces trois zones et ensuite exporter.
    Quant aux critères, soit on les écrit manuellement dans la zone prévues pour cela et ce avant de lancer la procédure soit on fait écrire le critère par celle-ci.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [Tableaux] Extraction de données avec cURL
    Par mrsoyer dans le forum Langage
    Réponses: 7
    Dernier message: 09/07/2009, 15h16
  2. [XSLT] extraction de donnéés avec xsl
    Par bobkorn dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 21/04/2008, 12h25
  3. Réponses: 4
    Dernier message: 07/11/2007, 16h44
  4. MSSQL : extraction de données avec bcp
    Par khaledus dans le forum Outils
    Réponses: 1
    Dernier message: 24/08/2007, 15h58
  5. MSSQL : extraction de données avec bcp
    Par khaledus dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/08/2007, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo