VBA copier feuilles de deux classeurs vers un autre

  • Initiateur de la discussion Initiateur de la discussion Arpette
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Arpette

XLDnaute Impliqué
Bonsoir à toutes et à tous,
j'ai un classeur de base (A) avec une macro. Quand je lance la macro, j'ouvre 2 autres classeurs (B et C) suivant un chemin. Jusque là pas de problème. Ce que je souhaite, c'est supprimer le contenu des feuilles 1 et 2 de mon classeur A et y coller en feuille 1, la feuille de B et en feuille 2 la feuille de C.
Merci de votre aide, ci-dessous le début et la fin du code.
@+

Code:
Sub GPS()
Dim LeChemin As String
Dim LeChemin1 As String
Dim ClasseurFiche As Excel.Workbook
Dim ClasseurWpt As Excel.Workbook

Application.ScreenUpdating = False

LeChemin = "J:\cendre fiches"
LeChemin1 = "J:\cendre wpts"
 
 'On ouvre les deux classeurs
 Set ClasseurFiche = Excel.Workbooks.Open(LeChemin)
 Set ClasseurWpt = Excel.Workbooks.Open(LeChemin1)
 
 'Après ouverture des 2 classeurs, je souhaite supprimer les données
 'des feuilles 1 et 2 de mon classeur de base et coller les feuilles 1
 'des 2 classeurs ouverts que je ferme ensuite.
    
 'On ferme les deux classeurs
 ClasseurFiche.Close
 ClasseurWpt.Close
 
Set ClasseurFiche = Nothing
Set ClasseurWpt = Nothing

Application.ScreenUpdating = True
End Sub
 
Re : VBA copier feuilles de deux classeurs vers un autre

Salut Arpette,
à tester :

VB:
Option Explicit

Sub GPS()
Dim LeChemin As String
Dim LeChemin1 As String
Dim ClasseurFiche As Excel.Workbook
Dim ClasseurWpt As Excel.Workbook

Application.ScreenUpdating = False

LeChemin = "J:\cendre fiches"
LeChemin1 = "J:\cendre wpts"
 
'On ouvre les deux classeurs
Set ClasseurFiche = Excel.Workbooks.Open(LeChemin)
Set ClasseurWpt = Excel.Workbooks.Open(LeChemin1)
 
Workbooks(ThisWorkbook.Name).Activate
Application.DisplayAlerts = False
Sheets(Array("Feuil1", "Feuil2")).Delete
Application.DisplayAlerts = True
 
ClasseurWpt.Activate
Sheets("Feuil1").Copy Before:=Workbooks(ThisWorkbook.Name).Sheets(1)
 
ClasseurFiche.Activate
Sheets("Feuil1").Copy Before:=Workbooks(ThisWorkbook.Name).Sheets(1)

Workbooks(ThisWorkbook.Name).Activate
'On ferme les deux classeurs
ClasseurFiche.Close
ClasseurWpt.Close
 
Set ClasseurFiche = Nothing
Set ClasseurWpt = Nothing

Application.ScreenUpdating = True
End Sub

Cordialement,

Étienne
 
Re : VBA copier feuilles de deux classeurs vers un autre

Bonjour Arpette,

Pour effacer le contenu et le format,tu peux utiliser quelquechose du genre :

Code:
ThisWorkbook.Sheets("feuil1").UsedRange.ClearContents      'efface le contenu
ThisWorkbook.Sheets("feuil1").UsedRange.ClearFormats       'efface les formats

A+
 
Re : VBA copier feuilles de deux classeurs vers un autre

Bonsoir à toi Grand Chaman, un nouveau cousin, c'est incroyable comme ce forum est intéressant.... On voyage🙂) il y a toujours quelqu'un qui ne dort pas. Merci pour cette syntaxe que je ne connaissait pas. C'est nickel.
@+
 
Re : VBA copier feuilles de deux classeurs vers un autre

Salut Fredo, la solution que me propose Etienne, éfface bien mais le problème est que la copie insère une page (before), alors que je souhaite éffacer et remplacer par la nouvelle feuille.
Merci à toi, Etienne et Grand Shaman.
@+
 
Re : VBA copier feuilles de deux classeurs vers un autre

Bonsoir,

Tu peux essayer ceci (non testé) :
VB:
Sub GPS()
    Dim LeChemin As String, LeChemin1 As String, ClasseurFiche As Excel.Workbook, ClasseurWpt As Excel.Workbook
    Application.ScreenUpdating = False
    LeChemin = "J:\cendre fiches"
    LeChemin1 = "J:\cendre wpts"
'On ouvre les deux classeurs
    Set ClasseurFiche = Excel.Workbooks.Open(LeChemin)
    Set ClasseurWpt = Excel.Workbooks.Open(LeChemin1)
    Workbooks(ThisWorkbook.Name).Activate
    Application.DisplayAlerts = False
    Sheets(Array("Feuil1", "Feuil2")).UsedRange.Clear
    Application.DisplayAlerts = True
    ClasseurWpt.Sheets("Feuil1").Copy
    Workbooks(ThisWorkbook.Name).Sheets(1).Paste
    ClasseurFiche.Sheets("Feuil1").Copy
    Workbooks(ThisWorkbook.Name).Sheets(2).Paste
    'On ferme les deux classeurs
    ClasseurFiche.Close
    ClasseurWpt.Close
    Set ClasseurFiche = Nothing
    Set ClasseurWpt = Nothing
    Application.ScreenUpdating = True
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
706
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
908
Réponses
9
Affichages
730
Réponses
3
Affichages
800
Retour