Imprimante par default VBA

Bonjour à tous,

J'ai un soucis, lorsque mes techniciens travaillent, ils ont 2 fichiers Excel ouvert.

1 pour imprimer les étiquettes.

1 pour rédiger le rapport de l'instrument.

Ils ont de paramétré par défaut sur leur PC une petite imprimante portable pour imprimer les étiquettes :

image

Jusque la tout est ok, ils appuient sur un bouton sur le fichier leur étiquette sort au bon format.

La où j'ai un problème c'est pour l'édition du rapport de l'instrument, vu que l'imprimante portable est par défaut sur l'ordinateur, il me prend en compte l'imprimante lorsqu'ils veulent éditer leur rapport (qui est un rapport sur une feuille A4 classique), du coup sa fou le bazar ils sont obliger de relectionner Microsoft print PDF pour éditer leur rapport (puis après re sélectionner l'imprimante sur l'autre fichier pour pouvoir sortir une étiquette pour l'instrument suivant) A savoir qu'ils ont 50 rapports par jours à éditer sa deviens vite galère !

Savez-vous si il est possible avec VBA de définir une imprimante par default avec l'impression, ou bien de dire a VBA tu imprimes le rapport via microsoft print PDF avec une mise en forme classique?

Ou alors tout simplement de sélectionner une imprimante par default via une liste ?

J'ai ce bout de code qui me permet de sélectionner une imprimante, sauf que derrière j'ai des macros qui sont utilisés pour enregistrer les fichiers à certains endroits sous certains formats. Mon seul problème c'est cette imprimante par default qui fou le bazar sur les zones d'impressions!!

Help me please :)

Sub Choiximprimante()
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

Salut voici une proposition d'adaptation du code vba :

(je ne l'ai pas testé)

Sub ImprimerRapport()

    ' Sauvegarde de l'imprimante par défaut actuelle
    Dim defaultPrinter As String
    defaultPrinter = Application.ActivePrinter

    ' Définition de l'imprimante spécifique pour le rapport
    ' (Vous devez remplacer "NomDeVotreImprimante" par le nom exact de l'imprimante que vous souhaitez utiliser)
    Application.ActivePrinter = "NomDeVotreImprimante"

    ' Impression du rapport
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

    ' Restauration de l'imprimante par défaut
    Application.ActivePrinter = defaultPrinter

End Sub

Bonne journée

Hello,

Merci pour la réponse ultra rapide.

En faite je veux qu'il imprime ma page via Microsoft print to PDF. Quand je sélectionne à la main Microsoft print il me remet bien ma page à la bonne zone d'impression. Du coup VBA peut juste sélectionner cette "imprimante" et après je balance mes macros?

Je viens de trouver ma solution :

Application.ActivePrinter = "Microsoft Print to PDF sur Ne02:"

Question, comment savoir si c'est ne02? Je ne comprend pas cette variable qui peut m'expliquer svp?

Typiquement ce code ne fonctionne pas alors que c'est bien le nom de mon imprimante...

'Ne fonctionne pas'
Application.ActivePrinter = "Brother PT-P950NW"

'Fonctionne
Application.ActivePrinter = "Microsoft Print to PDF sur Ne02:"

petit up :)

Bonjour,

Mets ton imprimante Brother par defaut et lance:

MsgBox Application.ActivePrinter 'Edit oubli du R (mauvais copier coller)

Tu auras surement un truc comme : \\SRVADMIN\Brother ... Ne0 ...

Puis pour que ça fonctionne sur tout les pc pas seulement le tien (Ne0... doit etre variable de memoire)

    Nom_imp = "\\SRVADMIN\Brother... sur Ne0"
    For Port_imp = 0 To 9    'trouver le port de l'imprimante suivant PC
    Choix_imp = Nom_imp & Port_imp & ":"
    On Error Resume Next
    Application.ActivePrinter = Choix_imp
    If ActivePrinter = Choix_imp Then Exit For
    Next

A+

Edit :

Tu peux également faire un fichier Bat et l'appeler dans ta macro (ce fichier aura pour fonction de changer ton imp par defaut)

Shell "Z:\...\Imp_Brother.bat"                                                        'Emplacement du fichier BAT
        'RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "\\Srvadmin\Brother PT-P950NW"       'Composition du fichier BAT

Hello,

Merci pour la réponse.

Ton code ne fonctionne pas j'ai un message d'erreur

Résolu il manquait le "R" à printer ;)

J'ai donc : Brother PT-P950NW sur NE06

Si je prend ton code je dois donc rentrer ca?

    Nom_imp = "Brother PT950NW sur Ne06"
    For Port_imp = 0 To 9    'trouver le port de l'imprimante suivant PC
    Choix_imp = Nom_imp & Port_imp & ":"
    On Error Resume Next
    Application.ActivePrinter = Choix_imp
    If ActivePrinter = Choix_imp Then Exit For
    Next

Si oui sa ne fonctionne pas...

PI les imprimantes ne sont pas reliées au réseau

Oups, (copier-coller-merder)

Donc si pas de reseau fais juste comme ton message d'avant :

'Ne fonctionne pas'
Application.ActivePrinter = "Brother PT-P950NW"

'Fonctionne
Application.ActivePrinter = "Microsoft Print to PDF sur Ne02:"

'Devrait fonctionner
Application.ActivePrinter = "Brother PT-P950NW sur NE06:"

Attention au "-" apres PT et a la fin les ":"

Pour le code si c'etait sur reseau il fallait supprimer le 6 (puisqu'il va le chercher avec la boucle for) donc :

Nom_imp = "Brother PT-P950NW sur NE0"
    For Port_imp = 0 To 9    'trouver le port de l'imprimante suivant PC
    Choix_imp = Nom_imp & Port_imp & ":"
    On Error Resume Next
    Application.ActivePrinter = Choix_imp
    If ActivePrinter = Choix_imp Then Exit For
    Next

Du coup, ils sont 10 techniciens a utiliser ce fichier, avec chacun le même type d'imprimante, le port ne va pas changer entre les techniciens?

Je pense que si mais je ne sais pas si c'est le reseau qui fait le changement de Ne0... ou si c'est l'ordre d'installation des imp ou autre.

Si il y a changement je peux gérer le truc comment? j'essaye de prévoir toute éventualités avant qu'on me dise "sa marche pas ton truc de *****"

Je connais bien cette remarque

du coup tu dis "Normalement c'est bon, si ça ne marche pas c'est pas le programme le probleme mais l'utilisateur"
(A dire apres avoir mis un gilet par-balle)

Avec ça si chez toi ça fonctionne, "Normalement" c'est OK pour tout le monde si l'imp a le meme nom mais pas forcement le meme port.

Nom_imp = "Brother PT-P950NW sur NE0"
    For Port_imp = 0 To 9    'trouver le port de l'imprimante suivant PC
    Choix_imp = Nom_imp & Port_imp & ":"
    On Error Resume Next
    Application.ActivePrinter = Choix_imp
    If ActivePrinter = Choix_imp Then Exit For
    Next

Au top merci, du coup avec ce code il faut le combiner avec ca ?

Application.ActivePrinter = "Brother PT-P950NW sur NE06:"

EDIT je viens de tester tout est ok.

Rechercher des sujets similaires à "imprimante default vba"