OVH Cloud OVH Cloud

Nom système d'un disque (volume)

9 réponses
Avatar
AlainGG
Bonjour à toutes et à tous,
Je sais qu'il est possible (mais je ne sais plus comment) de récupérer le
"nom de volume" d'un disque avec VBA, afin de l'exploiter dans une macro
(note: il s'agit de récupérer, pas de changer).
Quelqu'un pourrait-il me rafraichir la mémoire ? Merci.
--
Alain

9 réponses

Avatar
anomymousA
bonjour,

je suis pas sur que c'est ce que tu veuilles mais tu peux essayer ca en
ayant fait une référence dans OUtilsd./références à Microsoft Scripting
Runtime

Dim fso As FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetDrive("D").VolumeName

A+


Bonjour à toutes et à tous,
Je sais qu'il est possible (mais je ne sais plus comment) de récupérer le
"nom de volume" d'un disque avec VBA, afin de l'exploiter dans une macro
(note: il s'agit de récupérer, pas de changer).
Quelqu'un pourrait-il me rafraichir la mémoire ? Merci.
--
Alain


Avatar
Patrick Fredin
Bonjour,

Si tu me donnes ton adresse email, je t'envois un document qui en parle. Ou
cherche sur Internet comment utiliser le File System Object.

--
Patrick

"AlainGG" wrote in message
news:
Bonjour à toutes et à tous,
Je sais qu'il est possible (mais je ne sais plus comment) de récupérer le
"nom de volume" d'un disque avec VBA, afin de l'exploiter dans une macro
(note: il s'agit de récupérer, pas de changer).
Quelqu'un pourrait-il me rafraichir la mémoire ? Merci.
--
Alain


Avatar
Alain CROS
Bonjour.

Private Declare Function GetVolumeInformation& _
Lib "Kernel32" Alias "GetVolumeInformationA" _
(ByVal lpRootPathName$, ByVal lpVolumeNameBuffer$, _
ByVal nVolumeNameSize&, ByRef lpVolumeSerialNumber&, _
ByRef lpMaximumComponentLength&, ByRef lpFileSystemFlags&, _
ByVal lpFileSystemNameBuffer$, ByVal nFileSystemNameSize&)

Sub Test()
Dim LeNom$
If RecupNom("C:", LeNom) Then
MsgBox LeNom
Else
MsgBox "Erreur"
End If
End Sub

Function RecupNom&(Lecteur$, NomVolume$)
Dim I&
I = 30&
NomVolume = String$(I, vbNullChar)
If GetVolumeInformation(Lecteur, NomVolume, I, _
0&, 0&, 0&, vbNullString, 0&) Then
NomVolume = Left$(NomVolume, InStr(NomVolume, vbNullChar) - 1&)
RecupNom = Len(NomVolume) > 0&
End If
End Function

Alain CROS

"AlainGG" a écrit dans le message de news:
Bonjour à toutes et à tous,
Je sais qu'il est possible (mais je ne sais plus comment) de récupérer le
"nom de volume" d'un disque avec VBA, afin de l'exploiter dans une macro
(note: il s'agit de récupérer, pas de changer).
Quelqu'un pourrait-il me rafraichir la mémoire ? Merci.
--
Alain


Avatar
anomymousA
bonjour,

Peux-tu m'indiquer s'il ya plus d'interet à utiilser les API que la
procédure que j'ai écrite pour AlainGG et si oui, pourquoi ?
J'ai fait tourner ta procédure et elle me renvoie la même chose que la
mienne.Je ne prétends que la mienne soit meilleure, je souhaite juste
m'instruire un peu plus.

Merci d'avance.

A+



Bonjour.

Private Declare Function GetVolumeInformation& _
Lib "Kernel32" Alias "GetVolumeInformationA" _
(ByVal lpRootPathName$, ByVal lpVolumeNameBuffer$, _
ByVal nVolumeNameSize&, ByRef lpVolumeSerialNumber&, _
ByRef lpMaximumComponentLength&, ByRef lpFileSystemFlags&, _
ByVal lpFileSystemNameBuffer$, ByVal nFileSystemNameSize&)

Sub Test()
Dim LeNom$
If RecupNom("C:", LeNom) Then
MsgBox LeNom
Else
MsgBox "Erreur"
End If
End Sub

Function RecupNom&(Lecteur$, NomVolume$)
Dim I&
I = 30&
NomVolume = String$(I, vbNullChar)
If GetVolumeInformation(Lecteur, NomVolume, I, _
0&, 0&, 0&, vbNullString, 0&) Then
NomVolume = Left$(NomVolume, InStr(NomVolume, vbNullChar) - 1&)
RecupNom = Len(NomVolume) > 0&
End If
End Function

Alain CROS

"AlainGG" a écrit dans le message de news:
Bonjour à toutes et à tous,
Je sais qu'il est possible (mais je ne sais plus comment) de récupérer le
"nom de volume" d'un disque avec VBA, afin de l'exploiter dans une macro
(note: il s'agit de récupérer, pas de changer).
Quelqu'un pourrait-il me rafraichir la mémoire ? Merci.
--
Alain







Avatar
Clément Marcotte
Bonjour,

Si tu veux mon avis personnel et non vérifié; c'est à peu près la même
chose, sauf que FileSystemObject "déguise" ou "encapsule" l'appel à
l'API dans quelque chose de moins rébarbatif, plus conforme à
"l'orientation - objet" de Microsoft.

L'appel direct à l'API fait peut-être gagner un petit peu de temps.


"anomymousA" a écrit dans le
message de news:
bonjour,

Peux-tu m'indiquer s'il ya plus d'interet à utiilser les API que la
procédure que j'ai écrite pour AlainGG et si oui, pourquoi ?
J'ai fait tourner ta procédure et elle me renvoie la même chose que
la

mienne.Je ne prétends que la mienne soit meilleure, je souhaite
juste

m'instruire un peu plus.

Merci d'avance.

A+



Bonjour.

Private Declare Function GetVolumeInformation& _
Lib "Kernel32" Alias "GetVolumeInformationA" _
(ByVal lpRootPathName$, ByVal lpVolumeNameBuffer$, _
ByVal nVolumeNameSize&, ByRef lpVolumeSerialNumber&, _
ByRef lpMaximumComponentLength&, ByRef lpFileSystemFlags&, _
ByVal lpFileSystemNameBuffer$, ByVal nFileSystemNameSize&)

Sub Test()
Dim LeNom$
If RecupNom("C:", LeNom) Then
MsgBox LeNom
Else
MsgBox "Erreur"
End If
End Sub

Function RecupNom&(Lecteur$, NomVolume$)
Dim I&
I = 30&
NomVolume = String$(I, vbNullChar)
If GetVolumeInformation(Lecteur, NomVolume, I, _
0&, 0&, 0&, vbNullString, 0&) Then
NomVolume = Left$(NomVolume, InStr(NomVolume,
vbNullChar) - 1&)


RecupNom = Len(NomVolume) > 0&
End If
End Function

Alain CROS

"AlainGG" a écrit dans le
message de news:


Bonjour à toutes et à tous,
Je sais qu'il est possible (mais je ne sais plus comment) de
récupérer le



"nom de volume" d'un disque avec VBA, afin de l'exploiter dans
une macro



(note: il s'agit de récupérer, pas de changer).
Quelqu'un pourrait-il me rafraichir la mémoire ? Merci.
--
Alain









Avatar
Alain CROS
Bonjour.

Pas plus d'intérêt, c'est une autre méthode.
Avec les API, ça marchera toujours sur un système windows.
Avec FSO, c'est pas sur (ce n'est pas une affirmation).

Alain CROS

"anomymousA" a écrit dans le message de news:

bonjour,

Peux-tu m'indiquer s'il ya plus d'interet à utiilser les API que la
procédure que j'ai écrite pour AlainGG et si oui, pourquoi ?
J'ai fait tourner ta procédure et elle me renvoie la même chose que la
mienne.Je ne prétends que la mienne soit meilleure, je souhaite juste
m'instruire un peu plus.

Merci d'avance.

A+




Avatar
Michel Pierron
Bonsoir anomymousA;
Y'a pas photo non plus pour la vitesse d'exécution, surtout quant on connait
la lenteur de FileSystemObject.
MP


"anomymousA" a écrit dans le message
de news:
bonjour,

Peux-tu m'indiquer s'il ya plus d'interet à utiilser les API que la
procédure que j'ai écrite pour AlainGG et si oui, pourquoi ?
J'ai fait tourner ta procédure et elle me renvoie la même chose que la
mienne.Je ne prétends que la mienne soit meilleure, je souhaite juste
m'instruire un peu plus.

Merci d'avance.

A+



Bonjour.

Private Declare Function GetVolumeInformation& _
Lib "Kernel32" Alias "GetVolumeInformationA" _
(ByVal lpRootPathName$, ByVal lpVolumeNameBuffer$, _
ByVal nVolumeNameSize&, ByRef lpVolumeSerialNumber&, _
ByRef lpMaximumComponentLength&, ByRef lpFileSystemFlags&, _
ByVal lpFileSystemNameBuffer$, ByVal nFileSystemNameSize&)

Sub Test()
Dim LeNom$
If RecupNom("C:", LeNom) Then
MsgBox LeNom
Else
MsgBox "Erreur"
End If
End Sub

Function RecupNom&(Lecteur$, NomVolume$)
Dim I&
I = 30&
NomVolume = String$(I, vbNullChar)
If GetVolumeInformation(Lecteur, NomVolume, I, _
0&, 0&, 0&, vbNullString, 0&) Then
NomVolume = Left$(NomVolume, InStr(NomVolume, vbNullChar) - 1&)
RecupNom = Len(NomVolume) > 0&
End If
End Function

Alain CROS

"AlainGG" a écrit dans le message de
news:


Bonjour à toutes et à tous,
Je sais qu'il est possible (mais je ne sais plus comment) de récupérer
le



"nom de volume" d'un disque avec VBA, afin de l'exploiter dans une
macro



(note: il s'agit de récupérer, pas de changer).
Quelqu'un pourrait-il me rafraichir la mémoire ? Merci.
--
Alain









Avatar
anomymousA
Merci à tous pour vos réponses.

A+


bonjour,

Peux-tu m'indiquer s'il ya plus d'interet à utiilser les API que la
procédure que j'ai écrite pour AlainGG et si oui, pourquoi ?
J'ai fait tourner ta procédure et elle me renvoie la même chose que la
mienne.Je ne prétends que la mienne soit meilleure, je souhaite juste
m'instruire un peu plus.

Merci d'avance.

A+



Bonjour.

Private Declare Function GetVolumeInformation& _
Lib "Kernel32" Alias "GetVolumeInformationA" _
(ByVal lpRootPathName$, ByVal lpVolumeNameBuffer$, _
ByVal nVolumeNameSize&, ByRef lpVolumeSerialNumber&, _
ByRef lpMaximumComponentLength&, ByRef lpFileSystemFlags&, _
ByVal lpFileSystemNameBuffer$, ByVal nFileSystemNameSize&)

Sub Test()
Dim LeNom$
If RecupNom("C:", LeNom) Then
MsgBox LeNom
Else
MsgBox "Erreur"
End If
End Sub

Function RecupNom&(Lecteur$, NomVolume$)
Dim I&
I = 30&
NomVolume = String$(I, vbNullChar)
If GetVolumeInformation(Lecteur, NomVolume, I, _
0&, 0&, 0&, vbNullString, 0&) Then
NomVolume = Left$(NomVolume, InStr(NomVolume, vbNullChar) - 1&)
RecupNom = Len(NomVolume) > 0&
End If
End Function

Alain CROS

"AlainGG" a écrit dans le message de news:
Bonjour à toutes et à tous,
Je sais qu'il est possible (mais je ne sais plus comment) de récupérer le
"nom de volume" d'un disque avec VBA, afin de l'exploiter dans une macro
(note: il s'agit de récupérer, pas de changer).
Quelqu'un pourrait-il me rafraichir la mémoire ? Merci.
--
Alain









Avatar
AlainGG
Merci à Alain CROS et aux autres.
Exactement ce que je cherchais.
Merci encore.
Amicalement.
Alain.

"Alain CROS" wrote:

Bonjour.

Private Declare Function GetVolumeInformation& _
Lib "Kernel32" Alias "GetVolumeInformationA" _
(ByVal lpRootPathName$, ByVal lpVolumeNameBuffer$, _
ByVal nVolumeNameSize&, ByRef lpVolumeSerialNumber&, _
ByRef lpMaximumComponentLength&, ByRef lpFileSystemFlags&, _
ByVal lpFileSystemNameBuffer$, ByVal nFileSystemNameSize&)

Sub Test()
Dim LeNom$
If RecupNom("C:", LeNom) Then
MsgBox LeNom
Else
MsgBox "Erreur"
End If
End Sub

Function RecupNom&(Lecteur$, NomVolume$)
Dim I&
I = 30&
NomVolume = String$(I, vbNullChar)
If GetVolumeInformation(Lecteur, NomVolume, I, _
0&, 0&, 0&, vbNullString, 0&) Then
NomVolume = Left$(NomVolume, InStr(NomVolume, vbNullChar) - 1&)
RecupNom = Len(NomVolume) > 0&
End If
End Function

Alain CROS

"AlainGG" a écrit dans le message de news:
Bonjour à toutes et à tous,
Je sais qu'il est possible (mais je ne sais plus comment) de récupérer le
"nom de volume" d'un disque avec VBA, afin de l'exploiter dans une macro
(note: il s'agit de récupérer, pas de changer).
Quelqu'un pourrait-il me rafraichir la mémoire ? Merci.
--
Alain