3/10 Dans cette fiche...    

Début de page La collection Drives

La collection Drives dépend directement de l'objet FileSystemObject
Elle liste l'ensemble des disques disponibles sur votre système, chaque disque étant représenté par un objet Drive (logique, non ?).

Comme l'indique l'Explorateur d'objets (touche F2 dans Visual Basic Editor), la collection Drives ne dispose que de 2 propriétés :

Propriétés de la collection Drives
Propriété Description
Count Donne le nombre de disques disponibles.
Item Renvoie l'un des éléments de la collection, donc l'un des disques du système. L'élément renvoyé est un objet Drive qui donne toutes les propriétés du disque concerné.


Début de page
Lister les disques à l'aide de la collection Drives

L'exemple ci-dessous illustre les 2 propriétés de la collection Drives en affichant, dans la fenêtre Exécution, le nombre de disques ainsi que quelques informations sur le disque C.
Pour lancer le programme :

  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.
  4. L'icône Exécuter Sub/UserFormCliquez sur l'icône Exécuter Sub/UserForm.
  5. Contemplez béatement le résultat dans la fenêtre Exécution :o)
  6. Reprenez vos esprits et continuez la lecture de ce qui suit...
' ---
' DRIVES COLLECTION
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction DriveList() illustre les propriétés de
' la collection Drives.
' Les résultats sont affichés dans la fenêtre Exécution (Ctrl+G).

Function DriveList()
Dim fso As Scripting.FileSystemObject

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

' Afficher le nombre de disques
Debug.Print "NOMBRE DE DISQUES: " & fso.Drives.Count

' Afficher quelques infos sur le disque C
Debug.Print "TAILLE DU DISQUE C: " & fso.Drives.Item("C").TotalSize
Debug.Print "NUMERO DE SERIE DU DISQUE C: " & fso.Drives("C").SerialNumber

' Libérer les objets
Set fso = Nothing
End Function
Résultat :


Détail du listing :

Set fso = New Scripting.FileSystemObject
Cette ligne démarre toute utilisation du Scripting Runtime. Il s'agit de créer une instance de l'objet FileSystemObject, à partir de laquelle toutes sortes d'opérations pourront être effectuées sur le système de fichiers.
 
Debug.Print "NOMBRE DE DISQUES: " & fso.Drives.Count
La collection Drives dépend de l'objet FileSystemObject, représenté ici par la variable fso. Sa propriété Count donne le nombre de disques total.
 
Debug.Print "TAILLE DU DISQUE C: " & fso.Drives.Item("C").TotalSize
Debug.Print "NUMERO DE SERIE DU DISQUE C: " & fso.Drives("C").SerialNumber
Ces 2 lignes illustrent 2 méthodes pour accéder à un disque précis.
  • La première méthode utilise explicitement la propriété Item de la collection Drives. Item() doit recevoir entre parenthèses la lettre du disque concerné.
  • La seconde méthode utilise le fait que la propriété Item est la propriété par défaut de la collection Drives : vous vérifiez ceci par le point bleu qui figure en regard de la propriété Item dans l'Explorateur d'objets. Item étant propriété par défaut, il n'est pas nécessaire de la mentionner.

Drives.Item("C") ou Drives("C") voire fso.GetDrive("C") sont donc équivalents et donnent accès à un objet Drive qui décrit un disque. En guise d'illustration, 2 caractéristiques du disque C sont affichées ici : la taille totale (TotalSize) et le numéro de série (SerialNumber). Vous trouverez plus loin la liste des propriétés de l'objet Drive

Dans certains cas, il peut être utile de vérifier si un disque existe avant d'y faire référence. La méthode FileSystemObject.DriveExists()permet de le faire. Par exemple, fso.DriveExists("G") renvoie True si le lecteur G existe, False sinon.

Comme toujours en VBA, les variables objet sont libérées en fin de listing par un Set objet = Nothing.

 

Début de page L'objet Drive

L'objet Drive décrit un disque à l'aide d'une douzaine de propriétés.
La majorité de ces propriétés est accessible en lecture seule et ne peut donc pas être modifiée en Visual Basic.
Ce serait pourtant sympa de pouvoir écrire : fso.Drives("C").TotalSize = 1024^10 :o).

Propriétés de l'objet Drive
Propriété Description Exemple
DriveLetter Donne la lettre du lecteur. A, C, D...
DriveType Donne le type de disque, sous forme numérique (1=Disque amovible, 2=Disque fixe, etc.). Voir plus bas pour quelques compléments.  
IsReady Indique si le disque est prêt et donc accessible. Le lecteur de disquettes est considéré comme prêt si une disquette est placée à l'intérieur. De même pour le lecteur de CD-Rom.  
SerialNumber Donne le numéro de série du disque.  
VolumeName Indique le nom du disque.  
FileSystem Indique le système de fichiers installé sur le disque. FAT32 sur Windows 98, NTFS sur Windows NT/2000/XP.
Path Donne le chemin d'accès au disque. C:, D:...
RootFolder Indique le nom du dossier racine sur le disque. C:\, D:\...
ShareName Donne le nom de partage du disque.  
AvailableSpace Donne l'espace disque disponible, en octets.  
FreeSpace Donne l'espace disque disponible, en octets.

Les propriétés AvailableSpace et FreeSpace donnent le même résultat, à part éventuellement pour des ordinateurs gérant des systèmes de quotas.

 
TotalSize Indique la taille totale du disque, en octets.  

 

Début de page Décrire les disques à l'aide de l'objet Drive

L'exemple ci-dessous parcourt toute la collection Drives en affichant, dans la fenêtre Exécution, le descriptif de chaque disque trouvé.

' ---
' DRIVES COLLECTION / DRIVE OBJECT
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction DriveInfo() utilise la collection Drives et
' l'objet Drive pour énumérer tous les disques du système,
' ainsi que leurs caractéristiques.
' Les résultats sont affichés dans la fenêtre Exécution (Ctrl+G).

Function DriveInfo()
Dim fso As Scripting.FileSystemObject
Dim drv As Scripting.Drive

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

' Liste de tous les disques
On Error Resume Next
Debug.Print "--- INFOS DISQUES"
Debug.Print "NOMBRE DE DISQUES: " & fso.Drives.Count
Debug.Print

For Each drv In fso.Drives
    Debug.Print "--- DISQUE"
    Debug.Print "LETTRE DU DISQUE: ", drv.DriveLetter
    Debug.Print "TYPE DE DISQUE: ", drv.DriveType & " - " & DriveType(drv.DriveType)
    Debug.Print "DISQUE PRET: ", , drv.IsReady

    If drv.IsReady Then
        Debug.Print "NUMERO DE SERIE: ", drv.SerialNumber
        Debug.Print "NOM DU DISQUE: ", drv.VolumeName
        Debug.Print "SYSTEME DE FICHIER: ", drv.FileSystem
        Debug.Print "CHEMIN: ", , drv.Path
        Debug.Print "DOSSIER RACINE: ", drv.RootFolder.Path
        Debug.Print "PARTAGE: ", drv.ShareName
        Debug.Print "ESPACE TOTAL: ", drv.TotalSize
        Debug.Print "ESPACE LIBRE: ", drv.FreeSpace
        Debug.Print "ESPACE DISPONIBLE: ", drv.AvailableSpace
    End If
    Debug.Print
Next

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

' ---
' DRIVETYPECONST
' ---
' La fonction DriveType() affiche en clair les types de disques.

Function DriveType(ByVal intDriveType As Scripting.DriveTypeConst)
Dim strType As String

Select Case intDriveType
    Case UnknownType: strType = "Inconnu"
    Case Removable: strType = "Disque amovible"
    Case Fixed: strType = "Disque fixe"
    Case RamDisk: strType = "RamDisk"
    Case CDRom: strType = "CD-Rom"
End Select
DriveType = strType
End Function
Résultat :


Détail du listing :
For Each drv in fso.Drives
...
Next
La collection Drives donne accès à x disques. Nous utilisons donc une boucle For Each/Next pour parcourir ces disques. A chaque passage dans la boucle, la variable drv (de type Drive) désigne l'un des disques.

Pour obtenir la description du disque C uniquement, vous pouvez bien sûr remplacer la boucle For Each/Next par l'instruction : Set drv = fso.Drives("C")

 
Function DriveType(...)
...
End Function
Le type de disque (amovible, fixe, CD-Rom, etc.) est donné par la propriété Drive.DriveType, qui est une valeur numérique de 0 à 5 représentée par l'énumération DriveTypeConst (que vous trouvez également dans l'Explorateur d'objets). 

La fonction DriveType() se charge simplement d'afficher le type de disque en toutes lettres (un gadget cosmétique, donc !).

Début de page Renommer un disque à l'aide de l'objet Drive

L'exemple ci-dessous fait appel à la propriété Drive.VolumeName pour modifier le nom du disque C.

' ---
' DRIVE.VOLUMENAME
' ---
' (c) 2003, Hervé Inisan - www.self-access.com
'
' La fonction ChangeVolumeName() renomme le disque C.
' Vous pouvez l'améliorer en paramétrant le choix du disque
' et le nom à attribuer :-)

Function ChangeVolumeName()
Dim fso As Scripting.FileSystemObject
Dim drv As Scripting.Drive

' Créer une instance du FSO et une instance du disque C
Set fso = New Scripting.FileSystemObject
Set drv = fso.Drives("C")

' Renommer le disque C
drv.VolumeName = "SELFACCESS"

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

 << 2. Modèle objet Scripting Runtime [ Sommaire ] 4. Manipulation des dossiers (Folders) >> 
Cette section vous intéresse ? Abonnez-vous ! Hit-Parade  

 

 
Notions de base
Jargon Access :o)
Syntaxe SQL
Programmation ASP
Scripting Runtime

Le Grenier [FAQ Access]
Les tutoriaux Self-Access
Les Assistants Access

Les livres sur Access !

Cliquez sur un ouvrage
pour plus de détails

 
 
Forums Access
Abonnement gratuit
Télécharger...
 
 
Le saviez-vous ?
Une base contient au maximum 32768 objets. De quoi voir venir !

A demain pour une nouvelle astuce !