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 :

Problème macro compilation données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Par défaut Problème macro compilation données
    Bonjour,

    j'ai un problème avec la macro que j'ai créée : elle consiste à compiler les données de classeur dans un autre classeur excel.
    Sachant que les données des classeurs se situent dans un même dossier :les données de classeur se situent dans la même feuille et dans les mêmes ranges.

    Le problème qui se passe c'est que lorsque je lance la macro, aucune donnée n'est copiée dans le nouveau classeur (le classeur de comilation n'étant pas dans le même dossier).

    Est-ce que quelqu'un pourrait m'aider à corriger ma macro, svp.

    Merci.


    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
    Sub Compilation()
    Dim WkCompil As Workbook
    Dim WkFich As Workbook
     
    Set WkCompil = ThisWorkbook
    Range("D1").Select 'sélectionner la cellule de début du classeur de compilation de données
    Chemin = "C:\Documents and Settings\f.martayan\Bureau\Test" 'Je spécifie le chemin d'accès où se trouve mes fichiers
    fichier = Dir(Chemin & "*.xls") 'Premier fichier à ouvrir
        Do While fichier <> "" 'Boucle sur tous les fichiers excel du dossier
            Set WkFich = Workbooks.Open(Filename:=Chemin & fichier) 'Ouvrir le classeur où sont les cellules à copier
            WkFich.Worksheets("Feuil1").Select 'Sélectionne la feuille 1 du classeur à copier
            Range("A1:A8").Copy 'Copie du range
            WkCompil.ActiveSheet.Paste 'je sélectionne le classeur où sera la compilation de données et je colle les cellules
            WkFich.Activate
            Application.CutCopyMode = False
            WkFich.Close savechanges:=False
            WkCompil.Activesheets.Cells
            WkCompil.ActiveSheet.UsedRange.Rows.Count(1, 1).Select
            fichier = Dir 'Fichier suivant
            Loop
    End Sub

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,
    au vu de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            WkCompil.ActiveSheet.Paste 'je sélectionne le classeur où sera la compilation de données et je colle les cellules
    je crois qu'il copie bien les données mais toujours au même endroit et que donc les données de chaque classeur écrasent celles du précédent.
    Tu devrais gérer le range de destination en incrémentant un compteur de 8 en 8.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Par défaut compilation données
    j'ai essayé avec un seul fichier à compiler mais là non plus il ne copie aucune cellule donc je ne vois pas !

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    je crois qu'il y a aussi des fautes dans ton code :
    je mets en gras les corrections que je suggère, sans avoir testé .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Chemin = "C:\Documents and Settings\f.martayan\Bureau\Test" 'Je spécifie le chemin d'accès où se trouve mes fichiers
    fichier = Dir(Chemin & "\*.xls", vbhidden) 'Premier fichier à ouvrir
        Do While fichier <> "" 'Boucle sur tous les fichiers excel du dossier
            Set WkFich = Workbooks.Open(Filename:=fichier) 'Ouvrir le classeur où sont les cellules à copier
    je n'ai pas regardé plus loin.

    Si tu as des problèmes, pense au debug.... il t'éclaire sur ce que tu as fait par rapport à ce que tu crois avoir fait.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Par défaut Compilation de données
    Pour en revenir à mon fichier, je viens de m'y repencher (pas eu le temps avant et j'ai fait des modifs et il y a encore un seul bug à la fin)

    Cela copie bien les données de mon fichier mais arrivée à la phrase suivante j'ai un message d'erreur "Erreur d'exécution '438' : propriété ou méthode non gérée par cet objet".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WkCompil.ActiveSheet.UsedRange.Rows.Count(1, 1).Select
    En fait cette ligne de code me permet de ne pas écraser mes données du 1er fichier copié à partir des nouvelles données (en fait c'est ce que j'aimerai bien que cela fasse). Autrement dit que lorsqu'il copie les nouvelles données, il les place à côté des précédentes et non pas sur ces dernières).Quelq'un peut-il me renseigner ?

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    dans la mesure où tu veux mettre tes données sous les précédentes à partir de la colonne A, tu peux essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim lrow as long
    '....
    lrow = WkCompil.ActiveSheet.UsedRange.Rows.Count
    Wkcompil.ActiveSheet.cells(lrow +1, 1).Select

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/04/2014, 13h52
  2. Macro compilation de données
    Par qeelocke dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/02/2013, 12h22
  3. [XL-2003] Problème de compilation Macro
    Par Yvanou dans le forum Excel
    Réponses: 2
    Dernier message: 11/10/2012, 18h02
  4. [XL-2003] Probléme macro recupération de données
    Par koni77 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/05/2011, 23h40
  5. Problème Macro pour trier des données
    Par lmb19 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/11/2010, 00h00

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