Remplacer un fichier/dossier déjà existant

Bonjour,

J'ai une macro me permettant de renommer, dupliquer et déplacer des fichiers vers des dossier.

Seulement voilà, lorsqu'un fichier/dossier est déjà présent dans le dossier de destination vers lequel je veux envoyer le fichier, la macro s'arrête.

Je souhaiterais donc une fonction me permettant d'écraser les fichiers/dossiers déjà existants dans le dossiers de destination où je veux déplacer mon fichier.

Ci-dessous ma macro complète :

Private Sub CommandButton1_Click()
Dim Myrange As Range
Dim L As Long
Dim CelStart As Long
Dim CelEnd As Long
Dim Fichier As String
Dim NewName As String
Dim Destination As String

CelStart = 5 'Débute à la cellule numéro 5 (A5) car première valeur à prendre en compte

Set Myrange = ActiveWorkbook.Sheets("Duplique et Renommer fichiers").Range("A5").CurrentRegion 'Instancie Myrange à toutes les cellules contigües à A4.
CelEnd = Myrange.Rows.Count + 4 'Compte le nombre de cellules utilisées + 4 pour déterminer le numéro de la dernière cellule à prendre en compte

For L = CelStart To CelEnd
Fichier = Myrange(L - 3, 2) 'correspond à la cellule de la 2ème colonne de la sélection (colonne B)
Destination = Myrange(L - 3, 3) 'correspond à la cellule de la 3ème colonne de la sélection (colonne B)
NewName = Myrange(L - 3, 4) 'correspond à la cellule de la 4ème colonne de la sélection (colonne B)
Copie_Fichier_RD Fichier, Destination
'Renommer_fichier_RD Destination, NewName '(Ax.....Axn++) (Ax="c:\monRep\truc.txt) (Bx.....Bxn++) (Bx="truc.bof)
Next

Set Myrange = Nothing
MsgBox "Terminé"
End Sub

'Renommer le fichiers dont le nom est précisé en argument par NewName.
 Public Sub Renommer_fichier_RD(Destination As String, NewName As String)
 Dim Fso As New FileSystemObject
 If Existe_Fichier_RD(Destination) = False Then Exit Sub
 Fso.GetFile(Destination).Name = NewName
 End Sub

 'Vérifie  l'existance d'un fichier.
Public Function Existe_Fichier_RD(Source As String) As Boolean
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Existe_Fichier_RD = Fso.FileExists(Source)
Set Fso = Nothing
End Function
'Copie un fichier d'une source vers une destination.
Public Sub Copie_Fichier_RD(Fichier As String, Destination As String)
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Fso.CopyFile Fichier, Destination, True
Set Fso = Nothing
End Sub

En vous remerciant,

Cordialement,

Baptiste.

Hello,

Tu peux supprimer un fichier :

Kill "C:\Exemple\TestsVBA\Rapport_annuel.xlsx"

et tu peux supprimer un dossier :

sPath = "C:\Test"

 RmDir sPath

Bonjour Rag02700,

Merci pour ta réponse, mais il ne s'agit pas de supprimer un fichier/dossier précis, mais un fichier/dossier présent dans le dossier où je veux envoyer mon fichier, en partant du principe que je ne connais pas l'intitulé de ce dossier/fichier, ni son chemin cible.

Baptiste.

Hello,

Seulement voilà, lorsqu'un fichier/dossier est déjà présent dans le dossier de destination vers lequel je veux envoyer le fichier, la macro s'arrête

L'astuce consiste à supprimer le fichier portant le même nom présent dans ce dossier, puis de copier ton fichier.

en partant du principe que je ne connais pas l'intitulé de ce dossier/fichier, ni son chemin cible

Tu le connais ici :

Fichier = Myrange(L - 3, 2) 'correspond à la cellule de la 2ème colonne de la sélection (colonne B)
Destination = Myrange(L - 3, 3) 'correspond à la cellule de la 3ème colonne de la sélection (colonne B)

Tu peux tester avant de supprimer si le fichier existe :

Dim Fichier As String

Fichier = Dir("c:\data\A lire.txt")

If Fichier <> "" Then  Kill Fichier

Et pour tester si un dossier existe :

Dim sFolderPath As String

sFolderPath = "C:\Users\DT168\Desktop\Test folder"

If Dir(sFolderPath, vbDirectory) <> vbNullString Then RmDir sFolderPath 

Bonjour,

Seulement voilà, lorsqu'un fichier/dossier est déjà présent dans le dossier de destination vers lequel je veux envoyer le fichier, la macro s'arrête.

Votre problème ne vient pas de là car avec l'option "True", vous écrasez automatiquement tout fichier préalablement existant

Fso.CopyFile Fichier, Destination, True

A mon avis, votre destination est un répertoire, ce qui provoque une erreur et l'arrêt de la macro. Pour que votre destination ne soit pas un répertoire, la chaîne correspondante doit impérativement se terminer par "\". Destination est un chemin et non un répertoire.

Bonjour,

Ok je vous remercie pour vos réponses, ça fonctionne, bonne journée !

Cordialement,

Baptiste.

Rechercher des sujets similaires à "remplacer fichier dossier deja existant"