XL 2019 copie de données de feuille à feuille entre deux classeurs

youpi457032

XLDnaute Occasionnel
Bonjour,
Je cherche à copier depuis un classeur fermé stocké sur mon drive (one drive) des données d'une feuille (nommée Page 1) dans la plage nommée A2:z700, vers un autre classeur ; lui ouvert, et sur la feuille nommée base_MALAFRETAZ, à partir de de la cellule A2
J'ai testé la macro suivante :
/
Code:
 :
Private Sub Importerdonnees_Click()

Dim WbkDest As Workbook
Dim WsDest As Worksheet, WsSource As Worksheet
Dim LigDest As Long

    Application.ScreenUpdating = False
    Set WsSource = Workbooks.Open("C:\Users\youpi\OneDrive\Documents\inscriptionmalafretaz.xlxs")
    Set WbkDest = ThisWorkbook.Sheets("base_MALAFRETAZ")
    Set WsDest = WbkDest.Sheets(1)
    LigDest = WsDest.Range("A2" & Rows.Count).End(xlUp).Row + 1
    WsSource.Range("A2:z700").Copy
    WsDest.Range("A2" & LigDest).PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False

    WbkDest.Close True
    Set WsDest = Nothing
    Set WbkDest = Nothing
    Set WsSource = Nothing
    Application.ScreenUpdating = True
End Sub

\[code]

 Le code me renvoie une erreur d'exécution 1004 : il ne trouve pas mon fichier source ( il me dit qu'il a peut être déplacé, supprimé....)
Quelqu'un peut il m'aider à passer cette erreur ? 
Merci d'avance
 

youpi457032

XLDnaute Occasionnel
Bon j'ai avancé....
J'ai corrigé une partie de mon code ... plus d'erreur 1004... C'est déjà çà...
Parc contre ile me génère une erreur 424 "objet requis"
Pouvez-vous m'aider à corriger ?
erreur 424 objet attendu.jpg
 

youpi457032

XLDnaute Occasionnel
même écrit comme ça

Private Sub Importerdonnees_Click()
Dim WbkDest As Workbook
Dim WsDest As Worksheet, WsSource As Workbook
Dim LigDest As Long

Application.ScreenUpdating = False
Set WsSource = Workbook.Open("C:\Users\youpi\OneDrive\Documents\inscriptionmalafretaz.xlxs")
Set WbkDest = ThisWorkbook.Sheets("base_MALAFRETAZ")
Set WsDest = WbkDest.Sheets(1)
LigDest = WsDest.Range("A2" & Rows.Count).End(xlUp).Row + 1
WsSource.Sheets("Page 1").Range("A2:z700").Copy
WsDest.Range("A2" & LigDest).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

WbkDest.Close True
Set WsDest = Nothing
Set WbkDest = Nothing
Set WsSource = Nothing
Application.ScreenUpdating = True
End Sub

toujours en erreur 424....je sèche .....
 

youpi457032

XLDnaute Occasionnel
même écrit comme ça

Private Sub Importerdonnees_Click()
Dim WbkDest As Workbook
Dim WsDest As Worksheet, WsSource As Workbook
Dim LigDest As Long

Application.ScreenUpdating = False
Set WsSource = Workbook.Open("C:\Users\youpi\OneDrive\Documents\inscriptionmalafretaz.xlxs")
Set WbkDest = ThisWorkbook.Sheets("base_MALAFRETAZ")
Set WsDest = WbkDest.Sheets(1)
LigDest = WsDest.Range("A2" & Rows.Count).End(xlUp).Row + 1
WsSource.Sheets("Page 1").Range("A2:z700").Copy
WsDest.Range("A2" & LigDest).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

WbkDest.Close True
Set WsDest = Nothing
Set WbkDest = Nothing
Set WsSource = Nothing
Application.ScreenUpdating = True
End Sub

toujours en erreur 424....je sèche .....
je n'y mets pas de mauvaise foi ni volonté, mais là je sèche vraiment.... je suis aveuglé....
 

youpi457032

XLDnaute Occasionnel
en mettant le " S" je me retrouve avec une erreur 1004 (fichier introuvable, supprimé, renommé ou déplacé )....
snifffffff

code réécrit :

Private Sub Importerdonnees_Click()
Dim WbkDest As Workbook
Dim WsDest As Worksheet, WsSource As Workbook
Dim LigDest As Long

Application.ScreenUpdating = False
Set WsSource = workbooks.Open("C:\Users\youpi\OneDrive\Documents\inscriptionmalafretaz.xlxs")
Set WbkDest = ThisWorkbook.Sheets("base_MALAFRETAZ")
Set WsDest = WbkDest.Sheets(1)
LigDest = WsDest.Range("A2" & Rows.Count).End(xlUp).Row + 1
WsSource.Sheets("Page 1").Range("A2:z700").Copy
WsDest.Range("A2" & LigDest).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

WbkDest.Close True
Set WsDest = Nothing
Set WbkDest = Nothing
Set WsSource = Nothing
Application.ScreenUpdating = True
End Sub
 

youpi457032

XLDnaute Occasionnel
merci.... dejà pour ce début !!!
je n'ai plus d'erreur d'execution d'aucun genre.... ca m'ouvre bien mon fichier source.
Par contre rien ne se copie

dans l'idée j'aimerais depuis mon fichier source copier de A2 a Zfin..... (dernière ligne non vide)
puis coller / écraser les données dans ma feuille destination autre classeur a partir de A2 sans jamais écrire au delà de la colonne Z...
Enfin, qui peux le plus peux le moins .... fermer automatiquement le fichier source à la fin de la copie des données.
Merci !!
A demain ( PS, je bosse de nuit...je vais dormir jusqu'à midi)
 

job75

XLDnaute Barbatruc
Bonjour youpi457032, le forum,

L'incompatibilité de type vient du fait que vous avez déclaré WbkDest As Workbook alors que vous définissez une feuille, donc remplacez ces 2 lignes :
VB:
Set WbkDest = ThisWorkbook.Sheets("base_MALAFRETAZ")
Set WsDest = WbkDest.Sheets(1)
par :
VB:
Set WsDest = ThisWorkbook.Sheets("base_MALAFRETAZ")
Par ailleurs LigDest = WsDest.Range("A2" & Rows.Count).End(xlUp).Row + 1 ne va pas, écrivez :
VB:
LigDest = WsDest.Range("A" & Rows.Count).End(xlUp).Row + 1
De même écrivez :
VB:
WsDest.Range("A" & LigDest).PasteSpecial Paste:=xlPasteValues
Enfin remplacez WbkDest.Close True par :
VB:
WsSource.Close False
Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
311 735
Messages
2 082 023
Membres
101 873
dernier inscrit
excellllll