Détecter une clé USB
Détecter la présence d'une clé USB à l'aide du FileSystemObject
Comme on le sait, lorsque l'on branche une clé USB dans un port d'un PC, on ne sait d'avance quelle lettre sera attribuée à cette clé. Car cela dépend du port, voir du PC sur lequel on la branche.
Une manière efficace pour gérer cela est de nommer les clés USB. Pour cela, on la branche dans n'importe quel port et lorsque Windows l'aura détectée et éventuellement déclarée au système, un clic droit sur son icône permet d'afficher ses propriétés. Là, on trouvera un champ spécialement prévu à recevoir un nom de volume. Préférez un nom "parlant" sans espace (comme "Gestion_Cave") pour la facilité.
On détectera donc en fait un nom de volume duquel on récupèrera la lettre attribuée par Windows.
Le code ci-dessous, que l'on placera dans un module, permet de faire cela :
Function GetUSB(sName As String) As String
'/
'/ Nécessite la référence "Microsoft Scripting Runtime"
'/
Dim FSO As FileSystemObject
Dim objDrive As Drive
Set FSO = CreateObject("Scripting.FileSystemObject")
GetUSB = ""
'on boucle
For Each objDrive In FSO.Drives
If objDrive.DriveType = 1 Then
If objDrive.IsReady Then
If objDrive.VolumeName = sName Then
GetUSB = objDrive.DriveLetter & ":/"
End If
End If
End If
Next
End Function
Dans le code Access, l'utilisation sera alors on ne peut plus simple...
Dim V as string
V = GetUSB("Gestion_Cave")
V contiendra ainsi la lettre du volume attribué à ladite clé USB, sinon rien.