Vba:Copier feuil entre classeurs differents

Résolu
CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à toutes et à tous,

Je cherche à copier 2 feuilles d'un classeur A et 2 feuilles d'un classeur B vers un troisieme classeur.

J'ai trouvé des codes VBA sur info3000 "Synthèse de plusieurs classeurs", j'ai adapté sur excel 2003.

Mais l'exemple concerne 4 classeurs identiques, moi je n'ai que deux classeurs. Les feuil1 se collent à la suite comme prévu par contre je n'arrive pas à intégrer les feuilles 2.

Je vous indique le Début du code qui fonctionne :

Sub Recapsynthese()
Cells.Delete
'Titre Colonne
Range("A1") = "Société juridique"
Range("B1") = "Société de Gestion"
Range("C1") = "Fournisseur"

'Mise en forme

Range("A1:C1").Interior.Color = 13434879
Range("A1:C1").Font.Bold = True
'Ouvrir Classeur

Workbooks.Open "O:\DD\PILOT BUDGETAIRE\PILOT FACT\2012\FLUX FIN\COMMANDE 2012\COMMANDE FLUX FIN 2012.XLS"
DerniereLigne = ActiveSheet.UsedRange.Rows.Count
Range("A18:AC" & DerniereLigne).Copy
Workbooks("Recapsynthese.xls").Activate
DebutNomFichier = ActiveSheet.UsedRange.Rows.Count
Range("B" & ActiveSheet.UsedRange.Rows.Count + 1).Select
ActiveSheet.Paste
Range("A" & DebutNomFichier & ":A" & ActiveSheet.UsedRange.Rows.Count) = ("FLUX FIN")
Workbooks("COMMANDE FLUX FIN 2012.xls").Close

Workbooks.Open "O:\DDOP\PILOTAGE BUDGETAIRE\PILOTAGE FACTURATION\2012\FLUX FINANCIERS\COMMANDE 2012\COMMANDE SUPPORT 2012.XLS"
DerniereLigne = ActiveSheet.UsedRange.Rows.Count
Range("A18:AC" & DerniereLigne).Copy
Workbooks("Recapsynthese.xls").Activate

DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
Workbooks("Recapsynthese.xls").Sheets("Feuil1").Range("B" & ActiveSheet.UsedRange.Rows.Count + 1).Select
ActiveSheet.Paste
Range("A" & DebutNomFichier & ":A" & ActiveSheet.UsedRange.Rows.Count) = "SUPPORT "
Workbooks("COMMANDE SUPPORT 2012.xls").Close


Par avance merci
Charlyjack



1 réponse

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Je ne l'ai pas essayé, mais ce code devrait convenir:

Sub Recapsynthese()
Dim wbkSource As Workbook
Dim wshSource As Worksheet
Dim wshCible As Worksheet

Set wshCible = ActiveSheet
wshCible.Cells.Delete
'Titre Colonne
wshCible.Range("A1") = "Société juridique"
wshCible.Range("B1") = "Société de Gestion"
wshCible.Range("C1") = "Fournisseur"

'Mise en forme
wshCible.Range("A1:C1").Interior.Color = 13434879
wshCible.Range("A1:C1").Font.Bold = True

'Ouvrir Classeur 1
DebutNomFichier = wshCible.UsedRange.Rows.Count
Set wbkSource = Workbooks.Open("O:\DD\PILOT BUDGETAIRE\PILOT FACT\2012\FLUX FIN\COMMANDE 2012\COMMANDE FLUX FIN 2012.XLS")
Set wshSource = wbkSource.Worksheets(1)
DerniereLigne = wshSource.UsedRange.Rows.Count
wshSource.Range("A18:AC" & DerniereLigne).Copy wshCible.Range("B" & wshCible.UsedRange.Rows.Count + 1)
wshCible.Range("A" & DebutNomFichier & ":A" & wshCible.UsedRange.Rows.Count) = ("FLUX FIN")
wshSource.Close

'Ouvrir Classeur 2
DebutNomFichier = wshCible.UsedRange.Rows.Count
Set wbkSource = Workbooks.Open("O:\DDOP\PILOTAGE BUDGETAIRE\PILOTAGE FACTURATION\2012\FLUX FINANCIERS\COMMANDE 2012\COMMANDE SUPPORT 2012.XLS")
Set wshSource = wbkSource.Worksheets(1)
DerniereLigne = wshSource.UsedRange.Rows.Count
wshSource.Range("A18:AC" & DerniereLigne).Copy wshCible.Range("B" & wshCible.UsedRange.Rows.Count + 1)
wshCible.Range("A" & DebutNomFichier & ":A" & wshCible.UsedRange.Rows.Count) = ("SUPPORT ")
wshSource.Close

End Sub


1
CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour Patrice, et merci de t'être penché sur ma question,
j'ai essayé ce matin et malheureusement ça bloque.

J'ai un message d'erreur du type "Membre ... chemin introuvable" et le curseur se positionne sur la ligne wshSource.Close.

J'ai vérifié l'orthographe des chemins rien à faire !

Et je dois avoué que j'ai du mal à comprendre ton code (et oui je balbutie en vba !)

Cdt

Charlyjack
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
dsl,

remplace les 2 fois :
wshSource.Close

par
wbkSource.Close
0
CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonsoir Patrice et un grand merci à toi car ça fonctionne très bien !

Cdt

Charlyjack
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
De rien, au plaisir de te relire sur le Forum

Cordialement
Patrice
0