Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Définir une imprimante particulière en VBA

5 réponses
Avatar
FRED
Bonjour,

Je cherche à créer une macro me permettant d'imprimer sur une machine bien
précise (chemin réseau du type "\\poste1\printer").
Peux-t-on définir cela en VBA ?

Merci de votre aide.

FRED

5 réponses

Avatar
michdenis
Bonjour,

Essaie ceci :

'-------------------------------------------
Sub Déterminer_Imprimante_Par_Defaut()

Dim MonImprimante As String

'Nom de ton imprimante tel que défini dans
'le panneau de configuration de Windows
MonImprimante = "HP DeskJet 930C/932C/935C"

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name = '" & MonImprimante & "'")
For Each objPrinter In colInstalledPrinters
objPrinter.SetDefaultPrinter
Next
End Sub
'-------------------------------------------



"FRED" a écrit dans le message de groupe de discussion :

Bonjour,

Je cherche à créer une macro me permettant d'imprimer sur une machine bien
précise (chemin réseau du type "poste1printer").
Peux-t-on définir cela en VBA ?

Merci de votre aide.

FRED
Avatar
michdenis
Peut-être préfères-tu cela !

'---------------------------------
Sub Déterminer_Imprimante_Par_Defaut()
Application.Dialogs(wdDialogFilePrintSetup).Show
End Sub
'---------------------------------



"michdenis" a écrit dans le message de groupe de discussion :

Bonjour,

Essaie ceci :

'-------------------------------------------
Sub Déterminer_Imprimante_Par_Defaut()

Dim MonImprimante As String

'Nom de ton imprimante tel que défini dans
'le panneau de configuration de Windows
MonImprimante = "HP DeskJet 930C/932C/935C"

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name = '" & MonImprimante & "'")
For Each objPrinter In colInstalledPrinters
objPrinter.SetDefaultPrinter
Next
End Sub
'-------------------------------------------



"FRED" a écrit dans le message de groupe de discussion :

Bonjour,

Je cherche à créer une macro me permettant d'imprimer sur une machine bien
précise (chemin réseau du type "poste1printer").
Peux-t-on définir cela en VBA ?

Merci de votre aide.

FRED
Avatar
michdenis
Et une dernière :

'------------------------------
Sub Déterminer_Imprimante_Par_Defaut()
Dim MonImprimante As String
'Nom de ton imprimante tel que défini dans
'Le panneau de configuration de Windows
MonImprimante = "HP DeskJet 930C/932C/935C"
Application.ActivePrinter = MonImprimante
End Sub
'------------------------------


"michdenis" a écrit dans le message de groupe de discussion :

Bonjour,

Essaie ceci :

'-------------------------------------------
Sub Déterminer_Imprimante_Par_Defaut()

Dim MonImprimante As String

'Nom de ton imprimante tel que défini dans
'le panneau de configuration de Windows
MonImprimante = "HP DeskJet 930C/932C/935C"

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name = '" & MonImprimante & "'")
For Each objPrinter In colInstalledPrinters
objPrinter.SetDefaultPrinter
Next
End Sub
'-------------------------------------------



"FRED" a écrit dans le message de groupe de discussion :

Bonjour,

Je cherche à créer une macro me permettant d'imprimer sur une machine bien
précise (chemin réseau du type "poste1printer").
Peux-t-on définir cela en VBA ?

Merci de votre aide.

FRED
Avatar
Geo
Bonjour
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]
Bonjour,

Je cherche à créer une macro me permettant d'imprimer sur une machine bien précise
(chemin réseau du type "poste1printer").
Peux-t-on définir cela en VBA ?



Oui, il faut affecter le nom de l'imprimante à ActivePrinter.
Pour avoir le nom exact, mettez la par défaut, et faites dans la
fenêtre d'exécution un
? Application.ActivePrinter

Ensuite cette macro imprime votre document et remet la situation en
l'état :
Sub Imprime()
Dim ImprCour As String
Dim Impr2 As String
ImprCour = Application.ActivePrinter
Impr2 = "Ici le nom de l'imprimante"
Application.ActivePrinter = Impr2
ActiveDocument.PrintOut
Application.ActivePrinter = ImprCour
End Sub

--
A+
Avatar
FRED
Bonjour à tous,

Génial, c'est exactement ce que je cherchais : simple et efficace !

Merci à tous.

Fred.

"Geo" a écrit dans le message de groupe de discussion :

Bonjour
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ] Bonjour,

Je cherche à créer une macro me permettant d'imprimer sur une machine
bien précise (chemin réseau du type "poste1printer").
Peux-t-on définir cela en VBA ?



Oui, il faut affecter le nom de l'imprimante à ActivePrinter.
Pour avoir le nom exact, mettez la par défaut, et faites dans la fenêtre
d'exécution un
? Application.ActivePrinter

Ensuite cette macro imprime votre document et remet la situation en l'état
:
Sub Imprime()
Dim ImprCour As String
Dim Impr2 As String
ImprCour = Application.ActivePrinter
Impr2 = "Ici le nom de l'imprimante"
Application.ActivePrinter = Impr2
ActiveDocument.PrintOut
Application.ActivePrinter = ImprCour
End Sub

--
A+