Erreur 1004 methode activeprinter

Merci mais c’est de base ce que j’ai pris en compte au début mais je l’ai remplacé car cela ne fonctionnait pas pour autant

Vous avez une solution plus simple puisque vous imprimez des images, c'est d'utiliser la fonction impression de la visionneuse Windows (si disponible) avec ses paramètres :

Sub imprimer_pdf(chemin_fichier As String, nom_fichier As String)
    Dim nom_image As String
    Const imprimante_pdf As String = "Adobe PDF"

    '// impression via imprimante PDF
    nom_image = chemin_fichier & "\" & nom_fichier
    CreateObject("Shell.Application").ShellExecute "rundll32.exe", "C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt " & Chr(34) & nom_image & Chr(34) & " " & Chr(34) & imprimante_pdf & Chr(34), "", "open", 1

End Sub

Bonjour et merci pour ce nouveau code.

J'ai tenté et cela ne génère aucune erreur. Toutefois je n'ai pas l'impression que cela ne fasse quoi que ce soit et qui plus est je ne sais pas ou irait le fichier...

re,

avez-vous un exemple de votre fichier (BMP,JPG,...) à imprimer ?

je tiens à préciser tout d'abord qu'avec le code de thev sans passer par la visionneuse mais par print to pdf la conversion se fait tres bien , c'est juste que le retour à l'imprimante intitiale ne se fait pas via

       If Application.ActivePrinter Like "*" Then imprimante.SetDefaultPrinter: Exit For

pour le fichier je prends pour le moment n'importe quel jpeg car je l'upload via bouton et l'operation de conversion se fait directement apres l'upload

je connais pourtant le nom exact de l'imprimante qui est une imprimante réseau d'entreprise

image

re,

si vous sauvegardez l'activeprinter dans un variable ???

Sub test()
     strCurrentPrinter = Application.ActivePrinter     'le printer avant le job
     imprimer_pdf ThisWorkbook.Path, "test.bmp"     'chemin et nom du fichier à  imprimer vers pdf
     Application.ActivePrinter = strCurrentPrinter     'retour au premier printer
End Sub

merci justement c'est que j'ai tenté de mettre en palce avec le code de thev mais cela ne fonctionnait pas

En y réfléchissant, je pense que le problème vient du fait que seules sont énumérées les imprimantes locales. Essayer cette modif pour voir si votre imprimante réseau est listée. Le MsgBox devrait afficher votre imprimante réseau si le code est correct :

    
    'restauration imprimante par défaut
    Set imprimantes = WMIservice.ExecQuery("Select * from From Win32_Printer Where Local = FALSE")
    For Each imprimante In imprimantes
        MsgBox imprimante.Caption
        If Application.ActivePrinter Like imprimante.Caption & "*" Then imprimante.SetDefaultPrinter: Exit For
    Next imprimante

Bonjour et merci pour ce nouveau code.

J'ai tenté et cela ne génère aucune erreur. Toutefois je n'ai pas l'impression que cela ne fasse quoi que ce soit

Chez moi, ça fonctionne bien. Vérifiez tout de même que nom_image est bien correct via MsgBox.

Sub imprimer_pdf(chemin_fichier As String, nom_fichier As String)
    Dim nom_image As String
    Const imprimante_pdf As String = "Microsoft Print to PDF"

    '// impression via imprimante PDF
    nom_image = chemin_fichier & "\" & nom_fichier
    MsgBox nom_image
    CreateObject("Shell.Application").ShellExecute "rundll32.exe", "C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt " & Chr(34) & nom_image & Chr(34) & " " & Chr(34) & imprimante_pdf & Chr(34), "", "open", 1

End Sub

merci, effectivement le problème venait que le nom de l'image comprenait le chemin d'accès avec

toutefois cela coupe les images importées lors de la conversion et j'ai testé plusieurs images...

votre autre méthode semble etre la meilleure pour le moment meme si l'imprimante par défaut initial ne revient pas

votre autre méthode semble etre la meilleure pour le moment meme si l'imprimante par défaut initial ne revient pas

Vous avez essayé le code spécifique à la reconnaissance d'une imprimante réseau que je vous ai soumis ?

oui et cela ne fonctionne pas et laisse l'imprimante microsoft print to pdf par défaut

reconnait-il l'imprimante réseau via le msgbox ?

en fait après re tentative cela change bien d'imprimante mais ne sélectionne pas la bonne. En effet cela prend en imprimante: Microsoft XPS Document Writer au lieu de mon imprimante Mes_impressionsPOC sur vms-whatdoc

Auriez vous une autre méthode à me proposer ?

merci par avance et bonne soirée

Vous n'avez pas répondu à ma question.

Votre imprimante réseau "\\vms_whatdoc\Mes_impressionsPOC" s'affiche t-elle avec le code ci-dessous

Sub imprimer_pdf(chemin_fichier As String, nom_fichier As String)
    Dim WMIservice As Object, imprimantes As Object, imprimante As Object

    Set imprimantes = WMIservice.ExecQuery("Select * from From Win32_Printer Where Local = FALSE")
    For Each imprimante In imprimantes
        MsgBox imprimante.Caption
    Next imprimante
End Sub

Bonjour

ce code me renvoi une erreur d’exécution 91: variable objet ou variable de bloc with non definie

signalé à cette ligne

Set imprimantes = WMIservice.ExecQuery("Select * from From Win32_Printer Where Local = FALSE")

Effectivement, il manque une instruction

Sub imprimer_pdf(chemin_fichier As String, nom_fichier As String)
    Dim WMIservice As Object, imprimantes As Object, imprimante As Object

    Set WMIservice = GetObject("winmgmts:\\" & "." & "\root\cimv2")
    Set imprimantes = WMIservice.ExecQuery("Select * from Win32_Printer Where Local = FALSE")
    For Each imprimante In imprimantes
        MsgBox imprimante.Caption
    Next imprimante

End Sub

Bonsoir Thev

Juste comme ça, je suis de passage

Pourquoi utiliser un Sub avec des paramètres alors que tu ne t'en sers pas

A+

Pourquoi utiliser un Sub avec des paramètres alors que tu ne t'en sers pas

Bonjour Bruno,

C'est juste que je suis resté dans la continuité de mon code fourni au début de mon intervention. Pour le test de détection de l' imprimante réseau, ce n'est évidemment pas nécessaire.

Rechercher des sujets similaires à "erreur 1004 methode activeprinter"