Retour à la FAQ


Déplacement de fichier

Comment déplacer un fichier?

Première méthode simple:

Sub deplace()
'La méthode la plus simple consiste à combiner les fonctions "FileCopy" et "Kill" :

FileCopy "C:\ajeter\File.txt", "C:\agarder\File.txt"
Kill "C:\ajeter\File.txt"
End Sub

Ou bien

Sub aideXL97()
Dim OldName, NewName
' Définit les noms de fichiers.
OldName = "ANCFICH": NewName = "NOUVFICH"
Name OldName As NewName ' Renomme le fichier.

' Sous Microsoft Windows:
OldName = "C:\MONREP\ANCFICH"
NewName = "C:\VOTREREP\NOUVFICH"
' Déplace et renomme le fichier.
Name OldName As NewName

' Sur Macintosh:
OldName = "DD:MON DOSSIER:ANCFICH"
NewName = "DD:VOTRE DOSSIER:NOUVFICH"
' Déplace et renomme le fichier.
Name OldName As NewName
End Sub

Ex:
Sub deplace()
Name "c:\ajeter\date.xls" As "c:\ajeter\aaa\date.xls"
End Sub


Deuxième méthode :
Source ? Auteur ?

Option Explicit

'déclarations
Public Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type

Public Const FO_MOVE = &H1
Public Const FO_RENAME = &H4

Public Const FOF_SILENT = &H4
Public Const FOF_NOCONFIRMATION = &H10
Public Const FOF_FILESONLY = &H80
Public Const FOF_SIMPLEPROGRESS = &H100
Public Const FOF_NOCONFIRMMKDIR = &H200

Public Const SHARD_PATH = &H2&
Public Declare Function SHFileOperation _
Lib "shell32.dll" Alias "SHFileOperationA" _
(lpFileOp As SHFILEOPSTRUCT) As Long


Function ShellMoveFiles(sFile As String, sDestination As String)
'une fonction pour déplacer les fichiers
Dim r As Long
Dim i As Integer
Dim sFiles As String
Dim SHFileOp As SHFILEOPSTRUCT

sFile = sFile & Chr$(0) & Chr$(0)

'la structure est initialisée
With SHFileOp
.wFunc = FO_MOVE
.pFrom = sFile
.pTo = sDestination
.fFlags = FOF_NOCONFIRMATION
End With

'le fichier est déplacé
r = SHFileOperation(SHFileOp)
End Function

Sub MoveFile()
'changer le répertoire et le nom de fichier
ShellMoveFiles "c:\ajeter\test.xls", "C:\agarder\"
End Sub

 

Troisième méthode avec demande d'écrasement - Clément Marcotte

Sub copieecrasante()
Dim fso As Object, origine As String
Dim destination As String, reponse As Integer
Dim sortie As Byte, message As String
On Error GoTo camarchepas
origine = "c:\copie\unbeaufichiertexte.txt"
destination = "c:\mes documents\unbeaufichiertexte.txt"
Set fso = CreateObject("scripting.filesystemobject")
fso.MoveFile origine, destination
Exit Sub
camarchepas:
Select Case Err
Case 58
message = "Le fichier " & destination & " existe déjà" & _
vbNewLine & "Désirez vous le supprimer?"
reponse = MsgBox(message, vbQuestion + vbOKCancel, "Erreur")
Select Case reponse
Case vbOK
Kill destination
fso.MoveFile origine, destination
Case Else
sortie = 1
End Select
Case 53
message = "Le fichier " & origine & " n'existe pas" & _
vbNewLine & "Fin du programme"
MsgBox message
Case Else
End Select
End Sub

[top]