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 :

Rassembler plusieurs fichiers excel en un


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut Rassembler plusieurs fichiers excel en un
    Salut à tous,
    Je suis débutante dans VBA et je dois réaliser un code qui permet de rassembler plusieurs fichiers excel en un seul.
    Est ce que quelqu'un parmi vous a une idée?
    Merci d'avance.

  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
    Regarde ici http://www.developpez.net/forums/sho...d.php?t=442352, je pense que ça répond à ta question
    Sinon, tu dis

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    Le code qui convient le plus à mon cas est le suivant:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    '
    ' Assemble à la suite plusieurs fichiers dans un classeur.
    '
    Sub Assemble()
    Dim CL1 As Workbook, CL2 As Workbook
    Dim FL1 As Worksheet, FL2 As Worksheet
    Dim Fich As Variant, i As Byte, Rep$
     
        'Répertoire des fichiers à copier
        Rep = "C:\Documents and Settings\JQH\Bureau\Mari\boulot_test\test\"
        Set CL1 = ThisWorkbook
     
        'Ajoute une feuille au classeur destiné à recevoir les données des autres classeurs
        CL1.Sheets.Add
        CL1.ActiveSheet.Name = "FeuilCumul"
     
        Set FL1 = CL1.ActiveSheet 'Instance le la feuille
     
        'Crée le tableau des fichiers du répertoire
        Set Fich = application.FileSearch
     
        'Ouverture des fichiers du répertoire
        With Fich
            .LookIn = Rep
            .FileType = msoFileTypeExcelWorkbooks
            If .Execute(SortBy:=msoSortByFileName, _
                SortOrder:=msoSortOrderAscending) > 0 Then
                For i = 1 To .FoundFiles.Count
                    Set CL2 = Workbooks.Open(.FoundFiles(i))
                    DoEvents
     
                    'Parcours des feuilles de chaque classeur
                    For Each FL2 In CL2.Worksheets
                        'Dernière ligne où coller les données copiées dans FL2
                        NoLigne = FL1.Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
     
                        'Copie de la plage renseignée de chaque feuille du classeur
                        FL2.Range(FL2.Cells(1, 1), _
                            FL2.Cells(FL2.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row, _
                            FL2.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row)).Copy _
                            FL1.Range("A" & NoLigne)
                        DoEvents
                        Set FL2 = Nothing
                    Next
                    CL2.Close False 'fermeture du classeur copié
                    DoEvents
                    Set CL2 = Nothing
                Next i
            Else
                MsgBox "Aucun fichier dans le répertoire " & Rep
            End If
        End With
    End Sub
    Problème, qu'on j'exécute le module, il ne m'affiche aucune donnée.

  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
    Effectivement !
    Remplace ces lignes qui n'ont aucun sens
    FL2.Range(FL2.Cells(1, 1), _
    FL2.Cells(FL2.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row, _
    FL2.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row)).Copy _
    FL1.Range("A" & NoLigne)
    par celles-ci qui ont fait leurs preuves
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        FL2.Range("A1:" & Split(FL2.UsedRange.Address(0, 0), ":")(1)).Copy _
        FL1.Range("A" & NoLigne)
    Comprends pas comment j'ai pu mettre ça
    Tu dis

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 296
    Par défaut
    Merci pour ton aide.
    Est ce que tu peux m'expliquer STP ce bout de code que t'as mis (car je suis débutante ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FL2.Range("A1:" & Split(FL2.UsedRange.Address(0, 0), ":")(1)).Copy _
    FL1.Range("A" & NoLigne)
    Mais juste un petit bémol, il me met des vides entre les contenus de chaque fichier.

    Merci encore.

  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
    Citation Envoyé par mariafan
    Merci pour ton aide.
    Est ce que tu peux m'expliquer STP ce bout de code que t'as mis (car je suis débutante ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FL2.Range("A1:" & Split(FL2.UsedRange.Address(0, 0), ":")(1)).Copy _
    FL1.Range("A" & NoLigne)
    Oui, je peux (!)
    FL2.UsedRange.Address donne la plage de données de ta feuille en adresse absolue. Ex : "$A$1:$R$554"
    FL2.UsedRange.Address(0, 0) donne la plage mais sans les $
    Comme ça je peux faire un "Split" de la plage en utilisant les ":" comme séparateur
    Plage = "A1:R554"
    Tablo = Split("A1:R554", ":") transforme plage en tableau

    Tablo(0) = "A1"
    et
    Tablo(1) = "R554"
    et donc l'adresse de la fin des données.
    Si j'étais certain que A1 soit renseigné, j'aurais pu simplifier... Comme je n'en sais rien, cette syntaxe me permet, si tu as des lignes ou des colonnes entièrement vides dans la plage de données, de prendre malgré tout la plage complète.
    Citation Envoyé par mariafan
    Mais juste un petit bémol, il me met des vides entre les contenus de chaque fichier.
    Es-tu certaine que les lignes sont complètement vides ? Ces trous ne sont-ils pas dans tes fichiers ? N'y a-t-il pas des lignes renseignées en dessous ?
    A+

Discussions similaires

  1. Rassembler plusieurs fichiers excel
    Par Nad777 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/02/2008, 09h30
  2. Réponses: 9
    Dernier message: 10/05/2007, 10h56
  3. Créer une feuille récap de plusieurs fichiers excel
    Par babacool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/07/2006, 19h56
  4. Macros sur Plusieurs fichiers Excel
    Par Echizen1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 11h21
  5. [VBA-E]une macro unique pour plusieurs fichiers excel
    Par fanchic29 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/04/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