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 deux classeurs Excel


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
    Novembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2012
    Messages : 48
    Par défaut Fusionner deux classeurs Excel
    Bonjour à tous,

    Je dispose de deux dossiers. Chaque dossiers contient le même nombre de fichiers (100) avec des noms identiques :
    Dossier 1 : abc.xlsx, fgr.xlx,...
    Dossier 2: abc.xlsx, fgr.xlx,...

    J'aimerais fusionner les fichiers de même nom. (abc.xlsx avec abc.xlsx).

    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
    Sub SelectFolder()
        Set fso = CreateObject("Scripting.FileSystemObject")
     
        With Application.FileDialog(msoFileDialogFolderPicker)
            If .Show = -1 Then ' if OK is pressed
               folderpath = .SelectedItems(1)
                Set sFolder1DB = fso.GetFolder(folderpath)
     
            End If
        End With
     
         With Application.FileDialog(msoFileDialogFolderPicker)
            If .Show = -1 Then ' if OK is pressed
               folderpath = .SelectedItems(1)
                Set sFolder1TB = fso.GetFolder(folderpath)
     
            End If
        End With
     
        If sFolder1DB <> "" And sFolder1TB <> "" Then ' if a file was chosen
           For Each DBsheet In sFolder1DB.Files
     
                For Each TBsheet In sFolder1TB.Files
                Debug.Print DBsheet
                Debug.Print TBsheet
                    If DBsheet.Name = TBsheet.Name Then
     
                        Workbooks.Open FileName:=DBsheet.Path
     
                        Workbooks(DBsheet).Sheets("Database").Copy _
                        Before:=Workbooks(TBsheet).Sheets(1)
     
                        Workbooks.Close
     
                        End If
                Next
            Next
     
        End If
     
    End Sub
    J'obtiens l'erreur "mismatch 13" sur cette ligne. J'imagine que c'est parce que le classeur de destination n'est pas ouvert. Mais comme les noms sont identiques (abc.xlsx et abc.xlsx), je ne peux pas les ouvrir en même temps.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks(DBsheet).Sheets("Database").Copy _
    Before:=Workbooks(TBsheet).Sheets(1)
    Pouvez-vous svp m'aider à fusionner ces fichiers?

    Merci

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    encore une fois pourquoi utiliser FileSystemObject alors que le VBA dispose déjà de tout le nécessaire et en plus rapide !

    Avec un peu d'astuce il suffit déjà de juste renommer l'un des deux fichiers avant le l'ouvrir
    ou encore de juste copier les données dans un nouveau classeur !

    Sinon pas besoin d'ouvrir le second fichier - même aucun ! - voir le tutoriel  Lire et écrire dans les classeurs Excel fermés

    et les nombreux exemples dans les discussions de ce forum pour continuer dans le Copier / Coller …  

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2012
    Messages : 48
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    J'utilise cette librairie car j'ai lu sur un cours qu'elle était souvent bien utile. Peut-être ont-ils tort je vais continuer de lire d'autres cours

    J'ai utilisé votre première méthode, à savoir renommer le fichier grâce a un "saveas", que j'ai ensuite "Kill" à la fin du traitement et cela fonctionne parfaitement. Sujet résolu, merci.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/05/2011, 19h05
  2. fusionner des classeurs excel
    Par nizar24 dans le forum Modules
    Réponses: 33
    Dernier message: 25/02/2011, 14h45
  3. liaison de deux classeurs excel
    Par afssaLERH dans le forum Excel
    Réponses: 2
    Dernier message: 28/11/2007, 14h46
  4. comparaison des deux classeurs excel
    Par arch enemy123456 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/11/2006, 11h09
  5. [VBA-E]travail sur deux classeurs excel
    Par richou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 10h59

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