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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gloops
Le #24483361
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.
Brat'ac
Le #24483491
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
Publicité
Poster une réponse
Anonyme