Petite question VBA

Résolu
Max -  
 Max -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour

    comme ceci

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


    0
    1. Max
       
      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
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Max
         
        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
    2. Max
       
      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