Dans une macro je cherche la lettre en fonction du nom d'un disque et
de
son type
c'est bon ça fonctionne bien comme cela (macro trouvée sur le net)
------------------------------------------------------------------
Sub TrouveLettre()
strComputer = "."
Set objWMIService = GetObject("winmgmts:" &
"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk
WHERE DriveType = 3", , 48)
For Each objdisk In colDisks
If objdisk.VolumeName = "Navette 250" Then
rdrive = objdisk.DeviceID & "\"
Debug.Print rdrive
End If
Next objdisk
End Sub
------------------------------------------------------------
Maintenant j'essaie en passant le paramètre DriveType comme ça
Sub TrouveLettre(L as Variant))
.........
Set colDisks = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk
WHERE DriveType = L", , 48)
J'ai une erreur d'exécution '2147217385(80041017) Erreur Automation
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gloops
Bonjour,
Brat'ac a écrit, le 17/05/2012 11:07 :
Maintenant j'essaie en passant le paramètre DriveType comme ça Sub TrouveLettre(L as Variant)) ......... Set colDisks = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDi sk WHERE DriveType = L", , 48)
Meuh non, ce n'est pas la lettre L, qu'il faut passer, mais le contenu de la variable qui s'appelle comme ça :
"WHERE DriveType = " & L, , 48)
Je n'ai pas vérifié si il y avait une conversion explicite à faire, enfin a priori si c'est un entier il sera exprimé en chaîne de caractères donc ça baigne.
Attention, pas + à la place de &, sinon là il faut explicitement mett re des données de même type : "WHERE DriveType = " + VBA.Str$(L)
Il y a une quinzaine d'années on a connu un contexte où on était ob ligé de faire ça.
Bonjour,
Brat'ac a écrit, le 17/05/2012 11:07 :
Maintenant j'essaie en passant le paramètre DriveType comme ça
Sub TrouveLettre(L as Variant))
.........
Set colDisks = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDi sk
WHERE DriveType = L", , 48)
Meuh non, ce n'est pas la lettre L, qu'il faut passer, mais le contenu
de la variable qui s'appelle comme ça :
"WHERE DriveType = " & L, , 48)
Je n'ai pas vérifié si il y avait une conversion explicite à faire,
enfin a priori si c'est un entier il sera exprimé en chaîne de
caractères donc ça baigne.
Attention, pas + à la place de &, sinon là il faut explicitement mett re
des données de même type :
"WHERE DriveType = " + VBA.Str$(L)
Il y a une quinzaine d'années on a connu un contexte où on était ob ligé
de faire ça.
Maintenant j'essaie en passant le paramètre DriveType comme ça Sub TrouveLettre(L as Variant)) ......... Set colDisks = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDi sk WHERE DriveType = L", , 48)
Meuh non, ce n'est pas la lettre L, qu'il faut passer, mais le contenu de la variable qui s'appelle comme ça :
"WHERE DriveType = " & L, , 48)
Je n'ai pas vérifié si il y avait une conversion explicite à faire, enfin a priori si c'est un entier il sera exprimé en chaîne de caractères donc ça baigne.
Attention, pas + à la place de &, sinon là il faut explicitement mett re des données de même type : "WHERE DriveType = " + VBA.Str$(L)
Il y a une quinzaine d'années on a connu un contexte où on était ob ligé de faire ça.
Brat'ac
Il se trouve que Gloops a formulé :
Meuh non, ce n'est pas la lettre L, qu'il faut passer, mais le contenu de la variable qui s'appelle comme ça :
"WHERE DriveType = " & L, , 48)
Je n'ai pas vérifié si il y avait une conversion explicite à faire, enfin a priori si c'est un entier il sera exprimé en chaîne de caractères donc ça baigne.
Attention, pas + à la place de &, sinon là il faut explicitement mettre des données de même type : "WHERE DriveType = " + VBA.Str$(L)
Les deux fonctionnent bien.
Merci, et bon après-midi.
GS
Il se trouve que Gloops a formulé :
Meuh non, ce n'est pas la lettre L, qu'il faut passer, mais le contenu de la
variable qui s'appelle comme ça :
"WHERE DriveType = " & L, , 48)
Je n'ai pas vérifié si il y avait une conversion explicite à faire, enfin a
priori si c'est un entier il sera exprimé en chaîne de caractères donc ça
baigne.
Attention, pas + à la place de &, sinon là il faut explicitement mettre des
données de même type :
"WHERE DriveType = " + VBA.Str$(L)
Meuh non, ce n'est pas la lettre L, qu'il faut passer, mais le contenu de la variable qui s'appelle comme ça :
"WHERE DriveType = " & L, , 48)
Je n'ai pas vérifié si il y avait une conversion explicite à faire, enfin a priori si c'est un entier il sera exprimé en chaîne de caractères donc ça baigne.
Attention, pas + à la place de &, sinon là il faut explicitement mettre des données de même type : "WHERE DriveType = " + VBA.Str$(L)