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 :

Regrouper plusieurs fichiers *.wsd (csv) en une seule feuille dans un seul fichier excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Regrouper plusieurs fichiers *.wsd (csv) en une seule feuille dans un seul fichier excel
    Bonjour a tous et un grand merci pour le forum.

    J´ai un problème, j´ai plein de fichier en *wsd (ce sont des fichier csv) et je voudrais les regrouper dans un fichier excel pour pouvoir faire des rapport.

    Ces fichiers wsd sont dans diffèrent répertoire mensuel, chaque fichier correspond a un jour du mois. Se que je voudrais c´est prendre les 30 ou 31 fichier et les réunir en un seul pour pouvoir faire un rapport mensuel.

    Je sais pas trop par ou commencer, j´avais penser a du code VBA avec de la macro peut être.

    Je pensais a ouvrir um fichier excel, faire une macro pour lancer le code vba accoupler a un bouton, il me demande avec quel répertoire je veux travailler, je lui dis par ex. le mois de janvier 2009 et il me réuni tous les fichier *.wsd en un fichier excel (txt, csv par ex.).

    Pouvez vous me donner quelque idées svp.

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour le principe :
    - Ouvrir chaque fichier qui par structure ne comporte qu'une feuille de calculs
    - Copier chaque feuille de calculs dans le fichier principal
    ou
    - Copier le contenu de chaque feuille à la suite l'un de l'autre dans une feuille unique du fichier principal.

    Pour la solution :
    - Je pense que tu as l'ouverture de chaque fichier ; il suffira d'ajouter une boucle sur la liste...
    - Si tu n'as pas la liste mais que les fichiers sont dans le même répertoire, tu peux les lister avec une boucle sur Dir (tu as la méthode dans l'aide en ligne )
    - La copie de chaque feuille de calculs : Tu enregistres en faisant
    - La copie de chaque feuille dans une seule : La solution ici si tu lis bien tout

    Bon après-midi

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    J´ai essayer le code que vous m´avez dis, dans mon cas je ne veut pas ouvrir les 30 / 31 fichier, je voudrais les copiez tous dans la même feuille dans le même fichier excel pour pouvoir le travailler plus facilement. les fichier on un peut prêt 3025 ligne chacun. Si vous voulez je peut mettre 2 ou 3 jours de ses fichier sur le forum pour vous compreniez mieux de se que je parle.

    Je vous remercie de votre aide.

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Je n'ai pas dit d'ouvrir tous les fichier à la fois mais
    - d'ouvrir un txt
    - copier les données à la suite dans une feuille de calculs du fichier principal (Thisworkbook)
    - puis de refermer le txt
    - puis passer au txt suivant de la liste.

    Le code que je t'ai indiqué fait ça (Solution 2). Il suffit que tu lui envoies le nom du fichier à copier dans le paramètre CL2, procédure "Sub Copie(CL2 As Workbook)"
    Les différences ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            NomFich = Dir(Chemin & "*.wsd")
    à la place de
    NomFich = Dir(Chemin & "*.xls")
    et
    Chemin = "D:\xls\Test\"
    à remplacer par le vrai chemin (!)

    As-tu essayé quelque chose ou attends-tu qu'on te donne le code adapté aux noms de tes fichiers et au chemin qui est le leur ?

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Points : 307
    Points
    307
    Par défaut
    Comme je connais les difficultés quand on débute , voici un exemple pour récuperer le contenu de tous les fichiers d'un répertoire choisi :

    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 importation_fichier_csv()
    fichier_principal = ActiveWorkbook.name
     feuillet_principal = ActiveSheet.name
     
    filetoopen = Application.GetOpenFilename("Fichiers texte , *.csv; *.txt; *.wsd", 2, Title, MultiSelect)
     
    If filetoopen <> False And InStrRev(filetoopen, "\") > 0 Then
      Set fs = CreateObject("Scripting.FileSystemObject")         ' on défini un FileSystem pour traiter des fichiers et répertoires
        chemin_Fichier = Mid(filetoopen, 1, InStrRev(filetoopen, "\"))
     
          Set f_Dir = fs.getFolder(chemin_Fichier).Files  ' f_Dir renvoi la collection des noms de fichier présent dans le G_repertoire quelque  soit le type de fic excel ou autre .
             For Each f1 In f_Dir
                   If InStr(1, f1.name, ".wsd") > 0 Then
                       nb_ligne_avant = Workbooks(fichier_principal).Worksheets(feuillet_principal).Range("A65536").End(xlUp).Row
                        Workbooks.Open f1.name     ' il faut déterminer la syntaxe ne fonction des caractéristiques séparateur , format ...
                          feuillet_import = ActiveSheet.name
                          nb_ligne_import = Workbooks(f1.name).Worksheets(feuillet_import).Range("A65536").End(xlUp).Row
                       'on recopie les lignes fichiers
                          Workbooks(fichier_principal).Worksheets(feuillet_principal).Rows(CStr(nb_ligne_avant + 1) & ":" & CStr(nb_ligne_avant + nb_ligne_import)).Value = Workbooks(f1.name).Worksheets(feuillet_import).Rows("1:" & nb_ligne_import).Value
                        Workbooks(f1.name).Close (savechanges = False)
                      nb_fic = nb_fic + 1
                       End If
              Next
     
    End If
    End Sub

Discussions similaires

  1. extraction en fichier plat (csv) d'une base oracle sous unix
    Par djfredou dans le forum Import/Export
    Réponses: 0
    Dernier message: 21/01/2010, 14h26
  2. Packager une appli java dans un seul fichier
    Par scherzoteller dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 25/05/2009, 11h10
  3. Réponses: 6
    Dernier message: 30/03/2009, 18h13
  4. [VBA Excel] Copie d'une feuille dans un autre fichier
    Par nattyman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2006, 10h35
  5. Réponses: 1
    Dernier message: 13/06/2006, 17h41

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