Imprimer un PDF avec Excel 2010

Bonjour à tous,

J'ai une macro qui a un moment dans ça vie me créer un pdf. Jusque là tout va bien.

Plus tard dans la vie de cette belle macro, j'éprouve le besoin d'imprimer le pdf en question (chemin et nom connu) sur une imprimante (également connue) qui n'est pas l'imprimante par défaut.

J'ai essayé plein de morceaux de code trouvé un peu partout sur le net et j'arrive à deux conclusion :

- Je n'arrive pas a sélectionner l'imprimante [c'est toujours la même imprimante, j'aimerais ne pas passer par une boite de dialogue pour selectionner l'imprimante] (Application.ActivePrinter = "HP LaserJet MFP E82540 (MAG) on Ne04:" me renvoi un message d'erreur)

- Je n'arrive pas a imprimer le pdf (je n'ai pas besoin de l'ouvrir, je voudrais pouvoir l'imprimer et que ce soit transparent pour l'utilisateur)

Merci à tous

En farfouillant un peu plus j'ai trouvé ça : https://forum.excel-pratique.com/s/goto/450212

J'arrive maintenant à imprimer le pdf. Mais toujours pas sur la bonne imprimante :(

Bon...

J'ai réussi à utiliser Application.ActivePrinter = "HP LaserJet MFP E82540 (MAG) on Ne04:"...l'erreur venait du "on Ne04:". Il fallait écrire "sur Ne04:"

Par contre, il semblerait que mon bout de code imprime sur l'imprimante par défaut quoi qu'il arrive...

Savez vous comment changer via vba et excel, l'imprimante par défaut sous windows ?

Sub Imprimer(NomFichier As String)

Dim MonImprimante As String
Dim MonImprimanteDefaut As String

    MonImprimante = "HP Color MFP E87640-50-60 PCL-6 (V4) sur Ne04:"
    MonImprimanteDefaut = "HP LaserJet MFP E82540 (MAG) sur Ne03:"

    Application.ActivePrinter = MonImprimante
    'MsgBox (Application.ActivePrinter)
    Dim x As Long
    x = FindWindow("XLMAIN", Application.Caption)
    ShellExecute x, "print", NomFichier, "", "", 2
    ActivePrinter = MonImprimanteDefaut
    'MsgBox (Application.ActivePrinter)

End Sub

Merci à tous

Bon... J'arrive à changer l'imprimante par défaut dans le panneau de configuration (je vois le changement au fur et a mesure de la progression de la macro.

MAIS...excel ne semble pas prendre en compte se changement. Il ne se préoccupe que de l'imprimante par défaut lors de l'ouverture de Excel.

En gros :

Imprimante "A" par défaut dans le panneau de conf

J'ouvre excel

Je défini l'imprimante "B" par défaut dans Excel

Le changement s'effectue dans le panneau de conf

Impression sur imprimante "A"

Je ferme Excel

J'ouvre Excel sans effectuer aucun changement sur la sélection d'imprimante

Impression sur imprimante "B"...

C'est entrain de me rendre fou cette histoire...

Sub Imprimer(NomFichier As String)

Dim MonImprimante As String
Dim MonImprimanteDefaut As String
Dim MyNetwork As Object

    MonImprimante = "HP Color MFP E87640-50-60 PCL-6 (V4)" ' sur Ne04:"
    MonImprimanteDefaut = "HP LaserJet MFP E82540 (MAG)" ' sur Ne03:"

''''''''''Choix Imprimante''''''''''''''''''''''''

    Set MyNetwork = CreateObject("WScript.network")
    MyNetwork.SetDefaultPrinter MonImprimante     

''''''''''Impression''''''''''''''''''''''''''''''
    Dim x As Long
    x = FindWindow("XLMAIN", Application.Caption)
    ShellExecute x, "print", NomFichier, "", "", 1

''''''''''Retour à l'imprimante "de base" ''''''''''''''''''''''''

    MyNetwork.SetDefaultPrinter MonImprimanteDefaut  

End Sub

Bonjour Lenain,

Déconnecte toi de l'imprimante B, via le panneau de configuration de Windows.

Bien cordialement,

Bonjour,

Qu'entends tu par "déconnecter".

Pour préciser :

Imprimante A

J'ouvre Excel

Je change manuellement pour imprimante B par défaut dans le panneau de conf

Excel Imprim sur l'imprimante A

Je ferme, j'ouvre Excel.

Impression sur l'imprimante B

En gros, que je fasse le changement d'imprimante par défaut dans excel ou dans le panneau de conf, le résultat est le même

Si je part de l'imprimante B pour aller vers l'imprimante A, c'est la même chose.

Cdt,

Je comprends pas bien pourquoi mais il semble qu'en compilant les deux méthodes précédentes, l'impression fonctionne

    MonImprimanteDefautEx = "HP Color MFP E87640-50-60 PCL-6 (V4) sur Ne04:"
    MonImprimanteEx = "HP LaserJet MFP E82540 (MAG) sur Ne03:"
    MonImprimanteDefaut = "HP Color MFP E87640-50-60 PCL-6 (V4)" ' sur Ne04:"
    MonImprimante = "HP LaserJet MFP E82540 (MAG)" ' sur Ne03:"

    Set MyNetwork = CreateObject("WScript.network")
    MyNetwork.SetDefaultPrinter MonImprimante
    ActivePrinter = MonImprimanteEx

    Dim x As Long
    x = FindWindow("XLMAIN", Application.Caption)
    ShellExecute x, "print", NomFichier, "", "", 1

    MyNetwork.SetDefaultPrinter MonImprimanteDefaut
    ActivePrinter = MonImprimanteDefautEx

Edit :

Le secret est dans la pendule. Le temps d'ouvrir le fichier et de lancer l'impression, l'imprimante par défaut avait de nouveau changé. Du cou :

    MonImprimanteEx = "HP Color MFP E87640-50-60 PCL-6 (V4) sur Ne04:"
    MonImprimanteDefautEx = "HP LaserJet MFP E82540 (MAG) sur Ne03:"
    MonImprimante = "HP Color MFP E87640-50-60 PCL-6 (V4)" ' sur Ne04:"
    MonImprimanteDefaut = "HP LaserJet MFP E82540 (MAG)" ' sur Ne03:"

    Set MyNetwork = CreateObject("WScript.network")
    MyNetwork.SetDefaultPrinter MonImprimante
    ActivePrinter = MonImprimanteEx

    Dim x As Long
    x = FindWindow("XLMAIN", Application.Caption)
    ShellExecute x, "print", NomFichier, "", "", 1

    Application.Wait Now + TimeValue("0:00:05") 'Temps d'attente

    MyNetwork.SetDefaultPrinter MonImprimanteDefaut
    ActivePrinter = MonImprimanteDefautEx

Dernier petit point à corriger :

Il faut que j'imprime en 3 exemplaires

Rechercher des sujets similaires à "imprimer pdf 2010"