Accueil > > > SUPPRIMER UN RÉPERTOIRE ET TOUT SON CONTENU (SOUS-DOSSIERS ET FICHIERS)
SUPPRIMER UN RÉPERTOIRE ET TOUT SON CONTENU (SOUS-DOSSIERS ET FICHIERS)
Information sur la source
Description
Cette fonction est extrèmement simple. Elle permet de supprimer un dossier et tout son contenu (sous-répertoires et fichiers). La fonction renvoie "True" si le processus de suppression s'est déroulé normalement. Sinon, elle renvoie "False". Particularités intéressantes : - Elle permet de supprimer les fichiers et les dossiers qui sont en lecture seule; - Elle permet de supprimer les fichiers et les dossiers cachés (y compris les fichiers système tels que Thumbs.db, ...). - Elle permet de supprimer le contenu d'un lecteur. Limitations : - Elle ne permet pas la suppression de fichiers en cours d'utilisation; - Elle ne permet pas la suppression de fichiers et/ou de dossiers en cours de visualisation (dans l'explorateur Windows ou autre). La fonction est désormais disponible en 3 versions : la première ne permet pas le vidage des dossiers temporaires de Windows, la seconde bien. En fait, la deuxième permet le vidage de dossiers contenant des fichiers en cours d'utilisation. La troisième est une évolution de la seconde qui permet, si on le désire, de ne supprimer que les répertoires vides et les fichiers vides (dont la taille est de 0 octets). ATTENTION : - Prenez la peine de lire les remarques ! Pour les débutants : - Ne copiez, dans votre module ou programme, qu'une des 3 versions de la fonction !
Source
- ' Version qui ne permet pas le vidage des dossiers temporaires de Windows :
-
- Public Function SupprimeRépertoire(Répertoire As String) As Boolean
- On Error GoTo Erreur
- Dim SousRépertoire As String
- Dim Val As String
- SousRépertoire = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
- Do While SousRépertoire <> ""
- If SousRépertoire <> "." And SousRépertoire <> ".." Then
- If (GetAttr(Répertoire & SousRépertoire) And vbDirectory) = vbDirectory Then
- ' C'est un sous-répertoire. Donc, on effectue un appel récursif.
- SupprimeRépertoire (Répertoire & SousRépertoire & "\")
- Else
- ' C'est un fichier. Donc, on concatène le nom du répertoire avec le sien.
- Val = Répertoire & SousRépertoire
- ' On s'assure que le fichier n'est pas en lecture seule.
- SetAttr Val, vbReadOnly = 0
- ' On supprime le fichier.
- Kill (Répertoire & SousRépertoire)
- End If
- End If
- ' Dir peut avoir été appelé, donc on réinitialise le tout.
- SousRépertoire = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
- ' Pour passer le répertoire courant et le répertoire parent.
- If SousRépertoire = "." Then
- SousRépertoire = Dir
- End If
- If SousRépertoire = ".." Then
- SousRépertoire = Dir
- End If
- Loop
- If ((Right(Répertoire, 2)) <> ":\") Then
- ' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
- SetAttr Répertoire, vbReadOnly = 0
- RmDir Répertoire
- End If
- SupprimeRépertoire = True
- Exit Function
-
- Erreur:
- SupprimeRépertoire = False
- End Function
-
- ' Remarque : Si un fichier ou un dossier ne peut être supprimé parce qu'il est en cours d'utilisation, la valeur retournée est "False". Les fichiers qui suivent celui qui n'a pu être supprimé, ne sont donc pas supprimés.
-
-
-
-
-
- ' Version qui permet le vidage des dossiers temporaires de Windows (vidage de dossiers contenant des fichiers en cours d'utilisation) :
-
- Public Function SupprimeRépertoire(Répertoire As String) As Boolean
- On Error GoTo Erreur
- Dim SousRépertoireOuFichier As String
- Dim Val As String
- Dim MyArray() As String
- Dim I As Long
- Dim J As Long
- SousRépertoireOuFichier = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
- I = 0
- Do While SousRépertoireOuFichier <> ""
- If SousRépertoireOuFichier <> "." And SousRépertoireOuFichier <> ".." Then
- ' Redimensionne le tableau dynamique tout en conservant les éventuelles valeurs présentes.
- ReDim Preserve MyArray(I + 1)
- If (GetAttr(Répertoire & SousRépertoireOuFichier) And vbDirectory) = vbDirectory Then
- MyArray(I) = Répertoire & SousRépertoireOuFichier & "\"
- Else
- MyArray(I) = Répertoire & SousRépertoireOuFichier
- End If
- I = I + 1
- End If
- SousRépertoireOuFichier = Dir
- Loop
- J = 0
- Do While J < I
- If Right(MyArray(J), 1) = "\" Then
- ' C'est un sous-répertoire. Donc, on effectue un appel récursif.
- SupprimeRépertoire (MyArray(J))
- Else
- ' C'est un fichier.
- ' Resume Next pour passer à l'instruction suivante si la suppression échoue.
- On Error Resume Next
- Val = MyArray(J)
- ' On s'assure que le fichier n'est pas en lecture seule.
- SetAttr Val, vbReadOnly = 0
- ' On supprime le fichier.
- Kill (Val)
- ' On réactive la gestion des erreurs normale.
- On Error GoTo Erreur
- End If
- J = J + 1
- Loop
- If ((Right(Répertoire, 2)) <> ":\") Then
- ' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
- SetAttr Répertoire, vbReadOnly = 0
- RmDir Répertoire
- End If
- SupprimeRépertoire = True
- Exit Function
-
- Erreur:
- SupprimeRépertoire = False
- End Function
-
- ' Remarque : Si cette fonction est utilisée pour vider un répertoire temporaire de Windows, il est fort probable qu'elle retourne False, car elle ne sait évidemment pas supprimer un répertoire contenant des fichiers en cours d'utilisation.
- ' Elle ne fait que passer ceux qui ne sont pas supprimables. Donc, elle supprimera tout ce qu'il est possible de supprimer.
- ' Si le dossier temporaire de Windows ne contient aucun fichier en cours d'utilisation, la fonction pourra faire totalement son travail et retournera True.
- ' N'oubliez pas de recréer le dossier temporaire dans ce cas !
- ' Sinon, vous risquez d'avoir quelques surprises lors des prochaines installations de logiciels, ...
-
-
-
-
-
- ' Version qui permet, si on le désire, de ne supprimer que les répertoires et les fichiers vides :
-
- Public Function SupprimeRépertoire(Répertoire As String, Optional ByVal FichiersVidesSeulement As Boolean = False) As Boolean
- On Error GoTo Erreur
- Dim SousRépertoireOuFichier As String
- Dim Val As String
- Dim MyArray() As String
- Dim I As Long
- Dim J As Long
- SousRépertoireOuFichier = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
- I = 0
- Do While SousRépertoireOuFichier <> ""
- If SousRépertoireOuFichier <> "." And SousRépertoireOuFichier <> ".." Then
- ' Redimensionne le tableau dynamique tout en conservant les éventuelles valeurs présentes.
- ReDim Preserve MyArray(I + 1)
- If (GetAttr(Répertoire & SousRépertoireOuFichier) And vbDirectory) = vbDirectory Then
- MyArray(I) = Répertoire & SousRépertoireOuFichier & "\"
- Else
- MyArray(I) = Répertoire & SousRépertoireOuFichier
- End If
- I = I + 1
- End If
- SousRépertoireOuFichier = Dir
- Loop
- J = 0
- Do While J < I
- If Right(MyArray(J), 1) = "\" Then
- ' C'est un sous-répertoire. Donc, on effectue un appel récursif.
- SupprimeRépertoire MyArray(J), FichiersVidesSeulement
- Else
- ' C'est un fichier.
- ' Resume Next pour passer à l'instruction suivante si la suppression échoue.
- On Error Resume Next
- Val = MyArray(J)
-
- If (Not FichiersVidesSeulement) Then
- ' On s'assure que le fichier n'est pas en lecture seule.
- SetAttr Val, vbReadOnly = 0
- ' On supprime le fichier.
- Kill (Val)
- Else
- If (FileLen(Val) = 0) Then
- ' On s'assure que le fichier n'est pas en lecture seule.
- SetAttr Val, vbReadOnly = 0
- ' On supprime le fichier.
- Kill (Val)
- End If
- End If
-
- ' On réactive la gestion des erreurs normale.
- On Error GoTo Erreur
- End If
- J = J + 1
- Loop
- If ((Right(Répertoire, 2)) <> ":\") Then
- ' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
- SetAttr Répertoire, vbReadOnly = 0
- RmDir Répertoire
- End If
- SupprimeRépertoire = True
- Exit Function
-
- Erreur:
- SupprimeRépertoire = False
- End Function
-
- ' Remarque : Toutes les remarques de la deuxième version s'appliquent également à celle-ci. Veuillez les lire aussi...
- ' Pour ne supprimer que les répertoires et les fichiers vides, effectuez un appel dans le genre de celui qui suit :
- ' SupprimeRépertoire "X:\MonDossier\", True
' Version qui ne permet pas le vidage des dossiers temporaires de Windows :
Public Function SupprimeRépertoire(Répertoire As String) As Boolean
On Error GoTo Erreur
Dim SousRépertoire As String
Dim Val As String
SousRépertoire = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
Do While SousRépertoire <> ""
If SousRépertoire <> "." And SousRépertoire <> ".." Then
If (GetAttr(Répertoire & SousRépertoire) And vbDirectory) = vbDirectory Then
' C'est un sous-répertoire. Donc, on effectue un appel récursif.
SupprimeRépertoire (Répertoire & SousRépertoire & "\")
Else
' C'est un fichier. Donc, on concatène le nom du répertoire avec le sien.
Val = Répertoire & SousRépertoire
' On s'assure que le fichier n'est pas en lecture seule.
SetAttr Val, vbReadOnly = 0
' On supprime le fichier.
Kill (Répertoire & SousRépertoire)
End If
End If
' Dir peut avoir été appelé, donc on réinitialise le tout.
SousRépertoire = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
' Pour passer le répertoire courant et le répertoire parent.
If SousRépertoire = "." Then
SousRépertoire = Dir
End If
If SousRépertoire = ".." Then
SousRépertoire = Dir
End If
Loop
If ((Right(Répertoire, 2)) <> ":\") Then
' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
SetAttr Répertoire, vbReadOnly = 0
RmDir Répertoire
End If
SupprimeRépertoire = True
Exit Function
Erreur:
SupprimeRépertoire = False
End Function
' Remarque : Si un fichier ou un dossier ne peut être supprimé parce qu'il est en cours d'utilisation, la valeur retournée est "False". Les fichiers qui suivent celui qui n'a pu être supprimé, ne sont donc pas supprimés.
' Version qui permet le vidage des dossiers temporaires de Windows (vidage de dossiers contenant des fichiers en cours d'utilisation) :
Public Function SupprimeRépertoire(Répertoire As String) As Boolean
On Error GoTo Erreur
Dim SousRépertoireOuFichier As String
Dim Val As String
Dim MyArray() As String
Dim I As Long
Dim J As Long
SousRépertoireOuFichier = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
I = 0
Do While SousRépertoireOuFichier <> ""
If SousRépertoireOuFichier <> "." And SousRépertoireOuFichier <> ".." Then
' Redimensionne le tableau dynamique tout en conservant les éventuelles valeurs présentes.
ReDim Preserve MyArray(I + 1)
If (GetAttr(Répertoire & SousRépertoireOuFichier) And vbDirectory) = vbDirectory Then
MyArray(I) = Répertoire & SousRépertoireOuFichier & "\"
Else
MyArray(I) = Répertoire & SousRépertoireOuFichier
End If
I = I + 1
End If
SousRépertoireOuFichier = Dir
Loop
J = 0
Do While J < I
If Right(MyArray(J), 1) = "\" Then
' C'est un sous-répertoire. Donc, on effectue un appel récursif.
SupprimeRépertoire (MyArray(J))
Else
' C'est un fichier.
' Resume Next pour passer à l'instruction suivante si la suppression échoue.
On Error Resume Next
Val = MyArray(J)
' On s'assure que le fichier n'est pas en lecture seule.
SetAttr Val, vbReadOnly = 0
' On supprime le fichier.
Kill (Val)
' On réactive la gestion des erreurs normale.
On Error GoTo Erreur
End If
J = J + 1
Loop
If ((Right(Répertoire, 2)) <> ":\") Then
' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
SetAttr Répertoire, vbReadOnly = 0
RmDir Répertoire
End If
SupprimeRépertoire = True
Exit Function
Erreur:
SupprimeRépertoire = False
End Function
' Remarque : Si cette fonction est utilisée pour vider un répertoire temporaire de Windows, il est fort probable qu'elle retourne False, car elle ne sait évidemment pas supprimer un répertoire contenant des fichiers en cours d'utilisation.
' Elle ne fait que passer ceux qui ne sont pas supprimables. Donc, elle supprimera tout ce qu'il est possible de supprimer.
' Si le dossier temporaire de Windows ne contient aucun fichier en cours d'utilisation, la fonction pourra faire totalement son travail et retournera True.
' N'oubliez pas de recréer le dossier temporaire dans ce cas !
' Sinon, vous risquez d'avoir quelques surprises lors des prochaines installations de logiciels, ...
' Version qui permet, si on le désire, de ne supprimer que les répertoires et les fichiers vides :
Public Function SupprimeRépertoire(Répertoire As String, Optional ByVal FichiersVidesSeulement As Boolean = False) As Boolean
On Error GoTo Erreur
Dim SousRépertoireOuFichier As String
Dim Val As String
Dim MyArray() As String
Dim I As Long
Dim J As Long
SousRépertoireOuFichier = Dir(Répertoire, vbDirectory + vbHidden + vbSystem + vbArchive)
I = 0
Do While SousRépertoireOuFichier <> ""
If SousRépertoireOuFichier <> "." And SousRépertoireOuFichier <> ".." Then
' Redimensionne le tableau dynamique tout en conservant les éventuelles valeurs présentes.
ReDim Preserve MyArray(I + 1)
If (GetAttr(Répertoire & SousRépertoireOuFichier) And vbDirectory) = vbDirectory Then
MyArray(I) = Répertoire & SousRépertoireOuFichier & "\"
Else
MyArray(I) = Répertoire & SousRépertoireOuFichier
End If
I = I + 1
End If
SousRépertoireOuFichier = Dir
Loop
J = 0
Do While J < I
If Right(MyArray(J), 1) = "\" Then
' C'est un sous-répertoire. Donc, on effectue un appel récursif.
SupprimeRépertoire MyArray(J), FichiersVidesSeulement
Else
' C'est un fichier.
' Resume Next pour passer à l'instruction suivante si la suppression échoue.
On Error Resume Next
Val = MyArray(J)
If (Not FichiersVidesSeulement) Then
' On s'assure que le fichier n'est pas en lecture seule.
SetAttr Val, vbReadOnly = 0
' On supprime le fichier.
Kill (Val)
Else
If (FileLen(Val) = 0) Then
' On s'assure que le fichier n'est pas en lecture seule.
SetAttr Val, vbReadOnly = 0
' On supprime le fichier.
Kill (Val)
End If
End If
' On réactive la gestion des erreurs normale.
On Error GoTo Erreur
End If
J = J + 1
Loop
If ((Right(Répertoire, 2)) <> ":\") Then
' Ce n'est pas la racine du disque, donc on supprime après s'être assuré que le répertoire n'est pas en lecture seule.
SetAttr Répertoire, vbReadOnly = 0
RmDir Répertoire
End If
SupprimeRépertoire = True
Exit Function
Erreur:
SupprimeRépertoire = False
End Function
' Remarque : Toutes les remarques de la deuxième version s'appliquent également à celle-ci. Veuillez les lire aussi...
' Pour ne supprimer que les répertoires et les fichiers vides, effectuez un appel dans le genre de celui qui suit :
' SupprimeRépertoire "X:\MonDossier\", True
Conclusion
Pas de bugs connus. Voilà ! Si mon travail vous intéresse, rendez-vous sur mon site Web : http://www.tcedi.com
Bonne programmation !!!
Historique
- 23 janvier 2005 01:46:03 :
- La mise à jour comprends :
- Une gestion améliorée de la suppression des lecteurs (Ne retourne plus False alors que tout s'est bien passé);
- Ajout de commentaires;
- Ajout d'une seconde version de la fonction permettant le vidage des dossiers temporaires de Windows ou tout autre dossier contenant des fichiers en cours d'exécution. Avec cette version de la fonction, tout ce qui est supprimable est supprimé !
- 23 janvier 2005 09:47:52 :
- Petite clarification des commentaires
- 24 mai 2006 20:34:35 :
- Ajout d'une troisième version de la fonction permettant, si on le désire, de ne supprimer que les répertoires et les fichiers vides.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Supprimer un répertoire plein de fichiers ! [ par Jonef ]
J'aimerais bien pouvoir supprimer un répertoire contenant des fichiers et des sous-répertoires sans avoir à supprimer les sous répertoires un par un.M
Suppression de fichiers particulière... [ par andrieuremi ]
Bonjour à tous!Quelqu'un connaîtrai-t-il une procédure ou un code VB me permettant de supprimer tout le contenu d'un dossier (fichiers + sous-dossiers
Supprimer fichiers .txt d'un répertoire [ par evilmajestik ]
Salut tout le monde !Je cherche un petit bout de code pour supprimer tous les fichiers textes dans un répertoire précis quelque soit le nomb
tous supprimer dans un dossier [ par tonprofde_math ]
salut, je veux faire un prog qui supprime les cookies,les fichiesr dans temp,les fichiers dans tempory internet files et l'historique.(j'utilise
Supprimer des fichiers dans un répertoire [ par thenonos ]
Bonjour, dans le cadre de projet dans mon école, je dois créer un programme permettant de supprimer des fichiers dans un répertoir
Effacer un dossier contenant des fichiers. [ par MoiDebutantVB ]
Comment effacer un dossier contenant des fichiers ? Ou alors supprimer tous les fichiers d'un dossier et de ses sous dossiers et ensuite supprime
Supprimer tous les fichiers .txt d'un répertoire à une heure précise [ par gradenko80 ]
Bonsoir,Je suis débutant en VB et je souhaiterais savoir assez rapidement le code que je dois écrire pour supprimer tous les fichiers .txt d
supprimer dossier,fichiers [ par mahelan ]
Bonjour,J'ai un autre petit soucissi je veut faire supprimer des dossiers ou fichiers,cette commande marcheSet objFSO = CreateObject("Scripting.FileSy
Copier fichiers sur CD. [ par Marneus73 ]
Bonjour à tousJe voudrais savoir comment faire pour copier un dossier avec tous ses fichiers et sous dossiers vers un autre dossier.Le seul probleme e
Nom de fichier [ par wanure ]
Bonjour, Je souhaiterai connaître le code qui éxécuterai la chose suivante :Modifier automatiquement les noms de X fichiers se trouvant dans un dossie
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|