Concaténer 2 fichiers excel.

Julius500 -  
 Julius500 -
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. Francois
     
    Salut
    il suffit de relancer ta macro, puisqu'elle marche, non ?
    0
  2. Julius500
     
    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
  3. Jean-Marie
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Julius500
     
    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
  6. Jean-Marie
     
    il faut que tu remette un ChDir avant l'open, sinon il cherche nouveau.xls sur le repertoire courant
    0
    1. Julius500
       
      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
  7. Jean-Marie
     
    Il manque les doubles quotes autour de "nouveau.xls"
    0
    1. Julius500
       
      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
  8. Jean-Marie
     
    desole, je suis un peu rouillé en VB :

    Workbooks.Open FileName:="chemin_fichier"
    Set fichier_ou_on_colle = Workbooks(Workbooks.Count)
    0
    1. Julius500
       
      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
  9. Jean-Marie
     
    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
  10. Julius500
     
    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
  11. Jean-Marie
     
    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
  12. Julius500
     
    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