Option Explicit
Sub SupprimerSsDos()
Dim FSO As New Scripting.FileSystemObject, N As Long
N = NbSDosSuppr(FSO.GetFolder("C:\Users\ralph45\Documents"), Toujours:=True)
Select Case N
Case Is > 1: MsgBox " sous dossiers ont été supprimés.", vbInformation
Case 1: MsgBox "Un sous dossier a été supprimé.", vbInformation
Case Else: MsgBox "Aucun sous dossier n'a été supprimé.", vbInformation
End Select
End Sub
Function NbSDosSuppr(ByVal Fdr As Folder, Optional ByVal Toujours As Boolean) As Long
Dim SFdr As Folder, Supprimer As Boolean
On Error GoTo E
For Each SFdr In Fdr.SubFolders
NbSDosSuppr = NbSDosSuppr + NbSDosSuppr(SFdr, Toujours)
If SFdr.Files.Count + SFdr.SubFolders.Count = 0 Then
If Toujours Then
Supprimer = True
Else
Supprimer = MsgBox("""" & SFdr.Name & """ vide." _
& vbLf & "Fdr.Path = """ & Fdr.Path & """." _
& vbLf & "À supprimer ?", vbYesNo, "NbSDosSuppr(Fdr)") = vbYes
End If
If Supprimer Then
SFdr.Delete
NbSDosSuppr = NbSDosSuppr + 1
End If
End If
Next SFdr
If Toujours Then Exit Function
If NbSDosSuppr > 0 Then MsgBox NbSDosSuppr & " dossiers supprimés dans :" _
& vbLf & Fdr.Name, vbInformation
Exit Function
E: Select Case MsgBox("Erreur " & Err _
& vbLf & "Fdr.Path = """ & Fdr.Path & """." _
& vbLf & Err.Description, vbExclamation + vbAbortRetryIgnore, "NbSDosSuppr(Fdr)")
Case vbRetry: On Error GoTo 0: Resume
Case vbIgnore: Resume Next
End Select
End Function