Retour à la FAQ


On peut utiliser 3 méthodes pour se débarrasser d'un fichier:

 

La Radicale: KIll

Sub SupprimFichier()
'supprime le fichier du disque dur
Kill "D:\ajeter\test.xls"
End Sub

La Prudente: Dans la corbeille. Code de Chip Pearson

'============dans un module standard
Declare Function SHFileOperation Lib "shell32.dll" Alias _
"SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Boolean
hNameMappings As Long
lpszProgressTitle As String
End Type

Sub testCorbeil()
'chemin du fichier dans cette ligne
RecycleFile "D:\ajeter\test.xls"
End Sub

Sub RecycleFile(sFile As String)
Const FO_DELETE = &H3
Const FOF_ALLOWUNDO = &H40
Dim FileOperation As SHFILEOPSTRUCT
Dim lReturn As Long
Dim sFileName As String

With FileOperation
.wFunc = FO_DELETE
.pFrom = sFile
.fFlags = FOF_ALLOWUNDO
End With
lReturn = SHFileOperation(FileOperation)
End Sub

 

La On ne sait jamais: Déplacer dans un autre répertoire

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

'La macro a exécuter
Sub MoveFile()
'changer le répertoire et le nom de fichier
ShellMoveFiles "D:\ajeter\test.xls", "C:\ajeter\"
End Sub

[top]