Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Passage de paramétres

2 réponses
Avatar
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 & "\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

Je fais quoi comme erreur ?

Merci

2 réponses

Avatar
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.
Avatar
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