Copier/Coller entre 2 classeurs VBA

Résolu/Fermé
ti_mouton
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020
- Modifié par pijaku le 29/05/2015 à 10:16
pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
- 29 mai 2015 à 11:08
Bonjour,

Je suis novice en VBA et je cherche à développer une macro qui me permette de Copier/Coller les colonnes de la feuille "Listing des Projets" contenue dans le classeur "Base de données" sur la feuille "BDD" du classeur sur lequel je développe la macro.
Grâce à internet j'ai réussi à commencer l'écriture de la macro, mais elle ne marche pas, ça me met un message d'erreur au niveau de cette linge :
classeurSource.Sheets("Listing des Projets").Cells.Copy classeurDestination.Sheets("BDD").Range("A1").Paste

Voici ma macro en entier :
Sub CommandBouton1()
Dim classeurSource As Workbook, classeurDestination As Workbook
'ouvrir le classeur source (en lecture seule)
Chemin = ThisWorkbook.Path
Set classeurSource = Application.Workbooks.Open(Chemin & "\Base de données.xlsm")
'définir le classeur destination
Set classeurDestination = ThisWorkbook
'copier les données de la feuille"Listing des Projets" du classeur source vers la feuille "BDD" du classeur destination
classeurSource.Sheets("Listing des Projets").Cells.Copy classeurDestination.Sheets("BDD").Range("A1").Paste
'fermer le classeur source
classeurSource.Close False
 
End Sub



Merci pour votre aide
A voir également:

1 réponse

pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 695
Modifié par pijaku le 29/05/2015 à 10:21
Bonjour,

Essayez comme ceci :

Sub CommandBouton1()
Dim classeurSource As Workbook, classeurDestination As Workbook
'ouvrir le classeur source (en lecture seule)
Chemin = ThisWorkbook.Path
'définir le classeur destination
Set classeurDestination = ThisWorkbook
Set classeurSource = Application.Workbooks.Open(Chemin & "\Base de données.xlsm")
'copier les données de la feuille"Listing des Projets" du classeur source vers la feuille "BDD" du classeur destination
classeurSource.Sheets("Listing des Projets").Cells.Copy classeurDestination.Sheets("BDD").Range("A1")
'fermer le classeur source
classeurSource.Close False
 
End Sub


EDIT : explications :
J'ai placé la définition du classeur destination avant, puisqu'on "était sur" le ThisWorkbook.
Ce qui bugguait c'était la syntaxe avec .Paste.
Si vous voulez utiliser .Paste, il faut le mettre sur deux lignes de code :
Workbooks("machin").Sheets("Chose").Range("truc").Copy
Workbooks("destin").Sheets("feuille").Range("A1").Paste


Sans le Paste, sur une seule ligne de code :
classeurSource.Sheets("Listing des Projets").Cells.Copy classeurDestination.Sheets("BDD").Range("A1")

🎼 Cordialement,
Franck 🎶
2
ti_mouton
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020

29 mai 2015 à 11:01
Parfait ça fonctionne très bien ! Un grand MERCI pour votre aide précieuse et votre rapidité de réponse.
0
pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 695 > ti_mouton
Messages postés
143
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
5 septembre 2020

29 mai 2015 à 11:08
de rien.
A++
0