Copier/coller d'un classeur à un autre [Résolu/Fermé]

Signaler
Messages postés
112
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
-
Messages postés
1402
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
13 septembre 2020
-
Bien le bonjour à vous !

Je sais que la question a déjà été posée mais j'arrive pas à adapter ce que j'ai trouvé sur internet (bientot les vacances !)

Bref toujours est il que mon code ne veut pas marcher pour faire une opération à la con :
copier l'onglet X du classeur Y dans l'onglet Z du classeur W

Est-ce clair ?

Ci-joint le code :


Sub M11_recupererdonnees()
Dim X.Y As Worksheet
'Dim Z.W As Worksheet

'recuperer fichier base de produits et l'afficher sur la nouvelle feuille
Workbooks.Open Filename:="Y.xlsx"
ThisWorkbook.Worksheets("X").Copy

Active.Workbooks "W.xlsm"
ThisWorkbook.Worksheets("Z").Range("A1").PasteSpecial Paste:=xlPasteValues
Workbooks("Y").Close True

Call M12_creationfeuille

End Sub


Merci d'avance !

2 réponses

Messages postés
577
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2018
83
Salut


Sub M11_recupererdonnees()
Dim W As Workbook.Y As Workbook

'recuperer fichier base de produits et l'afficher sur la nouvelle feuille
Workbooks.Open Filename:="Y.xlsx"
set Y = Workbooks("Y.xlsx")
set W = thisWorkbook

Y.Sheets("X").Cells.Copy Destination:=X.Sheets(W).Range("A1")
Y.Close True

Call M12_creationfeuille

End Sub


Je me suis peut-être emmêlé avec les W,X,Y,Z mais l'idée est là ^^
--
Messages postés
112
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
5
Bonjour mrjenkins, merci pour la réponse, je vais la tester de ce pas.

Juste avant, je souhaiterai avoir une petite précision :

Dim W As Workbook.Y As Workbook

Ce sont bien deux Dim As Workbook qu'il faut écrire c'est bien ça?

Merci
Messages postés
577
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2018
83
Tu peux mettre 1 Dim, séparé par des virgules. Avec 2 Dim, il faut le mettre sur 2 lignes
Messages postés
1402
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
13 septembre 2020
141
Bonjour Oukapaka, bonjour le forum,

Avec des variables correctement déclarées et définies c'est très facile :

Sub M11_recupererdonnees()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)

Set CS = ThisWorkbook 'définit le classeur source CS
Set OS = CS.Sheets("Y") 'définit l'onglet source OS
CA = "C:\Users\blabla\Documents" 'définit le chemin d'accès CA (à adapter)
Set CD = Workbooks.Open(CA & "Y.xlsx") 'définit le classeur destination CD
Set OD = CD.Sheets("Z") 'définit l'onglet destination OD
OS.Cells.Copy 'copie toutes les cellules de l'onglet source
OD.Range("A1").PasteSpecial Paste:=xlPasteValues 'colle les valeurs dans A1 de l'onglet destination
CD.Close True 'ferme le classeur destination CD en enregistrant
Call M12_creationfeuille
End Sub


À plus,
ThauTheme
Messages postés
112
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
5
Merci pour ta réponse ThauTheme.

Il est à savoir que le nom de mon fichier est une variable qui reprend une donnée du fichier, du coup je le cherche ainsi :
"D:\Dropbox\Projet Quinoa (1)\2. Flux et stockage\2.4 Leroy\Stock Leroy\Test sauvegarde macro\Stock" & Range("G2") & ".xlsm"



Ça vous parait viable?



Sinon mrjenkins, pour te répondre, j'ai testé ta solution mais j'ai un code erreur : Erreur d'execution 424, Objet requis

Du coup je ne sais pas bien quoi lui faire faire pour qu'elle ne m'embete plus cette vilaine macro.

Je vous remercie encore, parce que je galère sur le plus facile haha, alors que tout le reste marche presque impec' !
Messages postés
1402
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
13 septembre 2020
141 >
Messages postés
112
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016

Re,

Oui c'est viable, comme ca :

Sub M11_recupererdonnees()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)

Set CS = ThisWorkbook 'définit le classeur source CS
Set OS = CS.Sheets("Y") 'définit l'onglet source OS
CA = "D:\Dropbox\Projet Quinoa (1)\2. Flux et stockage\2.4 Leroy\Stock Leroy\Test sauvegarde macro\Stock\"
Set CD = Workbooks.Open(CA & OS.Range("G2").Value & ".xlsm") 'définit le classeur destination CD
Set OD = CD.Sheets("Z") 'définit l'onglet destination OD
OS.Cells.Copy 'copie toutes les cellules de l'onglet source
OD.Range("A1").PasteSpecial Paste:=xlPasteValues 'colle les valeurs dans A1 de l'onglet destination
CD.Close True 'ferme le classeur destination CD en enregistrant
Call M12_creationfeuille
End SubCD