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 8930 Statut Membre -
Patrice33740 Messages postés 8930 Statut Membre -
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
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
A voir également:
- Vba:Copier feuil entre classeurs differents
- Excel compter cellule couleur sans vba - Guide
- Dépassement de capacité vba ✓ - Forum Excel
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
1 réponse
Bonjour,
Je ne l'ai pas essayé, mais ce code devrait convenir:
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
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
remplace les 2 fois :
wshSource.Close
par
wbkSource.Close
Cdt
Charlyjack
Cordialement
Patrice