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
A voir également:

12 réponses

Julius500
 
Personne n'a une idée?
0
Francois
 
Salut
il suffit de relancer ta macro, puisqu'elle marche, non ?
0
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

Workbooks.Open FileName:="chemin_fichier"
Set fichier_ou_on_colle = Workbooks(Workbooks.Count)
0
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
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
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
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
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