Bonjour,
Si ça peut intéresser quelqu'un, j'ai enfin trouvé une méthode pour effacer le contenu d'un dossier, incluant les sous-dossiers jusqu'au 2e niveau, sans utiliser le Scripting.FileSystemObject (qui ne fonctionnait parfois pas sur certains postes de travail) :
J'ai cherché longtemps cette solution sans succès et enfin ça fonctionne !!!
Bye !!
José
Si ça peut intéresser quelqu'un, j'ai enfin trouvé une méthode pour effacer le contenu d'un dossier, incluant les sous-dossiers jusqu'au 2e niveau, sans utiliser le Scripting.FileSystemObject (qui ne fonctionnait parfois pas sur certains postes de travail) :
Code:
Sub RemDos()
'
' Efface le contenu du dossier Temp_Courriel incluant les sous-dossiers jusqu'au 2e niveau
'
Dim XX As Byte
Dim YY As Byte
Dim XnbFichiers As Byte
Dim YnbFichiers As Byte
Dim XTableau() As String
Dim YTableau() As String
Dim XDirection As String
Dim YDirection As String
Dim ZDirection As String
Dim CheTemp As String
Dim Msgboxresult As Byte
On Error Resume Next
CheTemp = "C:\Temp_Courriel\"
' 1er niveau
XDirection = Dir(CheTemp & "*.*", vbDirectory)
Do While Len(XDirection) > 0
XnbFichiers = XnbFichiers + 1
ReDim Preserve XTableau(1 To XnbFichiers)
XTableau(XnbFichiers) = XDirection
XDirection = Dir()
Loop
If XnbFichiers > 0 Then
For XX = 1 To XnbFichiers
If XTableau(XX) <> "." And XTableau(XX) <> ".." Then
If Left(Right(XTableau(XX), 4), 1) <> "." Then
' 2e niveau
YnbFichiers = 0
YDirection = Dir(CheTemp & XTableau(XX) & "\*.*", vbDirectory)
Do While Len(YDirection) > 0
YnbFichiers = YnbFichiers + 1
ReDim Preserve YTableau(1 To YnbFichiers)
YTableau(YnbFichiers) = YDirection
YDirection = Dir()
Loop
If YnbFichiers > 0 Then
For YY = 1 To YnbFichiers
If YTableau(YY) <> "." And YTableau(YY) <> ".." Then
If Left(Right(YTableau(YY), 4), 1) <> "." Then
' 3e niveau
ZDirection = Dir(CheTemp & XTableau(XX) & "\" & YTableau(YY) & "\*.*", vbDirectory)
Do While Len(ZDirection) > 0
If ZDirection <> "." And ZDirection <> ".." Then
If Left(Right(ZDirection, 4), 1) <> "." Then
RmDir CheTemp & XTableau(XX) & "\" & YTableau(YY) & "\" & ZDirection
Else
Kill CheTemp & XTableau(XX) & "\" & YTableau(YY) & "\" & ZDirection
End If
End If
ZDirection = Dir()
Loop
RmDir CheTemp & XTableau(XX) & "\" & YTableau(YY)
Else
Kill CheTemp & XTableau(XX) & "\" & YTableau(YY)
End If
End If
Next YY
End If
RmDir CheTemp & XTableau(XX)
Else
Kill CheTemp & XTableau(XX)
End If
End If
Next XX
End If
If Err > 0 Then
Msgboxresult = MsgBox("Le contenu de certains sous-dossiers du dossier temporaire Temp_Courriel" _
& vbCr & "n'a pu être effacé automatiquement. Ne pas oublier de les effacer manuellement.", _
vbExclamation + vbOKOnly, "Suppression automatique non-complétée...")
Err.Clear
End If
End Sub
J'ai cherché longtemps cette solution sans succès et enfin ça fonctionne !!!
Bye !!
José
Dernière édition: