Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Function GetVolumeName(ByVal cDrive As String) As String
' http://www.codyx.org/snippet_recuperer-nom-attribue-lecteur-disque-cle-etc_863.aspx
' cDrive = CHAR (lettre) de A à Z
Dim sBuffer As String
Dim iEnd As Integer
sBuffer = Space$(255)
GetVolumeInformation cDrive & ":\", sBuffer, Len(sBuffer), 0&, 0&, 0&, vbNullString, 0&
iEnd = InStr(1, sBuffer, vbNullChar)
If iEnd Then GetVolumeName = Left$(sBuffer, iEnd - 1)
End Function
Function lettreLecteur(nomLecteur As String) As String
Dim l As Long
For l = 1 To 26
If GetVolumeName(Chr(64 + l)) = nomLecteur Then
lettreLecteur = Chr(l + 64)
Exit For
End If
Next l
End Function
Sub test()
Dim r As String, nomLecteur As String
nomLecteur = "KINGSTON"
r = lettreLecteur(nomLecteur)
If r <> "" Then
MsgBox ("Lettre du lecteur '" & nomLecteur & "' = " & r)
Else
MsgBox ("Lecteur '" & nomLecteur & "' non trouvé.")
End If
End Sub