Toute l'actualité de [self-access.com] en direct sur votre ordinateur !  Vous êtes ici : Accueil » Visual Basic » Scripting Runtime » Fichiers : exemplesConnexion
 


Faire référence à un fichier

Voici quelques exemples de manipulations de fichiers à l'aide de l'objet File...

Pour pouvoir manipuler un fichier (ou obtenir des informations sur le fichier), vous devez y faire référence grâce à un objet File. Ceci peut se faire de plusieurs manières :

  • La méthode .GetFile de l'objet racine FileSystemObject donne un accès direct à un fichier.
  • Si un objet Folder pointe sur un dossier existant, sa collection Files donne la liste de tous ses fichiers, et permet donc d'en extraire un particulier.

Dans tous les cas, vous pouvez désigner un fichier par son chemin local (C:\Mes documents\test.txt) ou réseau (\\serveur\partage\test.txt).

Le petit programme ci-dessous illustre ces variantes. Pour l'exécuter :

  1. Recopiez le code ci-dessous dans un module standard Access.
  2. Faites apparaître la fenêtre Exécution de Visual Basic Editor (Ctrl + G).
  3. Placez le curseur au milieu du listing. Cliquez sur l'icône Exécuter Sub/UserForm
' ---
' ACCES AUX FICHIERS/DOCUMENTS
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction FileInstance() illustre plusieurs manières
' d'accéder à un fichier.
' Les résultats sont affichés dans la fenêtre Exécution (Ctrl+G).

Function FileInstance()
Dim fso As Scripting.FileSystemObject
Dim fld As Scripting.Folder
Dim fle As Scripting.File

' Créer une instance du FSO
Set fso = New Scripting.FileSystemObject

' Obtenir directement un fichier à partir de son chemin
Set fle = fso.GetFile("C:\Mes documents\test.txt")
Debug.Print "TAILLE DU FICHIER: ", fle.Size

' Obtenir le fichier via le répertoire 'Mes documents'
Set fld = fso.GetFolder("C:\Mes documents")
Set fle = fld.Files("test.txt")
Debug.Print "DATE DE CREATION: ", fle.DateCreated

' Libérer les objets
Set fle = Nothing
Set fld = Nothing
Set fso = Nothing
End Function

Décrire un fichier à l'aide de l'objet File

Comme il a été dit plus haut, l'objet Folder décrit un répertoire.

Le programme qui suit illustre toutes les informations que vous pouvez obtenir sur le dossier "Mes documents" de votre disque C (modifiez le dossier en "Documents And Settings\votre nom\Mes documents" si vous travaillez sous Windows NT/2000/XP).

La majorité de ces propriétés est accessible en lecture seule et ne peut donc pas être modifiée en Visual Basic.

' ---
' FILE OBJECT
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction FileInfo() utilise l'objet File
' pour lister toutes les caractéristiques d'un fichier.
' Les résultats sont affichés dans la fenêtre Exécution (Ctrl+G).

Function FileInfo()
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File
Dim strFile As String

' Créer une instance du FSO
Set fso = New Scripting.FileSystemObject

' Créer une instance de fichier
' Le fichier est pointé directement depuis l'objet FSO.
strFile = "C:\Mes documents\test.txt"
If Not fso.FileExists(strFile) Then
    MsgBox "Le fichier [" & strFile & "] n'existe pas.", vbExclamation
    Exit Function
End If
Set fle = fso.GetFile(strFile)

' Infos sur le fichier
Debug.Print "--- INFOS FICHIER"
With fle
    Debug.Print "NOM: ", , .Name
    Debug.Print "CHEMIN: ", , .Path
    Debug.Print "DOSSIER PARENT: ", .ParentFolder
    Debug.Print "NOM DOS: ", , .ShortName
    Debug.Print "CHEMIN DOS: ", , .ShortPath
    Debug.Print "DISQUE: ", , .Drive.DriveLetter
    
    Debug.Print "DATE DE CREATION: ", .DateCreated
    Debug.Print "DERNIERE MODIFICATION: ", .DateLastModified
    Debug.Print "DERNIER ACCESS: ", .DateLastAccessed
    Debug.Print "TAILLE: ", , .Size
    Debug.Print "TYPE: ", , .Type
    Debug.Print "ATTRIBUTS: ", , .Attributes & " - " & FileAttrib(.Attributes)
End With

' Libérer les objets
Set fle = Nothing
Set fso = Nothing
End Function
' ---
' FILEATTRIBUTE
' ---
' La fonction FileAttrib() affiche en clair les types de fichiers ou répertoires

Function FileAttrib(ByVal intFileAttrib As Scripting.FileAttribute)
Dim strType As String

strType = ""
If intFileAttrib And Alias Then strType = "Raccourci"
If intFileAttrib And Archive Then strType = strType & ", Archive"
If intFileAttrib And Compressed Then strType = strType & ", Compressé"
If intFileAttrib And Directory Then strType = strType & ", Répertoire"
If intFileAttrib And Hidden Then strType = strType & ", Caché"
If intFileAttrib And Normal Then strType = strType & ", Normal"
If intFileAttrib And ReadOnly Then strType = strType & ", Lecture seule"
If intFileAttrib And System Then strType = strType & ", Système"
If intFileAttrib And Volume Then strType = strType & ", Volume"
If Left(strType, 2) = ", " Then strType = Mid(strType, 3)
FileAttrib = strType
End Function

Résultat

A propos des attributs de fichier ou de répertoire :

Un fichier ou un répertoire peut avoir plusieurs caractéristiques (ou attributs). Celles-ci sont données par sa propriété Attributes, qui peut prendre les valeurs Alias, Archive, Compressed, etc. Ces valeurs peuvent être combinées entre elles : par exemple, un fichier peut être marqué comme "archive" (valeur numérique : 32), "caché" (valeur numérique : 2) et "lecture seule" (valeur numérique : 2).

Pour lire l'un des attributs, il faut donc effectuer un AND logique. Par exemple : si Attributes And Hidden est différent de 0, le fichier est caché. Et ainsi de suite pour les autres attributs. Jetez un oeil à la fonction FileAttrib() qui affiche les attributs en clair en utilisant cette technique.

Si au contraire vous devez définir les attributs (et non les lire), utilisez un OR logique pour les combiner. Du style : fle.Attributes = Hidden Or Archive Or ReadOnly.

Manipuler les fichiers

Voici un ensemble de listings qui permettent différentes opérations sur les fichiers. Deux petites choses :

  • Pensez à tester ce qui suit sur des fichiers sans importance, conseil d'ami :o)
  • La création et lecture de fichiers texte n'est pas abordée ici. Consultez plutôt la page : Lecture/écriture de fichiers texte.

Vous pouvez tester chaque fonction directement, en faisant apparaître la fenêtre Exécution (Ctrl + G) puis en y tapant par exemple :

FileRename "C:\Mes documents\fichier01", "fichier02" (puis [Entrée]).

Sinon, le dernier listing en bas de page fait un beau récapitulatif de tout ça !

Renommer un fichier

Vous pouvez renommer un répertoire de 2 manières : en modifiant sa propriété Name (qui est accessible en lecture/écriture), ou en déplaçant le répertoire (voir la fonction FileMove() plus loin).

' ---
' CHANGEMENT D'UN NOM DE FICHIER
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction FileRename() renomme un fichier.
' ---
' Entrée : strFile    <- Chemin complet vers le fichier à renommer.
'          strNewName <- Nouveau nom du fichier.

Function FileRename(ByVal strFile As String, _
    ByVal strNewName As String)
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File

' Créer une instance du FSO
Set fso = New Scripting.FileSystemObject

' On arrête tout si le fichier est introuvable
If Not fso.FileExists(strFile) Then
    MsgBox "Le fichier [" & strFile & "] n'existe pas.", vbExclamation
    Exit Function
End If

' Détruire le fichier1
Set fle = fso.GetFile(strFile)
fle.Name = strNewName

' Libérer les objets
Set fle = Nothing
Set fso = Nothing
End Function

Dupliquer un fichier

' ---
' COPIE DE FICHIERS
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction FileCopy() duplique un fichier.
' ---
' Entrée : strSourceFile <- Chemin complet vers le fichier à copier.
'          strTargetFile <- Chemin du fichier à créer.

Function FileCopy(ByVal strSourceFile As String, _
    ByVal strTargetFile As String)
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File

' Créer une instance du FSO
Set fso = New Scripting.FileSystemObject

' On arrête tout si le 1er fichier est introuvable
If Not fso.FileExists(strSourceFile) Then
    MsgBox "Le fichier [" & strSourceFile & "] n'existe pas.", _
        vbExclamation
    Exit Function
End If

' Créer une copie du fichier1
fso.CopyFile strSourceFile, strTargetFile

' Variante produisant le même effet : on utilise la méthode Copy
' de l'objet File
' Set fle = fso.GetFile(strSourceFile)
' fle.Copy strTargetFile

' Libérer les objets
Set fle = Nothing
Set fso = Nothing
End Function

Déplacer un fichier

Cette technique peut être utilisée pour déplacer véritablement un fichier, mais pourquoi pas pour lui changer de nom... (ceci dit, la technique vue plus haut est plus efficace !)

' ---
' DEPLACEMENT DE FICHIER
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction FileMove() déplace un fichier à un autre emplacement.
' ---
' Entrée : strSourceFile <- Chemin vers le fichier à déplacer.
'          strTargetFile <- Chemin de destination.

Function FileMove(ByVal strSourceFile As String, _
    ByVal strTargetFile As String)
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File

' Créer une instance du FSO
Set fso = New Scripting.FileSystemObject

' On arrête tout si le 1er fichier est introuvable
If Not fso.FileExists(strSourceFile) Then
    MsgBox "Le fichier [" & strSourceFile & "] n'existe pas.", vbExclamation
    Exit Function
End If

' Renommer le fichier1
fso.MoveFile strSourceFile, strTargetFile

' Variante produisant le même effet : on utilise la méthode Move
' de l'objet File.
' Set fle = fso.GetFile(strSourceFile)
' fle.Move strTargetFile

' Libérer les objets
Set fle = Nothing
Set fso = Nothing
End Function

Supprimer un fichier

' ---
' SUPPRESSION D'UN FICHIER
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction FileDelete() détruit un fichier.
' ---
' Entrée : strFile <- Chemin complet vers le fichier à détruire.

Function FileDelete(ByVal strFile As String)
Dim fso As Scripting.FileSystemObject
Dim fle As Scripting.File

' Créer une instance du FSO
Set fso = New Scripting.FileSystemObject

' On arrête tout si le fichier est introuvable
If Not fso.FileExists(strFile) Then
    MsgBox "Le fichier [" & strFile & "] n'existe pas.", vbExclamation
    Exit Function
End If

' Détruire le fichier
fso.DeleteFile strFile

' Variante produisant le même effet : on utilise la méthode Delete
' de l'objet File.
' Set fle = fso.GetFile(strFile)
' fle.Delete

' Libérer les objets
Set fle = Nothing
Set fso = Nothing
End Function

Ze MegaDemo :-)

Voici une compil' qui fait met en oeuvre les listings précédents. Aucune variable n'est utilisée pour simplifier le code, à vous d'améliorer !

Exécutez le programme, et, à chaque fois que le programme affiche un message, profitez-en pour vérifier ses effets dans l'Explorateur Windows...

Note
Le programme commence par faire appel à une fonction FileWrite() pour créer un fichier texte quelconque. Cette fonction est détaillée sur la page Lecture/écriture de fichiers texte.

' ---
' MANIPULATION DES FICHIERS
' ---
' (c) 2003, Hervé Inisan - www.self-access.com

Function FileMegaDemo()
' Créer un fichier quelconque
FileWrite "C:\Mes documents\SelfAccess01.txt"
MsgBox "Fichier [SelfAccess01.txt] créé..."

' Dupliquer le fichier
FileCopy "C:\Mes documents\SelfAccess01.txt", _
    "C:\Mes documents\SelfAccess02.txt"
MsgBox "Fichier [SelfAccess01.txt] dupliqué sous [SelfAccess02.txt]..."

' Renommer la copie
FileRename "C:\Mes documents\SelfAccess02.txt", "SelfAccess03.txt"
MsgBox "Fichier [SelfAccess02.txt] renommé en [SelfAccess03.txt]..."

' Déplacer la copie à la racine du disque
FileMove "C:\Mes documents\SelfAccess03.txt", "C:\SelfAccess03.txt"
MsgBox "Fichier [SelfAccess03.txt] déplacé dans [C:\]"

' Supprimer les 2 fichiers de test
FileDelete "C:\Mes documents\SelfAccess01.txt"
FileDelete "C:\SelfAccess03.txt"
MsgBox "Fichiers [SelfAccess01.txt] et [SelfAccess03.txt] supprimés..."
End Function

Mes livres sur Access...
[cliquez pour plus d'infos]





Hit-Parade 
 
[ Copyright 1997-2018 hervé inisan, self-access.com Reproduction interdite ]