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 :

[E-03] Filter les données d'une feuille, copier le résultat dans une autre


Sujet :

Macros et VBA Excel

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut [E-03] Filter les données d'une feuille, copier le résultat dans une autre
    Bonjour, je me prend la tête depuis le début de l'aprem sur un truc tout bête, mais je n'y arrive pas!

    Je voudrais que suite à l'appui sur un bouton, je vienne filtrer des données dans une feuille A en fonction de deux critères:

    -La Date (colonne A), données comprises entre ... et ...
    -Un critère précis dans une autre colonne (colonne F)

    Ensuite je voudrais copier les données restantes et les copier dans une autre feuille.

    Rien de sorcier!!!

    J'ai essayé en mode "enregistrer une macro". Sa fonctionne lorsque je l'enregistre, c'est à dire l'orsque je fait l'opération manuelement, mais dès que je veux executer la macro, les filtres ne marchent pas et le copier coller non plus.

    Pouvez vous me résoudre la chose?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut moilou2 et le forum
    Sa fonctionne lorsque je l'enregistre, c'est à dire l'orsque je fait l'opération manuelement, mais dès que je veux executer la macro, les filtres ne marchent pas et le copier coller non plus.
    Donne le code de ta macro
    A+

  3. #3
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut tiens je viens de faire un truc
    Bonsoir,
    Après avoir vu tous les cnseils, je préfère cette solution plus rapide en éxecution, à adapter bien sur;
    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
    19
    20
    Sub doublons()
    Dim cell As Range, pRECAP As Range, x As Integer, z As Integer
    With Worksheets("AYANTS DROIT") 'feuille des données à recuperer
    .Activate
     If Not .AutoFilterMode Then .Range("b7").AutoFilter 'verifie si le filtre existe
     .Range("b7").AutoFilter Field:=3, Criteria1:=Array("ACTIF", "CONJOINT", "ENFANT"), Operator:=xlFilterValues 'colonne filtrée
     Set PLAGE = .Range("b8:b" & Range("b65536").End(xlUp).Row).SpecialCells(xlVisible)
        PLAGE.Select
        Selection.Copy
        Sheets("recap").Select 'feuille où je copie les données
        Range("A40").Select 'cellule de départ où je copie les données
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False 'copie des valeurs uniquement
    If .FilterMode = True Then .ShowAllData 'désélectionne le filtre
    'après je donne un nom à la plage obtenue
    z = Sheets("recap").Range("a65000").End(xlUp).Row
    Set PLAGE = Sheets("recap").Range("a40:a" & z)
        ActiveWorkbook.Names("listeactif").RefersToR1C1Local = PLAGE
    End With
    End Sub
    en espérant que ça t'aide, bonne nuit
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Je préferais quelque chose adapté à ma situation sinon je ne vais pas m'en sortir.

    Voila le code que j'ai testé actuellement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Macro1()
     
        Sheets("Commandes").Select
        Selection.AutoFilter Field:=6, Criteria1:="710"
        Selection.AutoFilter Field:=2, Criteria1:=">=01/01/2009", Operator:=xlAnd _
            , Criteria2:="<01/02/2009"
        Range("A4:S2140").Select
        Selection.Copy
        Sheets("Commandes entre 2 dates").Select
        Range("A4").Select
        ActiveSheet.Paste
     
    End Sub
    C'est le code de l'assisant macro!

    Et quand j'ai enregistré la macro, j'arrive bien à ce que je veux

    Si j'essaye de le réexecuter en auto, dans ma feuille commande, sa me fait un filtre qui ne contient aucune donnée, et donc du coup sa me colle quelque chose de vide donc rien!

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut moilou2 et le
    forumSi j'essaye de le réexecuter en auto, dans ma feuille commande, sa me fait un filtre qui ne contient aucune donnée, et donc du coup sa me colle quelque chose de vide donc rien!
    On arrive aux limites de "l'intelligence" d'Excel
    Il arrive à créer un code, mais pas à se relire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro1()
    Dim x As Date
    Dim y As Date
    x = #1/1/2009#
    y = #1/2/2009#
        Sheets("Commandes").Activate
        ActiveSheet.AutoFilterMode = False
        With Range("A1").CurrentRegion
            .AutoFilter Field:=6, Criteria1:="710"
            .AutoFilter Field:=2, Criteria1:=">=" & x, Operator:=xlAnd _
              , Criteria2:="<" & y
            .Copy Sheets("Commandes entre 2 dates").Range("A4")
        End With
    End Sub
    Testes-le pour savoir si ça va mieux
    A+

  6. #6
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Sheets("Commandes").Activate
        ActiveSheet.AutoFilterMode = False
        With Range("A1").CurrentRegion
            .AutoFilter Field:=6, Criteria1:="710"
            .AutoFilter Field:=2, Criteria1:=">=" & dateDébut, Operator:=xlAnd _
              , Criteria2:="<" & dateFin
            .Copy Sheets("Commandes").Range("A4")
        End With
    Bon déja le filtre fonctionne cette fois, mais sa bloque sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Copy Sheets("Commandes").Range("A4")
    Là il n'y a que le copier? Pas le coller?

  7. #7
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Bon c'est bon sa fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Sheets("Commandes").Activate
        ActiveSheet.AutoFilterMode = False
        With Range("A1").CurrentRegion
            .AutoFilter Field:=6, Criteria1:="710"
            .AutoFilter Field:=2, Criteria1:=">=" & dateDébut, Operator:=xlAnd _
              , Criteria2:="<" & dateFin
        End With
     
        Sheets("Commandes").Select
        Range("A4:S2113").Select
        Selection.Copy
        Sheets("Commandes entre 2 dates").Select
        Range("A4").Select
        ActiveSheet.Paste
    par contre, comment je peux optimiser ce code, en ne copiant pas une plage de données fixe, mais en copiant jusqu'à la dernière ligne où il y a des données?

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut moilou2 et le forum
    As-tu essayer ma macro ? La macro que tu te crées donnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Sheets("Commandes").Activate
        ActiveSheet.AutoFilterMode = False
        With Range("A1").CurrentRegion
            .AutoFilter Field:=6, Criteria1:="710"
            .AutoFilter Field:=2, Criteria1:=">=" & dateDébut, Operator:=xlAnd _
              , Criteria2:="<" & dateFin
            .Copy Sheets("Commandes").Range("A4")
        End With
    en plus clair, tu copies la zone filtrée de la feuille "Commandes" et tu la colles à partir de la cellule A4 de la feuille "Commandes" : chercher l'erreur
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 21
    Dernier message: 26/02/2015, 21h20
  2. Réponses: 5
    Dernier message: 27/03/2013, 15h29
  3. [XL-2007] Copier une plage dans une feuille et la coller dans une autre du même classeur.
    Par kedmard dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2012, 14h55
  4. Réponses: 19
    Dernier message: 13/04/2012, 08h30
  5. Réponses: 7
    Dernier message: 25/09/2008, 14h51

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