Copier des fichiers d'un répertoire vers un autre sans FileCopy

Fermé
Shenein - 31 mars 2020 à 16:30
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 31 mars 2020 à 19:03
Bonjour,

Je souhaite copier des fichiers excel d'un répertoire vers un autre mais avec FileCopy ma macro plante quand l'un des fichier est ouvert...
Avez vous une autre solution à me proposer ?
Voici mon code :

Sub Copie_fichiers()
Dim rep1 As String
Dim fich1 As Variant
Dim chemin_destination As String

rep1 = "Y:\Gestion\3_Collecte_resultats" & "\"
fich1 = Dir(rep1 & "*.xlsx")
chemin_destination = "Y:\Gestion\4_Statistiques\" & "Stats_du_" & Format(Date, "ddmmyyyy") & "\Sources" & "\"
Do While fich1 <> ""
FileCopy rep1 & fich1, chemin_destination & fich1
fich1 = Dir()
Loop
End Sub

Merci pour votre aide.
Sarah
A voir également:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
31 mars 2020 à 16:36
Bonjour,

Tu dois pouvoir essayer d'utiliser le application.displayAlerts = false
https://docs.microsoft.com/fr-fr/office/vba/api/excel.application.displayalerts


Ou voir avec du onerror
https://docs.microsoft.com/fr-fr/office/vba/api/excel.application.displayalerts

0
ça ne fonctionne pas avec DisplayAlerts.
Pour On Error, si je comprends bien ça va sauter le Fichier qui est ouvert ?
Si c'est ça, ça ne me convient pas car je dois avoir tous les fichiers...

Une autre idée ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
31 mars 2020 à 17:11
Une idée ? oui.. ne pas utiliser FileCopy
Car, comme indiqué dans la documentation :

Si vous essayez d’utiliser la fonction FileCopy sur un fichier actuellement ouvert, une erreur se produit.
FileCopy requiert une confiance totale pour travailler sur le lecteur local.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
31 mars 2020 à 17:12
Tu dois pouvoir le remplacer par un truc du genre
Private Declare Function CopyFile _
Lib "kernel32" _
Alias "CopyFileA" _
(ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long

Sub essaiCopie()
CopyFile "C:\Temp\test.txt", "C:\Temp\newTest.txt", 0&
End Sub
0
Shenein > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
31 mars 2020 à 17:18
Ben oui je sais bien mais je connais pas d'autre solution...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Shenein
31 mars 2020 à 19:03
Bonjour a tous,

Un truc pas si bete si fichier(s) dans la meme application Excel:
_ traitement erreur: on error resume next apres les dim
_ fermer par defaut les fichiers avec save true (un fichier ouvert n'est pas forcement sauvegarde) avant le Filecopy
0