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.