OVH Cloud OVH Cloud

Modif de l'imprimante par défaut

10 réponses
Avatar
Gadget
Salut à tous.
Peut-on, par VBA, désigner l'imprimante par défaut de windows ?
Je vous pose cette question puisque la méthode Printform ne permet pas de
choisir son imprimante...
Merci de vos réponses.

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!

10 réponses

Avatar
Pascal Engelmajer
Salut,
Application.ActivePrinter = "monImprimante:"
sans changer le défaut ne suffirait-il pas?
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Gadget" a écrit dans le message de news:
40c83731$0$13530$
Salut à tous.
Peut-on, par VBA, désigner l'imprimante par défaut de windows ?
Je vous pose cette question puisque la méthode Printform ne permet pas de
choisir son imprimante...
Merci de vos réponses.

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!




Avatar
Gadget
Je viens de tester : malgré la désignation d'une autre imprimante active,
vba imprime l'UF sur l'imprimante par défaut windows.
Cela ne suffit donc pas...


--

"Pascal Engelmajer" a écrit dans le
message de news:
Salut,
Application.ActivePrinter = "monImprimante:"
sans changer le défaut ne suffirait-il pas?
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Gadget" a écrit dans le message de news:
40c83731$0$13530$
Salut à tous.
Peut-on, par VBA, désigner l'imprimante par défaut de windows ?
Je vous pose cette question puisque la méthode Printform ne permet pas
de


choisir son imprimante...
Merci de vos réponses.

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!








Avatar
sabatier
sers-toi de l'enregistreur de macros, gadget, pour avoir les termes
exacts de la proc ; pascal t'a écrit "monImprimante:" mais il faut
"monImprimante sur monPort":"
jps

Gadget a écrit:
Je viens de tester : malgré la désignation d'une autre imprimante active,
vba imprime l'UF sur l'imprimante par défaut windows.
Cela ne suffit donc pas...




Avatar
Gadget
C'est bien ce que j'ai fait. Après avoir utilisé le Macroteur pour
identifier l'exact libellé de l'imprimante que je cherche, voici ce que j'ai
ajouté à mon code :

Dim Imprimante as String

<...>

Imprimante = Application.ActivePrinter
Application.ActivePrinter = "Canon i560 sur Ne04:"
MaUF.PrintForm
Application.ActivePrinter = Imprimante

' La variable Imprimante servant à remettre l'ancienne imprimante active
après execution

Néanmoins, vba persiste à imprimer ma Userform sur l'imprimante par défaut
de Windows. Si je modifie l'imprimante par défaut "à la main" ds la panneau
de config de Windows avant d'exécuter le code, ca marche, il me met bien la
bonne... D'ailleurs, c'est bien ce qui est indiqué dans l'aide de la méthode
.PrintForm. : il est bien dit que c'est l'imprimante PAR DEFAUT qui sera
utilisée.
Grrr.

Une suggestion ?

--

"sabatier" a écrit dans le message
de news:
sers-toi de l'enregistreur de macros, gadget, pour avoir les termes
exacts de la proc ; pascal t'a écrit "monImprimante:" mais il faut
"monImprimante sur monPort":"
jps

Gadget a écrit:
Je viens de tester : malgré la désignation d'une autre imprimante
active,


vba imprime l'UF sur l'imprimante par défaut windows.
Cela ne suffit donc pas...







Avatar
sabatier
et si tu laisses tomber la variable, gadget, en écrivant simplement un
truc comme cela :

Application.ActivePrinter = "Canon i560 sur Ne04:"
MaUF.PrintForm
Application.ActivePrinter = "MonImprimanteParDefaut sur TelPort:"

sinon, ça dépasse mon entendement car, comme disait le bourgeois
gentilhomme, ce que je sais le mieux, c'est mon
commencement...ensuite...bouh...
jps

Gadget a écrit:
C'est bien ce que j'ai fait. Après avoir utilisé le Macroteur pour
identifier l'exact libellé de l'imprimante que je cherche, voici ce que j'ai
ajouté à mon code :

Dim Imprimante as String

<...>

Imprimante = Application.ActivePrinter
Application.ActivePrinter = "Canon i560 sur Ne04:"
MaUF.PrintForm
Application.ActivePrinter = Imprimante

' La variable Imprimante servant à remettre l'ancienne imprimante active
après execution

Néanmoins, vba persiste à imprimer ma Userform sur l'imprimante par défaut
de Windows. Si je modifie l'imprimante par défaut "à la main" ds la panneau
de config de Windows avant d'exécuter le code, ca marche, il me met bien la
bonne... D'ailleurs, c'est bien ce qui est indiqué dans l'aide de la méthode
..PrintForm. : il est bien dit que c'est l'imprimante PAR DEFAUT qui sera
utilisée.
Grrr.

Une suggestion ?



Avatar
Gadget
Si j'utilise une variable, c'est parce que j'ai 3 imprimantes connectées, et
la sub dont on parle est une sous-routine qui peut être appelée par des
routines utilisant l'une ou l'autre des deux autres imprimantes.

Bref. Pour l'instant, pas de solution. J'ai également lancé le macroteur
avant de changer à la main l'imprimante par défaut dans le panneau de
config, mais le macroteur n'a rien enregistré...

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"sabatier" a écrit dans le
message de news:
et si tu laisses tomber la variable, gadget, en écrivant simplement un
truc comme cela :

Application.ActivePrinter = "Canon i560 sur Ne04:"
MaUF.PrintForm
Application.ActivePrinter = "MonImprimanteParDefaut sur TelPort:"

sinon, ça dépasse mon entendement car, comme disait le bourgeois
gentilhomme, ce que je sais le mieux, c'est mon
commencement...ensuite...bouh...
jps



Avatar
Gadget
J'ai peut-être trouvé la solution : il est possible de changer l'imprimante
win par défaut avec un script msdos : syntaxe :

Cscript prnmngr.vbs -t -p nomimprimante

donc, maintenant, une autre question : comment lancer un script msdos à
partir de vba ?

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"Gadget" a écrit dans le message de
news:40c867b0$0$15510$
Si j'utilise une variable, c'est parce que j'ai 3 imprimantes connectées,
et

la sub dont on parle est une sous-routine qui peut être appelée par des
routines utilisant l'une ou l'autre des deux autres imprimantes.

Bref. Pour l'instant, pas de solution. J'ai également lancé le macroteur
avant de changer à la main l'imprimante par défaut dans le panneau de
config, mais le macroteur n'a rien enregistré...

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"sabatier" a écrit dans le
message de news:
et si tu laisses tomber la variable, gadget, en écrivant simplement un
truc comme cela :

Application.ActivePrinter = "Canon i560 sur Ne04:"
MaUF.PrintForm
Application.ActivePrinter = "MonImprimanteParDefaut sur TelPort:"

sinon, ça dépasse mon entendement car, comme disait le bourgeois
gentilhomme, ce que je sais le mieux, c'est mon
commencement...ensuite...bouh...
jps







Avatar
isabelle
salut Gadget

voici une reponse de Denis,

Tu inscris ces lignes dans NotePad et baptise ton fichier avec extension
.bat

Si tu travailles avec les extensions des fichiers non affichées dans
l'explorateur Windows, tu dois t'assurer que les extensions du fichier
sont réellement .bat comme dans Denis.bat en lieu et place de
Denis.bat.txt dans le second cas... cela ne va de toute évidence
fonctionner !

http://groups.google.com/groups?hl=fr&lr=&ie=UTF-8&threadm=bkihoq%24n10%241%40aphrodite.grec.isp.9tel.net&rnum=3&prev=/groups%3Fq%3Dmsdos%2Bgroup:microsoft.public.fr.excel%26hl%3Dfr%26lr%3D%26ie%3DUTF-8%26scoring%3Dd%26selm%3Dbkihoq%2524n10%25241%2540aphrodite.grec.isp.9tel.net%26rnum%3D3

isabelle


J'ai peut-être trouvé la solution : il est possible de changer l'imprimante
win par défaut avec un script msdos : syntaxe :

Cscript prnmngr.vbs -t -p nomimprimante

donc, maintenant, une autre question : comment lancer un script msdos à
partir de vba ?

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"Gadget" a écrit dans le message de
news:40c867b0$0$15510$
Si j'utilise une variable, c'est parce que j'ai 3 imprimantes connectées,
et

la sub dont on parle est une sous-routine qui peut être appelée par des
routines utilisant l'une ou l'autre des deux autres imprimantes.

Bref. Pour l'instant, pas de solution. J'ai également lancé le macroteur
avant de changer à la main l'imprimante par défaut dans le panneau de
config, mais le macroteur n'a rien enregistré...

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"sabatier" a écrit dans le
message de news:
et si tu laisses tomber la variable, gadget, en écrivant simplement un
truc comme cela :

Application.ActivePrinter = "Canon i560 sur Ne04:"
MaUF.PrintForm
Application.ActivePrinter = "MonImprimanteParDefaut sur TelPort:"

sinon, ça dépasse mon entendement car, comme disait le bourgeois
gentilhomme, ce que je sais le mieux, c'est mon
commencement...ensuite...bouh...
jps









Avatar
Michel Pierron
Bonsoir Gadget;
Si c'est juste pour imprimer un userform en mode paysage, tu peux utiliser ce truc
sans modifier l'imprimante par défaut:
Private Declare Function OpenClipboard& Lib "user32" (ByVal hwnd&)
Private Declare Function EmptyClipboard& Lib "user32" ()
Private Declare Function CloseClipboard& Lib "user32" ()
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte _
, ByVal bScan As Byte, ByVal dwFlags&, ByVal dwExtraInfo&)

Private Sub PrintButton_Click()
Me.Repaint
OpenClipboard 0&
EmptyClipboard
keybd_event &H2C, 0, 0&, 0&
CloseClipboard
DoEvents
Application.ScreenUpdating = False
Dim NewBook As String
Workbooks.Add: ActiveSheet.Paste
NewBook = ActiveWorkbook.Name
With ActiveSheet.PageSetup
.RightFooter = Me.Caption & " Le &D Page &P/&N"
.PrintGridlines = False
.Orientation = xlLandscape
.PaperSize = xlPaperA4
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
ActiveWindow.Visible = False
Application.ScreenUpdating = True
Me.Hide
Windows(NewBook).SelectedSheets.PrintOut Copies:=1
Workbooks(NewBook).Close False
Me.Show
End Sub

MP

"Gadget" a écrit dans le message de
news:40c83731$0$13530$
Salut à tous.
Peut-on, par VBA, désigner l'imprimante par défaut de windows ?
Je vous pose cette question puisque la méthode Printform ne permet pas de
choisir son imprimante...
Merci de vos réponses.

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!




Avatar
Pascal Engelmajer
Salut,
si on attaque les API je me sauve...
Je vous laisse un lien
http://perso.wanadoo.fr/frederic.sigonneau/code/Systeme/LireEtEcrireBaseDeRe
gistre.txt
avec ça on peut changer l'imprimante par défaut !!! (au moins)
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Michel Pierron" a écrit dans le message de news:
OdW9Q$
Bonsoir Gadget;
Si c'est juste pour imprimer un userform en mode paysage, tu peux utiliser
ce truc

sans modifier l'imprimante par défaut:
Private Declare Function OpenClipboard& Lib "user32" (ByVal hwnd&)
Private Declare Function EmptyClipboard& Lib "user32" ()
Private Declare Function CloseClipboard& Lib "user32" ()
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte _
, ByVal bScan As Byte, ByVal dwFlags&, ByVal dwExtraInfo&)

Private Sub PrintButton_Click()
Me.Repaint
OpenClipboard 0&
EmptyClipboard
keybd_event &H2C, 0, 0&, 0&
CloseClipboard
DoEvents
Application.ScreenUpdating = False
Dim NewBook As String
Workbooks.Add: ActiveSheet.Paste
NewBook = ActiveWorkbook.Name
With ActiveSheet.PageSetup
.RightFooter = Me.Caption & " Le &D Page &P/&N"
.PrintGridlines = False
.Orientation = xlLandscape
.PaperSize = xlPaperA4
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
ActiveWindow.Visible = False
Application.ScreenUpdating = True
Me.Hide
Windows(NewBook).SelectedSheets.PrintOut Copies:=1
Workbooks(NewBook).Close False
Me.Show
End Sub

MP

"Gadget" a écrit dans le message de
news:40c83731$0$13530$
Salut à tous.
Peut-on, par VBA, désigner l'imprimante par défaut de windows ?
Je vous pose cette question puisque la méthode Printform ne permet pas
de


choisir son imprimante...
Merci de vos réponses.

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!