Bonjour,
Je cherche à automatiser la copie d'une partie d'une feuille d'un classeur source vers une feuille d'un classeur destination. La macro se trouve sur le classeur destination. J'ai cherché à le faire sans ouvrir le fichier source mais ça me semble tellement plus simple en l'ouvrant que j'ai choisi cette méthode. Ma feuille source contient 21 colonnes mais je ne veux copier que les 7 premières. De même, ma feuille destination contient 21 colonnes mais je ne veux écraser que les 7 premières. Le nombre de lignes est variable.
Voila le code que j'ai écris :
La ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Private Sub CommandButton1_Click() Dim Chemin As String, Fichier As String Dim Wrdarray() As String 'Recuperation du chemin complet (chemin + nom fichier) sChemin = Application.GetOpenFilename Wrdarray() = Split(sChemin, "\") 'Extraction du nom de fichier seul Fichier = Wrdarray(UBound(Wrdarray)) 'Extraction du chemin seul For i = 0 To UBound(Wrdarray()) Chemin = Chemin & "\" & Wrdarray(i) Next i Chemin = Mid(Chemin, 2) 'On determine la derniere ligne de ce fichier et on supprime de la colonne 1 à 7 et de la ligne 7 à la fin findest = ThisWorkbook.Sheets("Ecarts JTZ").Range("A7").End(xlShiftDown) ThisWorkbook.Sheets("Ecarts JTZ").Range(Cells(7, 1), Cells(findest, 7)).ClearContents 'On ouvre le fichier source Workbooks.Open (sChemin) finsrc = Workbooks(Fichier).Sheets("blabla").Range("A8").End(xlShiftDown) 'On copie le fichier source dans ce fichier Workbooks(Fichier).Sheets("blabla").Range(Cells(6, 1), Cells(finsrc, 7)).Copy Destination:=ThisWorkbook.Sheets("Ecarts JTZ").Range("A7") 'Fermeture du fichier source Workbooks(Fichier).Close End subrenvoi l'erreur 1004 : Erreur definie par l'application ou par l'objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Workbooks(Fichier).Sheets("blabla").Range(Cells(6, 1), Cells(finsrc, 7)).Copy Destination:=ThisWorkbook.Sheets("Ecarts JTZ").Range("A7")
Je ne comprends pas trop pourquoi, surtout que j'utilise exactement la même syntaxe 3 lignes au dessus...
Merci d'avance pour votre aide
Partager