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 :

Copier-coller entre fichier CSV et XLS


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Par défaut Copier-coller entre fichier CSV et XLS
    Bonjour, Bien mon premier message sur votre forum, j'espere le mesage est convenablement ecrit.

    Voila le topo:

    Je dois recuperer des informations dans plusieurs fichiers CSV qui se situent dans un meme repertoire. Pour recuperer les information la macro ouvre chaque fichier et copy toutes les cellules dans une feuille "TEMP" de mon fichier excel. Ensuite elle ferme le fichier CSV et elle travaile avec la feuille TEMP pour compiler mes donnees dans d'autres feuilles.

    Grosso modo ca donne comme pseudo code:
    - ouvrir le fichier CSV
    - selectionner toutes les cellules et copier
    - activer la feuille Temp de mon fichier Excel
    - selectionner toutes les cellules et coller
    - fermer le fichier CSV

    recommencer pour tous les fichiers CSV.

    mon probleme est que cela fonctionne pour 5 ou six fichiers puis apres j'ai bien ma selection sur mon fichier CSV mais mon collage dans ma feuille"Temp" ne marche plus.

    Je ne comprend pas pourquoi d'un seul coup la fonction paste me fait defaut.

    Merci pour votre aide


    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 CopierFichier(path As String, nomFichier As String)
     
    Workbooks.Open Filename:=path
    Cells.Select
    Selection.Copy
    ThisWorkbook.Sheets("temp").Activate
    Cells.Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Workbooks(nomFichier).Close SaveChanges:=False
     
    Range("A1").Select
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour cousin, bienvenue sur le forum,
    Le systère a besoin de temps pour Ouverture/fermeture de fichier et copier/coller. Pour ça, tu as la fonction DoEvents (l'aide en ligne t'en dira plus que moi)
    Ensuite, n'utilise pas une propriété comme nom de variable (Path est une propriété VBA ou Office) Remplacé ici par "Chemin".
    Enfin, les selects que tu as mis ne sont pas indispensables et allourdissent le code pour rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub CopierFichier(Chemin, nomFichier, LaFeuille)
    application.screenUpdating = false
        Workbooks.Open Filename:=Chemin & nomFichier
        DoEvents
        Cells.Copy Destination:=ThisWorkbook.Sheets(LaFeuille).Cells
        DoEvents
        Workbooks(nomFichier).Close False
        DoEvents
    application.screenUpdating = true
    End Sub
    Teste ça et dis-nous
    A+

    NB - Donne un nom à "LaFeuille"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Par défaut
    Merci ouskel'n'or pour ta reponse.

    J'ai essaye ton code mais j'ai toujours le meme probleme.
    Arrive au cinquieme fichier ca ne copie plus.

    Cependant je me pose des questions.

    Pourquoi dans ton code tu passes la feuille cible LaFeuille en parametre (d'ailleurs est ce que c'est le nom(string) ou bien la feuille au complet)?

    CopierFichier(Chemin, nomFichier, LaFeuille)
    Est ce que ca serait plus simple de ramerner les donnees dans la feuille "temp" en transformant le fichier CSV en fichier TXT comme je l'ai vu dans un tutoriel du site?
    Je vais essayer ca meme si je ne vois pas vraiment de difference que cela pourra faire.



    PS: Desole de te decevoir ouskel'n'or mais je ne suis pas un cousin. Si on reste dans la lignee familliale, je suis plutot un frangin qui a tape l'incruste chez les cousins.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par da991319
    Pourquoi dans ton code tu passes la feuille cible LaFeuille en parametre (d'ailleurs est ce que c'est le nom(string) ou bien la feuille au complet)?
    Parce que j'ai pensé que tu copiais chaque csv sur une feuille différente. En relisant je vois bien "que je m'ai trompé"
    Si tu copies tous tes fichiers sur la même feuille, tu as dû adapter.

    Citation Envoyé par da
    Est ce que ca serait plus simple de ramerner les donnees dans la feuille "temp" en transformant le fichier CSV en fichier TXT comme je l'ai vu dans un tutoriel du site?
    Si tu parles de cette discussion, c'est effectivement l'une des solutions que je conseille en cas de difficultés d'ouverture.
    As-tu biens mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenUpdating = false
    en début de code pour le repasser à True à la fin ?

    Desole de te decevoir ouskel'n'or mais je ne suis pas un cousin. Si on reste dans la lignee familliale, je suis plutot un frangin qui a tape l'incruste chez les cousins.
    Alors tu as dois connaître mon fils... Il en revient... tu ne l'as pas vu ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Par défaut
    J'ai essaye en utilisant la methode que tu preconisais en changeant le nom du fichier CSv en TXT. mais je me retrouve avec le meme probleme. Au bout du cinquieme fichier la copie sur ma feuille temp ne marche pas.

    As-tu biens mis

    Code :
    Application.screenUpdating = falseen début de code pour le repasser à True à la fin ?
    Oui je l'ai bien mis et ca ne change rien.

    Je vais essayer de passer par un textstream. Ca va m'obliger a traiter chaque ligne de mon fichier individuellement et je vais etre oblige de changer tout le code d'aquisition des donnees mais je ne vois pas comment je pourrais faire autrement. Ca m'intrigue quand meme que ma copie stoppe comme ca sans raison apparente.

    Je reposterai si j'ai reussi avec le textstream. Si jamais tu as d'autres idees a essayer pour m'eviter de tout retaper, je suis preneur.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Une question : Au total, avec quatre fichiers, tu ne dépasses pas 65535 lignes ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Par défaut
    Resalut,

    Je suis finalement passe par la fonction openastextstream. j'ai du me casser un peu plus la tete pour reecrire comment recuperer mes donnees mais bon jusqu'a present ca a l'air de fonctionner.
    Je vais continuer mes tests.

    Je ne sais tjrs pas pourquoi ca a plante mais bon c'est pas grave.

    merci pour ton temps

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

Discussions similaires

  1. Boucle copier coller entre 2 fichiers pour chaque ligne
    Par cheerleaders dans le forum Excel
    Réponses: 3
    Dernier message: 19/05/2015, 18h09
  2. Copier / Coller entre 2 fichiers excel
    Par roberto75 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/03/2011, 12h25
  3. Copier coller entre deux fichiers excel par macro
    Par miss-o-21 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/11/2009, 14h45
  4. VBA-E: Pb copier-coller entre Excel et .csv
    Par tiger118 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2006, 11h08
  5. Enregistrer un fichier ".CSV" en ".XLS"
    Par Isa31 dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/03/2006, 14h05

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