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 :

filtrer et copier des données à partir d'un fichier XL en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2011
    Messages : 31
    Points : 4
    Points
    4
    Par défaut filtrer et copier des données à partir d'un fichier XL en VBA
    Bonjour à tous,

    Je débute en VBA excl ,je veux faire un filtrer d'une base, copier le filtrage vers un autre classeur et mettre cette copie à la suite, pour l’instant j'arrive juste à récupérer les donner d'un fichier excel et les mettre dans un classeur,


    Merci pour l'aide

    Code:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub Bouton1_Clic()
    Reponse = MsgBox("Voulez vous charger l'Export RESPIRE pour l'année " & Range("B" & Range("D100")) & "?", vbQuestion + vbYesNo)
     
    If Reponse = vbYes Then
        Fichier = Application.GetOpenFilename("Fichier Excel, *.csv; *.xlsm;*.xls;*.xla")
     
     
        'Range("A1:Z300000").Value = Null
      If Fichier <> False Then
        Annee = Range("C100")
     
        Sheets(Annee).Activate
        Var_chemin = Fichier
        Fichier1 = ActiveWorkbook.Name
        Workbooks.Open Var_chemin, local:=True
        Fichier2 = ActiveWorkbook.Name
     
        Workbooks(Fichier2).Sheets(1).Range("A1:Z300000").Copy Workbooks(Fichier1).Sheets(Annee).Range("A1:Z300000")
     
     
        Windows(Fichier2).Activate
        ActiveWorkbook.Close savechanges:=False
        Windows(Fichier1).Activate
        Sheets("feuil1").Activate
     
      Else
        MsgBox "Vous n'avez exporté aucun fichier ReSPIRe"
      End If
     
    End If
    End Sub

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Points : 141
    Points
    141
    Par défaut
    bonjour Aminéé1666 le forum
    tu parles de filtrer, je ne vois aucun filtre dans ta macro seulement une ouverture d'une fenêtre pour sélectionner un fichier et après tu veux faire quoi car définir deux variables pour le même fichier là ?????
    Bref expliques STP ce que tu souhaites obtenir ce sera plus simple pour t'aider
    a te relire
    a+
    papou

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2011
    Messages : 31
    Points : 4
    Points
    4
    Par défaut
    Bonjour papou ,
    merci pour votre réponse,en fait je cherche à faire un filtre des colonnes et aussi des lignes du fichier avec des conditions. par exemple recuprer juste les colonnes A, B , F .. et si c'est possible de récuprer juste ligne qui confirme une condition par exemple toutes lignes de la colonne C =janvier .
    pour l'instant je ne trouve pas comment faire un filtre dans la macro.

    J'espère m'être bien expliqué.
    Merci d'avance

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Points : 141
    Points
    141
    Par défaut
    Bonjour aminée1666, le forum
    tu fais une boucle sur ta feuille ou sur un tableau avec une condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Cells(i,3)="Janvier" then rows(i).copy '(et là la destination)
    mais le plus simple et de joindre un petit fichier avec tes explications dedans et je te le ferai
    a+
    papou

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2011
    Messages : 31
    Points : 4
    Points
    4
    Par défaut
    Merci papou,
    je te joins le fichier , ce je veux faire c filtrer le fichier par exmple copier just les colonnes A B C et juste les lignes des semaine 1 2 3 4 de classeur1

    Merci bcp papou
    Fichiers attachés Fichiers attachés

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Points : 141
    Points
    141
    Par défaut
    Bonsoir aminée1666 le forum
    bon alors ok mais tu as mis deux fichiers on filtre sur la feuille3 et on envoi dans l'autre classeur outils?
    Ou alors on va chercher dans le classeur outil les données pour les coller filtrées en feuille 3 ??
    car ta macro fait référence à une feuille année 2011 ou autre et dans tes deux classeurs tu n'as pas de feuille 2011 ou autre alors des explications s'imposent.
    après je fais
    a+
    papou

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Points : 141
    Points
    141
    Par défaut
    Bonsoir Aminee1666 le forum
    bon en attendant d'avoir des éléments des questions du post 6, une macro pour trier ta feuil3 de outils_01 et coller le résultat en feuil2 de outils_01
    a+
    papou

    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
    21
    22
    23
    24
    25
    26
    27
    Sub trier()
        Dim i&, fin&, aa As Variant, bb As Variant, a&
        With Feuil3
            fin = Feuil3.Range("A" & Rows.Count).End(xlUp).Row
            y = 1
            aa = Feuil3.Range("A2:D" & fin)
            For i = 1 To UBound(aa)
                aa(i, 4) = ""
            Next i
            For i = 1 To UBound(aa)
                If aa(i, 1) >= 1 And aa(i, 1) <= 4 Then aa(i, 4) = "oui": y = y + 1
            Next i
            If y = 1 Then Exit Sub
            ReDim bb(y - 1, 3)
            y = 1
            For i = 1 To UBound(aa)
                If aa(i, 4) = "oui" Then
                    For a = 1 To 3
                        bb(y, a) = aa(i, a)
                    Next a
                    y = y + 1
                End If
            Next i
        End With
        Feuil2.Cells.Clear
        Feuil2.Range("A1").Resize(UBound(bb), UBound(bb, 2)) = bb
    End Sub

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2011
    Messages : 31
    Points : 4
    Points
    4
    Par défaut
    bonsoir papou,
    merci pour ta réponse, en fait la la feuil annee 2011 c la feuil classeur1 ,et ce que je veux c la filtreret apres la copier dans une nouvelle feuil cad si je clicke sur le bouton import il me fait l'imprtation et le filtrage des données, la macro que j'ai faite copie tout le classeur 1 sans filtre dans une nouvelle feuil
    Merci Papou

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Points : 141
    Points
    141
    Par défaut
    Re Aminée1666 le forum
    c'est confus tes explications !!!
    donc tu veux filtrer la feuille 2011 du fichier Classeur1.xlsx c'est bien cela??
    Oui c'est ce que tu veux mais mais mais mais dans le classeur la feuille 2001 n'existe pas !!!
    Alors déjà là il faudrait mettre de l'ordre, et ensuite je suppose que le classeur Outil_01 c'est celui qui te permettra de traiter tes demandes, mais après tu colles le tableau filtré ou ???? Dans le classeur Outils_01 ???
    Si oui quelle feuille???
    C'est simple tu réponds point par point et je vais comprendre mais pour le moment je sais que tu veux récupérer les colonnes A B C des semaines colonnes A entre 1 & 4 de la feuille 2011 qui n'existe dans aucun des deux classeurs que tu as joint??? et tu veux copier le résultat bah ou ???? si c'est dans le classeur Outils_01 il faut le dire
    a+
    papou

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2011
    Messages : 31
    Points : 4
    Points
    4
    Par défaut
    Bonjour papou

    Pour la macro trier elle marche trien bien, par contre je n'ai pas compris la ligne " Feuil2.Range("A1").Resize(UBound(bb), UBound(bb, 2)) = bb", en faite je veux modifie la macro pour quelle me donne la" somme des ho (collone B)/somme(AM))*7.8" pour chaque moi( janvier 1-4, férvier 5-8..........) apres copier le resultat dans la feuil 4 pour chaque moi .
    je te joints le fichier avec la feuil 4 .


    Ce qui concerne la feuil 2011 c le fichier à charger pour nous c le classeur1 et moi c que je veux comprendre est ce que je peux faire un filtre d'un fichier directement sans le copier dans une nouvelle feuil et faire une autre macro pour le filtre, et comme ça on copier pas les colonne que on ne va pas s'en servir car dans le cas ou j'aurai un fichier avec 5000 ligne et 15 colonne, la macro prend bcp de temps pour copier toutes les données

    J'espère m'être bien expliqué
    je te remercie bcp papou pour ton aide
    a+
    Fichiers attachés Fichiers attachés

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Points : 141
    Points
    141
    Par défaut
    Re aminée1666 le forum
    bon alors tu ne veux plus trier mais faire des sommes maintenant???
    Je vais te laisser réfléchir un peu à ce que tu souhaites réellement, et quand tu sauras vraiment ce que tu veux, repasse moi le fichier avec les explications et je ferai tout en même temps.
    de plus concernant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ou j'aurai un fichier avec 5000 ligne et 15 colonne, la macro prend bcp de temps pour copier toutes les données
    La copie d'un tableau de 5000 lignes 15 colonnes c'est 0,01 seconde !!! Oui c'est effectivement très long!!!
    Enfin bref comme je te l'ai dit je vais t'aider cependant j'aimerais que tu réfléchisses un peu a ce que tu souhaites vraiment et après tu repasses ton fichier et je te le fais
    a+
    papou

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2011
    Messages : 31
    Points : 4
    Points
    4
    Par défaut
    Bonsoir papou,
    Merci pour ton aide,en fait ce que je veux faire un botton qui récupre les donner d'une base de donner excel apres les copier dans une feuil de fichier(ça c fait) ,apres fair un 2eme bouton qui fait l' exportation de ces donner: je veux calculer( la somme des ho (collone B)/somme(AM))*7.8 pour chaque mois( janvier semaine (1-4), férvier semaine( 5-8)..........) apres copier le resultat dans la feuil 4 pour chaque mois .

    je te joint le fichier avec les les explications (dans le module2)

    Merci bcp papou
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/09/2007, 13h10
  2. extraire des données à partir d'un fichier texte
    Par bigplayer dans le forum Langage
    Réponses: 3
    Dernier message: 03/04/2007, 22h33
  3. récuperer des données à partir d'un fichier écrit en HTML
    Par moabomotal dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 01/11/2006, 20h50
  4. Réponses: 8
    Dernier message: 22/08/2006, 13h51
  5. Réponses: 4
    Dernier message: 19/03/2006, 16h20

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