Concaténer 2 fichiers excel.

Bonjour le Forum!

Je possède 2 fichiers excel et j'aimerai les fusionner pour n'en faire qu'un...

sub Copie_Feuilles22()
 
Dim WB As Workbook, fichier_a_traité As Workbook
Dim wk As Worksheet
 
 
Set WB = ThisWorkbook 'tu definis WB comme le workbook dans lequel tu travailles
fichier_a_ouvrir = Application.GetOpenFilename 'ouverture d'une boite de dialogur pour selectionner ton deuxième fichier (renvoie le nom du fichier)
 
Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné
   
With fichier_a_traité
ChDir "C:\Documents and Settings\J6993958\My Documents\dossier test"
    .SaveAs Filename:= _
        "Nouveau.xls" _
        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
 
    For Each wk In Worksheets
        wk.Copy After:=.Sheets(.Sheets.Count) 'tu copies les feuilles vers WB
    Next
 
.Close (False)    'fermeture de fichier a traite sans sauvegarde
 
 
End With
    
End Sub


Le fichier "nouveau.xls" s'enregistre et se ferme ensuite. On peut voir, une fois le fichier "nouveau.xls" réouvert, que la macro a fonctionner maintenant comment faire pour copier un autre .xls a la suite de celui ci ( "nouveau.xls")?

Merci pour vos réponses!

Cordialement,
Julien

12 réponses

  1. Salut
    il suffit de relancer ta macro, puisqu'elle marche, non ?
    0
    1. Oui mais il est obligé de supprimer le fichier "nouveau.xls", il efface donc le premier tableau et recopie par dessus .

      Ce que je veux c'est qu'il me copie les 2 fichiers l'un a la suite de l'autre dans " nouveau.xls"

      Une idée?
      0
      1. Peut-etre avec un truc du genre :

        Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné

        Set fichier_ou_on_colle = Application.Workbooks.Open(chemin_fichier_nouveau_xls)

        With fichier_a_traité

        For Each wk In Worksheets
        wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
        Next

        .Close (False) 'fermeture de fichier a traite sans sauvegarde

        fichier_ou_on_colle.save
        0
        1. Voila ce que donne mon code :

          Sub Copie_Feuilles22()
           
          Dim WB As Workbook, fichier_a_traité As Workbook
          Dim wk As Worksheet
           
          MsgBox " Sélectionner la Facture N"
          Set WB = ThisWorkbook 'tu definis WB comme le workbook dans lequel tu travailles
          fichier_a_ouvrir = Application.GetOpenFilename 'ouverture d'une boite de dialogur pour selectionner ton deuxième fichier (renvoie le nom du fichier)
          
          Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné
          
          With fichier_a_traité
          ChDir "C:\Documents and Settings\J6993958\My Documents\dossier test"
              .SaveAs Filename:= _
                  "Nouveau.xls" _
                  , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                  ReadOnlyRecommended:=False, CreateBackup:=False
          
              For Each wk In Worksheets
                  wk.Copy After:=.Sheets(.Sheets.Count) 'tu copies les feuilles vers WB
              Next
          
          
          
          .Close (False)    'fermeture de fichier a traite sans sauvegarde
           End With
           
          '--------------------------------------------
           
          MsgBox " Sélectionner la Facture N-2"
          
          Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné
          
          fichier_ou_on_colle = Application.Workbooks.Open("Nouveau.xls")
          
          With fichier_a_traité
          
          For Each wk In Worksheets
          wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
          Next
          
          .Close (False) 'fermeture de fichier a traite sans sauvegarde
          
          fichier_ou_on_colle.Save


          Malheuresement cela ne marche toujours pas a cause de la ligne "fichier_ou_on_colle = Application.Workbooks.Open("Nouveau.xls")"
          PS: j'ai d'abord mis le chemin complet de Nouveau.xls, cela n'a pas marché ...

          Une idée?
          0
          1. il faut que tu remette un ChDir avant l'open, sinon il cherche nouveau.xls sur le repertoire courant
            0
            1. MsgBox " Sélectionner la Facture N-2"
              
              ChDir "C:\Documents and Settings\J6993958\My Documents\dossier test"
              Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné
              fichier_ou_on_colle = Application.Workbooks.Open(nouveau.xls)
              With fichier_a_traité
              
              For Each wk In Worksheets
              wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
              Next
              
              .Close (False) 'fermeture de fichier a traite sans sauvegarde
              
              fichier_ou_on_colle.Save
              


              Comme montrer ci-dessus j'ai rajouté un ChDir avant le Open mais il me met toujours une erreur sur cette ligne "fichier_ou_on_colle = Application.Workbooks.Open(nouveau.xls)"
              Il me dit :" Erreur d'exécution '424' : Objet requis"
              0
          2. Il manque les doubles quotes autour de "nouveau.xls"
            0
            1. fichier_ou_on_colle = Application.Workbooks.Open("Nouveau.xls")

              Cela ne marche toujours pas, j'obtiens toujours la même erreur :-/

              Ps: Merci de m'aider Jean-Marie!
              0
          3. desole, je suis un peu rouillé en VB :

            Workbooks.Open FileName:="chemin_fichier"
            Set fichier_ou_on_colle = Workbooks(Workbooks.Count)
            0
            1. Et moi dont! Bon désolé de dire ca mais cela ne marche toujours pas!
              Je remet mon programme, entier, histoire de voir :

              Sub Copie_Feuilles22()
               
              Dim WB As Workbook, fichier_a_traité As Workbook
              Dim wk As Worksheet
               
              MsgBox " Sélectionner la Facture N"
              
              Set WB = ThisWorkbook 'tu definis WB comme le workbook dans lequel tu travailles
              fichier_a_ouvrir = Application.GetOpenFilename 'ouverture d'une boite de dialogur pour selectionner ton deuxième fichier (renvoie le nom du fichier)
              
              Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné
              
              With fichier_a_traité
              ChDir "C:\Documents and Settings\J6993958\My Documents\dossier test"
              
                  .SaveAs Filename:= _
                      "Nouveau.xls" _
                      , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                      ReadOnlyRecommended:=False, CreateBackup:=False
              
                  For Each wk In Worksheets
                      wk.Copy After:=.Sheets(.Sheets.Count) 'tu copies les feuilles vers WB
                  Next
              
              
              
              .Close (False)    'fermeture de fichier a traite sans sauvegarde
               End With
               
              '--------------------------------------------
               
              MsgBox " Sélectionner la Facture N-2"
              
              Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné
              
              
              Workbooks.Open Filename:="C:\Documents and Settings\J6993958\My Documents\dossier test"
              fichier_ou_on_colle = Application.Workbooks.Open("Nouveau.xls")
              Set fichier_ou_on_colle = Workbooks(Workbooks.Count)
              
              With fichier_a_traité
              
              For Each wk In Worksheets
              wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
              Next
              
              .Close (False) 'fermeture de fichier a traite sans sauvegarde
              
              fichier_ou_on_colle.Save
              


              Le message d'erreur est le suivant:
              "erreur d'exécution '1004' excel ne peut pas accéder à 'dossier test'.
              Le document est peut être en lecture seule ou crypté "
              0
          4. avec cette fonction, j'obtiens dans le fichier "nouveau.xls" toutes les feuilles des 2 fichiers ouverts via la boite de dialogue.

            C'est bien ca le résultat que tu veux ? (Attention, j'ai changé tes chemins en c:\

            Sub Copie_Feuilles22()

            Dim WB As Workbook, fichier_a_traité As Workbook
            Dim wk As Worksheet

            MsgBox " Sélectionner la Facture N"

            Set WB = ThisWorkbook 'tu definis WB comme le workbook dans lequel tu travailles
            fichier_a_ouvrir = Application.GetOpenFilename 'ouverture d'une boite de dialogur pour selectionner ton deuxième fichier (renvoie le nom du fichier)

            Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné

            With fichier_a_traité
            ChDir "C:\"

            .SaveAs FileName:= _
            "Nouveau.xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False

            For Each wk In Worksheets
            wk.Copy After:=.Sheets(.Sheets.Count) 'tu copies les feuilles vers WB
            Next

            .Close (False) 'fermeture de fichier a traite sans sauvegarde
            End With

            '--------------------------------------------

            MsgBox " Sélectionner la Facture N-2"

            Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné

            Workbooks.Open FileName:="C:\Nouveau.xls"
            Set fichier_ou_on_colle = Workbooks(Workbooks.Count)

            With fichier_a_traité

            For Each wk In Worksheets
            wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
            Next

            .Close (False) 'fermeture de fichier a traite sans sauvegarde
            End With
            fichier_ou_on_colle.Save

            End Sub
            0
            1. Oui c'est exactement ca que je veux !

              Mais cela ne marche point, au lieu de me copier 2 fichiers différent il me copie le même( le premier rentré ds la boite de dialogue) 2 fois de suite dans nouveau.xls
              0
              1. ce coup ci c'est la bonne :
                Sub Copie_Feuilles22()

                Dim WB As Workbook, fichier_a_traité As Workbook
                Dim wk As Worksheet

                MsgBox " Sélectionner la Facture N"

                Set WB = ThisWorkbook 'tu definis WB comme le workbook dans lequel tu travailles
                fichier_a_ouvrir = Application.GetOpenFilename 'ouverture d'une boite de dialogur pour selectionner ton deuxième fichier (renvoie le nom du fichier)

                Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné

                With fichier_a_traité
                ChDir "C:\"

                .SaveAs FileName:= _
                "Nouveau.xls" _
                , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
                ReadOnlyRecommended:=False, CreateBackup:=False

                For Each wk In Worksheets
                wk.Copy After:=.Sheets(.Sheets.Count) 'tu copies les feuilles vers WB
                Next

                .Close (False) 'fermeture de fichier a traite sans sauvegarde
                End With

                '--------------------------------------------

                MsgBox " Sélectionner la Facture N-2"

                fichier_a_ouvrir = Application.GetOpenFilename 'ouverture d'une boite de dialogur pour selectionner ton deuxième fichier (renvoie le nom du fichier)

                Set fichier_a_traité = Application.Workbooks.Open(fichier_a_ouvrir) 'ouverture du fichier selectionné

                Workbooks.Open FileName:="C:\Nouveau.xls"
                Set fichier_ou_on_colle = Workbooks(Workbooks.Count)

                With fichier_a_traité

                For Each wk In .Worksheets
                wk.Copy After:=fichier_ou_on_colle.Sheets(.Sheets.Count)
                Next

                .Close (False) 'fermeture de fichier a traite sans sauvegarde
                End With
                fichier_ou_on_colle.Save

                End Sub
                0
                1. Farpait!!!!

                  Je te remercie beaucoup pour ton aide !!! Je peu continuer a avancer sur mon projet!

                  Je n'ai qu'une seule chose a dire : "MERCI!"

                  Julien
                  0