Petite question VBA

Résolu/Fermé
Max - 14 juin 2016 à 07:19
 Max - 14 juin 2016 à 10:11
Bonjour,

j'essaie depuis hier de récupérer une valeur d'une clé de registre pour une macro et j'ai systématiquement un message d'erreur au lancement.

Mon Msgbox remonte pourtant bien la bonne info mais ne l'exploite pas dans le reste de ma commande ...

Mon script est le suivant:

Sub ShowPrinterProperties()

Set c = CreateObject("WScript.Shell")
impr = c.RegRead("HKEY_CURRENT_USER]\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")

'MsgBox impr

Shell "rundll32.exe printui.dll,PrintUIEntry /e /n&impr"

End Sub


Concrètement, je souhaite tout simplement ouvrir la fenêtre de configuration de la mise en page du document sans passer par fichier > Imprimer et qu'il récupère les options d'impressions pour l'imprimante qui est connectée par défaut sur le poste de travail.

J'ai fouillé partout et je ne trouve rien.
Merci beaucoup à celui ou celle qui résoudra ce petit problème.
Il doit certainement manqué une petite bricole mais je sèche .....

Dans l'attente de vous lire, je vous souhaite une bonne journée.

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
14 juin 2016 à 08:10
Bonjour

comme ceci

Shell "rundll32.exe printui.dll,PrintUIEntry /e /n" & impr






0
Merci pour cette réponse très rapide !!!

J'ai juste un soucis, je récupère des imprimantes sur un serveur d'impression et une des 2 imprimantes s'appelle Copieurs Konica.

La commande ne fonctionne pas quand c'est la Copieurs Konica mais fonctionne quand c'est l'autre imprimante Imp001. Je pense que le problème vient de l'espace dans le nom de l'imprimante.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Max
Modifié par jordane45 le 14/06/2016 à 10:08
Et bien oui y'a des chances.
Comment ferais tu cette commande directement sous dos ?

A la limite tu peux assayer d'ajouter des guillemets autour de la variable.
Un truc du genre :
Shell "rundll32.exe printui.dll,PrintUIEntry /e /n" & """" &  impr & """"
0
Ah bah j'en ai discuté avec mon collègue et il m'a conseillé d'utiliser les variables ASCII des guillemets donc j'ai testé et c'est good !

La ligne de commande est donc désormais:
Shell "rundll32.exe printui.dll,PrintUIEntry /e /n" & Chr(34) & impr & Chr(34)

Merci beaucoup jordane45 pour ton aide et ta disponibilité.
0