VBA : L’objet Fichier système




Comment manipuler les fichiers positionnés sur votre disque dur, à l’aide du langage VBA. L’utilisation de l’objet "FileSystemObject" va nous permettre de régler cette question. Dans cet exemple nous allons pouvoir :

  • Supprimer un fichier
  • Renommer un fichier
  • Déplacer un fichier
  • Ouvrir un fichier

Évidement pour pouvoir réaliser ces actions il faudra au préalable trouver sur le disque le fichier qui nous intéresse. Donc rechercher un fichier sera notre première action.


Nous saisissons dans la zone de texte "TextBox1" du formulaire "UserForm2" le nom d’un fichier Excel (sans l’extension), puis nous cliquons sur le bouton "Find". Le système parcours ici tous les sous-dossiers d’un dossier "Blog" d’un disque "E:".
Si le fichier est localisé ; son Path (chemin d’accès) va s'afficher dans la zone de label "Label1" située en dessous, l'utilisateur choisira alors l'action qu'il désire accomplir.


Il sera nécessaire de créer 2 objets, un pour l'accès au système de fichiers Windows (scripting.FileSystemObject) et un autre objet de type dossier pour récupérer notre dossier racine par la méthode GetFolder. Vous noterez également l'emploi de la fonction Dir() de la classe FileSystem qui permet la récupération du nom du fichier dans une chaîne de type Path ou une chaîne vide en cas d'absence. Le reste du code ne semble pas poser de difficultés.

'-----------------------------------------------------------------------
Option Explicit
Public fichier As String
Public fichier2 As String
Public Flder As Object
Public comp As String
 Const boite = vbOKOnly + vbInformation
 Const titre = "www.olivier - picot.fr"

 '-----------------------------------------------------------------------
Private Sub Find_Click()

Dim fso As Object
Dim Dossier As Object
Dim LeDossier As String
Dim chemin As String

comp = TextBox1.Value
LeDossier = "E:\Blog"

Set fso = CreateObject("scripting.FileSystemObject")
Set Dossier = fso.getfolder(LeDossier)

'Examen de chaque sous dossier du dossier E:\Blog
For Each Flder In Dossier.subfolders
    fichier = Dir(Flder.Path & Application.PathSeparator & comp & ".xlsx")
    If fichier <> "" Then 'donc si on l'a trouvé
        chemin = Flder.Path & Application.PathSeparator
        Exit For
    End If
Next Flder

If fichier = "" Then
    MsgBox "le fichier n'existe pas", vbInformation + vbOKOnly, "ERREUR"
Else
    fichier = chemin & comp & ".xlsx"
    UserForm2.Label1.Caption = fichier
End If
End Sub
 '-----------------------------------------------------------------------
Private Sub Ouvrir_Click()
Workbooks.Open fichier
MsgBox "Fichier ouvert", boite, titre
End Sub
 '-----------------------------------------------------------------------
Private Sub Renommer_Click()
fichier2 = Flder.Path & Application.PathSeparator & "copie_" & comp & ".xlsx"
    Name fichier As fichier2
    MsgBox "Fichier rennomé", boite, titre
End Sub
 '-----------------------------------------------------------------------
Private Sub Supprimer_Click()
 Kill fichier
 MsgBox "Fichier supprimé", boite, titre
End Sub
 '-----------------------------------------------------------------------
Private Sub Deplace_Click()
Name fichier As "E:\SNCF\" & comp & ".xlsx"
MsgBox "Fichier déplacé", boite, titre
End Sub
 '-----------------------------------------------------------------------
Private Sub sortir_Click()
 UserForm2.Hide
End Sub

Vous pourrez très facilement adapter cet exemple,
Merci de votre attention



1 commentaires:

Jacob martin a dit…
Ce commentaire a été supprimé par un administrateur du blog.

Enregistrer un commentaire

top