Passage de paramétres
Le
Brat'ac

Bonjour,
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 & "ootcimv2")
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
Je fais quoi comme erreur ?
Merci
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 & "ootcimv2")
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
Je fais quoi comme erreur ?
Merci
Brat'ac a écrit, le 17/05/2012 11:07 :
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.
Les deux fonctionnent bien.
Merci, et bon après-midi.
GS