Copie depuis le fichier reception.xlsm avec fichier base.xlsm

Fermé
Adanedhel07 - 15 janv. 2015 à 11:47
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 15 janv. 2015 à 13:18
Bonjour,
J'ai regarder les forums et je ne comprend pas l'erreur qu'il y a dans mon code.

Le fichier recevant l'information est le fichier dans lequel je lance la macro (Path1) le fichier donnant l'information est le fichier (Path).

Quand j'execute le code il me renvoit l'erreur 9 pourtant les feuilles existent et les fichiers aussi.



Sub recup_donnes()

'Choix du repertoire et chemin de fichier
Dim Path As String
Dim Path1 As String
Dim finput As FileDialog

'recupération adresse fichier départ
Path1 = ActiveWorkbook.FullName

'ouverture du fichier contenant l'information
Set finput = Application.FileDialog(msoFileDialogFilePicker)
finput.Show

If finput.SelectedItems.Count = 0 Then Exit Sub
With Worksheets("Feuil1")
If Not finput Is Nothing Then
Path = finput.SelectedItems(1)
End If
End With

'Copie colle
Workbooks(Path1).Worksheets("BDFEX").Cells.ClearContents
Workbooks.Open Filename:=Path
Workbooks(Path).Worksheets("BD").Cells.Copy _
Workbooks(Path1).Worksheets("BDFEX").Range("A1")
Workbooks(Path).Close False


End Sub


Merci d'avance
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
15 janv. 2015 à 13:18
Bonjour,

L'erreur 9 se situe à quel niveau?
Si c'est sur la ligne
Workbooks(Path).Worksheets("BD").Cells.Copy _
    Workbooks(Path1).Worksheets("BDFEX").Range("A1")

peut être que le fichier path n'a pas eu le temps nécessaire à son ouverture.

Du coup, faudrait essayer en lui donnant un peu de temps.

Je vous propose deux solutions, sachant que nous ne pouvons pas tester sans les fichiers originaux, ce ne sont que des pistes...

1- DoEvents :
Workbooks.Open Filename:=Path
DoEvents
Workbooks(Path).Worksheets("BD").Cells.Copy _
    Workbooks(Path1).Worksheets("BDFEX").Range("A1")


2- Application.Wait :
Workbooks.Open Filename:=Path
Application.Wait Time + TimeSerial(0, 0, 2)  '2 = 2 secondes à adapter peut être
Workbooks(Path).Worksheets("BD").Cells.Copy _
    Workbooks(Path1).Worksheets("BDFEX").Range("A1")


0