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 :

Fusionner des fichiers Excel en un seul [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Par défaut Fusionner des fichiers Excel en un seul
    Bonjour
    Cette macro de Mercatog concatène des fichiers Excel en un seul fichier, superbe.
    Je souhaiterais que chaque fichier ajouté soit séparé que d'une ligne, hors le code les colle les un après les autres toutes les 100 lignes (j = j + 100)

    De plus j'ai adapté ce code en mettant 1000 (& 1000 ) mais je ne suis pas certain si un fichier dépasse 1000 lignes que cela fonctionne, si je mets plus de 1000, vu le nombre de fichier celà peux bloquer, car 65536 lignes maxi.

    En fait je voudrais que chaque fichier soit collé pour le plus grand nombre possible, sachant que des fichiers font quelques lignes et d'autres plusieurs centaines de lignes.

    Merci pour l'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
    15
    16
    17
    18
    Sub ConcatenerDesFichiers()
    Dim Wbk As Workbook
    Dim Fich As String
    Dim j As Long
     
    Fich = Dir("C:\Concatener\*.xls")
    Application.ScreenUpdating = False
    Do While Fich <> ""
        Set Wbk = Workbooks.Open("C:\Concatener\" & Fich)
     
        ThisWorkbook.Sheets(1).Range("A" & 1 + j & ":Y" & 1000 + j).Value = Wbk.Sheets(1).Range("A1", Range("Y1").End(xlDown)).Value
     
        j = j + 100   'colle chaque fichier toutes les n lignes
        Wbk.Close
        Set Wbk = Nothing
        Fich = Dir
    Loop
    End Sub

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Je te propose ces modifications, à tester.
    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
    Sub ConcatenerDesFichiers()
    Dim Wbk As Excel.Workbook, oRng As Excel.Range
    Dim Fich As String
    Dim lign As Long, nB As Long
     
    Fich = Dir("C:\Concatener\*.xls")
    Application.ScreenUpdating = False
     
    lign = 1
     
    Do While Fich <> ""
        Set Wbk = Workbooks.Open("C:\Concatener\" & Fich)
        Set oRng = Wbk.Sheets(1).Range("A1", Range("Y1").End(xlDown))
        nB = oRng.Rows.Count
     
        ThisWorkbook.Sheets(1).Range("A" & lign & ":Y" & lign + nB - 1).Value = oRng.Value
     
        lign = lign + nB + 1  'saut d'une ligne
        Wbk.Close
        Fich = Dir
    Loop
     
    Set Wbk = Nothing
    Set oRng = Nothing
    End Sub
    Cordialement,

    PGZ

  3. #3
    Membre éprouvé Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Par défaut
    Bonjour pgz

    Merci pour ton aide
    J'ai lancé la macro et j'ai un bloquage sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ThisWorkbook.Sheets(1).Range("A" & lign & ":Y" & lign + nB - 1).Value = oRng.Value
    le premier fichier s'est chargé, le deuxième fichier est ouvert mais ne se mets pas en suivant, bloque ...

    Je ne voie pas ce qu'il faut modifier

    Merci

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Si le code de ton premier message fonctionnait, avec les inconvénients que tu veux régler, je ne vois pas trop.
    Tu peux ajouter une ligne de code pour afficher la valeur oRng.Address puis, en debug, regarder les valeurs de chaque variable sur la ligne qui provoque l'erreur. Il y a peut-être un pb de dimension des plages.

    Cordialement,

    PGZ

  5. #5
    Membre éprouvé Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Par défaut
    Re bonjour ppz
    Effectivement, j'ai relancé la première macro de Mercatog modifiée pour mes besoins, et j'arrive à charger tous mes fichiers qui ont une plage de lignes ne dépassant jamais les 150 lignes, donc en les collant toutes les 200 lignes j'ai une marge de manœuvre raisonnable, et tout fonctionne.
    Je vais en rester là, c'est vrai que de les coller avec une ligne d'intervalle était plus logique, mais comme je fais ensuite un tri, tous les écarts disparaissent.
    En tout cas, un grand merci pour te recherche.
    Bien cordialement.

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

Discussions similaires

  1. Concaténer des fichiers Excel dans un seul fichier avec VBA
    Par Thallhos dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/06/2014, 21h39
  2. [XL-2007] Fusionner plusieurs fichiers excel en 1 seul
    Par Jessica13 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 08/02/2013, 14h06
  3. [XL-2003] Faire fusionner des fichiers PDF en un seul
    Par Nikodemus dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 10/04/2012, 11h34
  4. [XL-2003] Regrouper des fichiers Excel en un seul
    Par piercleo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/11/2010, 14h28

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