J'ai un copieur/imprimante en r=C3=A9seau qui fait N&B (d=C3=A9faut) et cou=
leur (sur demande). Je sais changer d'imprimante mais ce copieur me pose un=
probl=C3=A8me.
Il me semble que le souci vient du fait que les adresses ip sont :
10.172.191.215 pour le N&B et 10.172.191.215_1 pour la couleur.
Donc, peut-on d=C3=A9finir l'adresse IP de l'imprimante choisie ? Je n'arri=
ve pas =C3=A0 trouver une syntaxe correcte (si elle existe !)
bonjour Thierry, tu peut installé la mème imprimante plusieurs fois au panneau de configuration avec des nom différent et chacun avec des choix d'impression différent par exemple mon imprimante epson epson en paysage epson Noir_Blanc etc... de cette façon plus besoin de connaitre son IP, seulement son nom isabelle Le 2016-12-14 à 11:57, ThierryP a écrit :
Bonsoir tout le monde ! Petit souci avec un changement d'imprimante : J'ai un copieur/imprimante en réseau qui fait N&B (défaut) et couleur (sur demande). Je sais changer d'imprimante mais ce copieur me pose un problème. Il me semble que le souci vient du fait que les adresses ip sont : 10.172.191.215 pour le N&B et 10.172.191.215_1 pour la couleur. Donc, peut-on définir l'adresse IP de l'imprimante choisie ? Je n'arrive pas à trouver une syntaxe correcte (si elle existe !) Merci d'avance, ThierryP
bonjour Thierry,
tu peut installé la mème imprimante plusieurs fois au panneau de configuration
avec des nom différent et chacun avec des choix d'impression différent
par exemple mon imprimante epson
epson en paysage
epson Noir_Blanc
etc...
de cette façon plus besoin de connaitre son IP, seulement son nom
isabelle
Le 2016-12-14 à 11:57, ThierryP a écrit :
Bonsoir tout le monde !
Petit souci avec un changement d'imprimante :
J'ai un copieur/imprimante en réseau qui fait N&B (défaut) et couleur (sur demande). Je sais changer d'imprimante mais ce copieur me pose un problème.
Il me semble que le souci vient du fait que les adresses ip sont :
10.172.191.215 pour le N&B et 10.172.191.215_1 pour la couleur.
Donc, peut-on définir l'adresse IP de l'imprimante choisie ? Je n'arrive pas à trouver une syntaxe correcte (si elle existe !)
bonjour Thierry, tu peut installé la mème imprimante plusieurs fois au panneau de configuration avec des nom différent et chacun avec des choix d'impression différent par exemple mon imprimante epson epson en paysage epson Noir_Blanc etc... de cette façon plus besoin de connaitre son IP, seulement son nom isabelle Le 2016-12-14 à 11:57, ThierryP a écrit :
Bonsoir tout le monde ! Petit souci avec un changement d'imprimante : J'ai un copieur/imprimante en réseau qui fait N&B (défaut) et couleur (sur demande). Je sais changer d'imprimante mais ce copieur me pose un problème. Il me semble que le souci vient du fait que les adresses ip sont : 10.172.191.215 pour le N&B et 10.172.191.215_1 pour la couleur. Donc, peut-on définir l'adresse IP de l'imprimante choisie ? Je n'arrive pas à trouver une syntaxe correcte (si elle existe !) Merci d'avance, ThierryP
Bonjour, Est-ce que ceci ferait l'affaire ? =========================================================== '--------------------------------------- Sub test() 'Nom de l'imprimante tel qu'écrit dans le panneau 'de configuration de Windows Dim strComputer As String, objWMIService As Object Dim colInstalledPrinters As Object, objPrinter As Object Dim X As Variant, Arr() strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2") Set colInstalledPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer") For Each objPrinter In colInstalledPrinters a = a + 1 Message = Message & a & " - Nom: " & objPrinter.Name & vbCrLf ReDim Preserve Arr(1 To a) Arr(a) = objPrinter.Name Next X = Application.InputBox(Prompt:= _ "Insérer le chiffre correspondant à l'imprimante désirée." & _ vbCrLf & Message, Title:="Choisissez une imprimante", Type:=1) If X = False Then Exit Sub Call Imprimante_Par_Défaut(Arr(X)) End Sub '----------------------------------------- Sub Imprimante_Par_Défaut(Nom_Imprimante As Variant) Dim strComputer As String, objWMIService As Object Dim colInstalledPrinters As Object, objPrinter As Object strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2") Set colInstalledPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer Where Name = '" & Nom_Imprimante & "'") For Each objPrinter In colInstalledPrinters objPrinter.SetDefaultPrinter Next End Sub '----------------------------------------- =========================================================== Tu as aussi ceci, elle est de Michel Perron : '======================= Sub SetMonImprimante() Dim MonImpr, S, Serveur Dim Fait As Boolean, wsN MonImpr = "Brother HL-5340D" Serveur = "Serveur01" 'ou autre Set wsN = CreateObject("WScript.Network") 'recherche l'imprimante à utiliser With wsN.EnumPrinterConnections For iCount = 0 To .Count - 1 Step 2 S = .Item(iCount + 1) & " sur port: " & .Item(iCount) MsgBox S If InStr(1, S, MonImpr) > 0 Then Fait = True Exit For End If Next End With If Fait Then 'affecte l'imprimante à utiliser wsN.SetDefaultPrinter Serveur & S 'ou (?) 'Application.ActivePrinter = S Else MsgBox "imprimante pas trouvée" End If End Sub '======================= MichD
Bonjour,
Est-ce que ceci ferait l'affaire ?
=========================================================== '---------------------------------------
Sub test()
'Nom de l'imprimante tel qu'écrit dans le panneau
'de configuration de Windows
Dim strComputer As String, objWMIService As Object
Dim colInstalledPrinters As Object, objPrinter As Object
Dim X As Variant, Arr()
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter In colInstalledPrinters
a = a + 1
Message = Message & a & " - Nom: " & objPrinter.Name & vbCrLf
ReDim Preserve Arr(1 To a)
Arr(a) = objPrinter.Name
Next
X = Application.InputBox(Prompt:= _
"Insérer le chiffre correspondant à l'imprimante désirée." & _
vbCrLf & Message, Title:="Choisissez une imprimante", Type:=1)
If X = False Then Exit Sub
Call Imprimante_Par_Défaut(Arr(X))
End Sub
'-----------------------------------------
Sub Imprimante_Par_Défaut(Nom_Imprimante As Variant)
Dim strComputer As String, objWMIService As Object
Dim colInstalledPrinters As Object, objPrinter As Object
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name = '" & Nom_Imprimante & "'")
For Each objPrinter In colInstalledPrinters
objPrinter.SetDefaultPrinter
Next
End Sub
'-----------------------------------------
===========================================================
Tu as aussi ceci, elle est de Michel Perron :
'======================= Sub SetMonImprimante()
Dim MonImpr, S, Serveur
Dim Fait As Boolean, wsN
MonImpr = "Brother HL-5340D"
Serveur = "\Serveur01" 'ou autre
Set wsN = CreateObject("WScript.Network")
'recherche l'imprimante à utiliser
With wsN.EnumPrinterConnections
For iCount = 0 To .Count - 1 Step 2
S = .Item(iCount + 1) & " sur port: " & .Item(iCount)
MsgBox S
If InStr(1, S, MonImpr) > 0 Then
Fait = True
Exit For
End If
Next
End With
If Fait Then 'affecte l'imprimante à utiliser
wsN.SetDefaultPrinter Serveur & S
'ou (?)
'Application.ActivePrinter = S
Else
MsgBox "imprimante pas trouvée"
End If
End Sub
'=======================
MichD
Bonjour, Est-ce que ceci ferait l'affaire ? =========================================================== '--------------------------------------- Sub test() 'Nom de l'imprimante tel qu'écrit dans le panneau 'de configuration de Windows Dim strComputer As String, objWMIService As Object Dim colInstalledPrinters As Object, objPrinter As Object Dim X As Variant, Arr() strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2") Set colInstalledPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer") For Each objPrinter In colInstalledPrinters a = a + 1 Message = Message & a & " - Nom: " & objPrinter.Name & vbCrLf ReDim Preserve Arr(1 To a) Arr(a) = objPrinter.Name Next X = Application.InputBox(Prompt:= _ "Insérer le chiffre correspondant à l'imprimante désirée." & _ vbCrLf & Message, Title:="Choisissez une imprimante", Type:=1) If X = False Then Exit Sub Call Imprimante_Par_Défaut(Arr(X)) End Sub '----------------------------------------- Sub Imprimante_Par_Défaut(Nom_Imprimante As Variant) Dim strComputer As String, objWMIService As Object Dim colInstalledPrinters As Object, objPrinter As Object strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2") Set colInstalledPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer Where Name = '" & Nom_Imprimante & "'") For Each objPrinter In colInstalledPrinters objPrinter.SetDefaultPrinter Next End Sub '----------------------------------------- =========================================================== Tu as aussi ceci, elle est de Michel Perron : '======================= Sub SetMonImprimante() Dim MonImpr, S, Serveur Dim Fait As Boolean, wsN MonImpr = "Brother HL-5340D" Serveur = "Serveur01" 'ou autre Set wsN = CreateObject("WScript.Network") 'recherche l'imprimante à utiliser With wsN.EnumPrinterConnections For iCount = 0 To .Count - 1 Step 2 S = .Item(iCount + 1) & " sur port: " & .Item(iCount) MsgBox S If InStr(1, S, MonImpr) > 0 Then Fait = True Exit For End If Next End With If Fait Then 'affecte l'imprimante à utiliser wsN.SetDefaultPrinter Serveur & S 'ou (?) 'Application.ActivePrinter = S Else MsgBox "imprimante pas trouvée" End If End Sub '======================= MichD
C'est n'est qu'une ligne de code : ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ ActivePrinter:=Color_Printer MichD
MichD
Et pourquoi pas une dernière proposition : '----------------------------------------------------------- Sub test() Dim ImprimanteDésirée As String, ImprimanteActuel As String Dim SonNom As String 'Le nom de l'imprimante avec lequel tu veux imprimer SonNom = "VMSERVTS01Copieur_Couleur sur Ne0" ImprimanteDésirée = Mon_Imprimante(SonNom) 'Prend en note l'imprimante par défaut actuel ImprimanteActuel = Application.ActivePrinter 'Modifie l'imprimante pour celle que tu désires. ChangeImprimanteParDéfaut ImprimanteDésirée 'Exécute l 'impression ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 'Remet l'imprimante par défaut comme avant. ChangeImprimanteParDéfaut ImprimanteActuel End Sub '----------------------------------------------------------- Sub ChangeImprimanteParDéfaut(Imprimante) Dim WshNetwork, oPrinters, I, DefPrinter DefPrinter = Application.ActivePrinter Set WshNetwork = CreateObject("WScript.Network") Set oPrinters = WshNetwork.EnumPrinterConnections For I = 0 To oPrinters.Count - 1 Step 2 If InStr(1, Imprimante, oPrinters.Item(I + 1), vbTextCompare) = 1 Then WshNetwork.SetDefaultPrinter oPrinters.Item(I + 1) Exit Sub End If Next End Sub '----------------------------------------------------------- Function Mon_Imprimante(SonNom As String) Dim A As Integer, Temp As String Dim objDictionary As Object, strComputer As String Dim objWMIService As Object, colPrinters As Object Dim objprinter As Object Set objDictionary = CreateObject("Scripting.Dictionary") strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2") Set colPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer") For Each objprinter In colPrinters Temp = objprinter.Name & " sur " & objprinter.PortName If InStr(1, Temp, SonNom, vbTextCompare) > 0 Then Mon_Imprimante = Temp Exit For End If Next End Function '----------------------------------------------------------- MichD
Et pourquoi pas une dernière proposition :
'-----------------------------------------------------------
Sub test()
Dim ImprimanteDésirée As String, ImprimanteActuel As String
Dim SonNom As String
'Le nom de l'imprimante avec lequel tu veux imprimer
SonNom = "\VMSERVTS01Copieur_Couleur sur Ne0"
ImprimanteDésirée = Mon_Imprimante(SonNom)
'Prend en note l'imprimante par défaut actuel
ImprimanteActuel = Application.ActivePrinter
'Modifie l'imprimante pour celle que tu désires.
ChangeImprimanteParDéfaut ImprimanteDésirée
'Exécute l 'impression
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'Remet l'imprimante par défaut comme avant.
ChangeImprimanteParDéfaut ImprimanteActuel
End Sub
'-----------------------------------------------------------
Sub ChangeImprimanteParDéfaut(Imprimante)
Dim WshNetwork, oPrinters, I, DefPrinter
DefPrinter = Application.ActivePrinter
Set WshNetwork = CreateObject("WScript.Network")
Set oPrinters = WshNetwork.EnumPrinterConnections
For I = 0 To oPrinters.Count - 1 Step 2
If InStr(1, Imprimante, oPrinters.Item(I + 1), vbTextCompare) = 1 Then
WshNetwork.SetDefaultPrinter oPrinters.Item(I + 1)
Exit Sub
End If
Next
End Sub
'-----------------------------------------------------------
Function Mon_Imprimante(SonNom As String)
Dim A As Integer, Temp As String
Dim objDictionary As Object, strComputer As String
Dim objWMIService As Object, colPrinters As Object
Dim objprinter As Object
Set objDictionary = CreateObject("Scripting.Dictionary")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")
Set colPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objprinter In colPrinters
Temp = objprinter.Name & " sur " & objprinter.PortName
If InStr(1, Temp, SonNom, vbTextCompare) > 0 Then
Mon_Imprimante = Temp
Exit For
End If
Next
End Function
'-----------------------------------------------------------
Et pourquoi pas une dernière proposition : '----------------------------------------------------------- Sub test() Dim ImprimanteDésirée As String, ImprimanteActuel As String Dim SonNom As String 'Le nom de l'imprimante avec lequel tu veux imprimer SonNom = "VMSERVTS01Copieur_Couleur sur Ne0" ImprimanteDésirée = Mon_Imprimante(SonNom) 'Prend en note l'imprimante par défaut actuel ImprimanteActuel = Application.ActivePrinter 'Modifie l'imprimante pour celle que tu désires. ChangeImprimanteParDéfaut ImprimanteDésirée 'Exécute l 'impression ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 'Remet l'imprimante par défaut comme avant. ChangeImprimanteParDéfaut ImprimanteActuel End Sub '----------------------------------------------------------- Sub ChangeImprimanteParDéfaut(Imprimante) Dim WshNetwork, oPrinters, I, DefPrinter DefPrinter = Application.ActivePrinter Set WshNetwork = CreateObject("WScript.Network") Set oPrinters = WshNetwork.EnumPrinterConnections For I = 0 To oPrinters.Count - 1 Step 2 If InStr(1, Imprimante, oPrinters.Item(I + 1), vbTextCompare) = 1 Then WshNetwork.SetDefaultPrinter oPrinters.Item(I + 1) Exit Sub End If Next End Sub '----------------------------------------------------------- Function Mon_Imprimante(SonNom As String) Dim A As Integer, Temp As String Dim objDictionary As Object, strComputer As String Dim objWMIService As Object, colPrinters As Object Dim objprinter As Object Set objDictionary = CreateObject("Scripting.Dictionary") strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2") Set colPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer") For Each objprinter In colPrinters Temp = objprinter.Name & " sur " & objprinter.PortName If InStr(1, Temp, SonNom, vbTextCompare) > 0 Then Mon_Imprimante = Temp Exit For End If Next End Function '----------------------------------------------------------- MichD
MichD
En supplément, SonNom = "VMSERVTS01Copieur_Couleur sur Ne0" Le nom tel qu'il est écrit dans le panneau de configuration de Windows (imprimantes) MichD
En supplément,
SonNom = "\VMSERVTS01Copieur_Couleur sur Ne0"
Le nom tel qu'il est écrit dans le panneau de configuration de Windows (imprimantes)
Hello, 2 trucs me chiffonne 1 : tu devrais avoir 2 imprimantes dans le panneau de config, et elles devraient avoir 2 noms différents comme celles d'Isabelle, les ports on s'en fout, non ? 2 : si ta procédure fonctionne "normalement" sauf si tu la met dans le beforeprint, pourquoi ne pas mettre le changement d'imprimante sur le changement de feuille ? Parce que si j'ai bien compris, tu dois avec telle imprimante si tu es sur telle feuille, non ? J'dis ça, j'dis rien -- JièL diseur de rien Le 15/12/2016 à 17:22, ThierryP a écrit :
Merci beaucoup pour tous tes efforts !! ;o)) Ta dernière procédure fonctionne très très bien......... à condition que je ne l'appelle pas depuis le workbook_beforeprint ! Dans ce cas, elle imprime en noir (imp. par défaut) Là, je sèche....... ThierryP
Hello,
2 trucs me chiffonne
1 : tu devrais avoir 2 imprimantes dans le panneau de config, et elles
devraient avoir 2 noms différents comme celles d'Isabelle, les ports on
s'en fout, non ?
2 : si ta procédure fonctionne "normalement" sauf si tu la met dans le
beforeprint, pourquoi ne pas mettre le changement d'imprimante sur le
changement de feuille ? Parce que si j'ai bien compris, tu dois avec
telle imprimante si tu es sur telle feuille, non ?
J'dis ça, j'dis rien
--
JièL diseur de rien
Le 15/12/2016 à 17:22, ThierryP a écrit :
Merci beaucoup pour tous tes efforts !! ;o))
Ta dernière procédure fonctionne très très bien......... à condition que je ne l'appelle pas depuis le workbook_beforeprint ! Dans ce cas, elle imprime en noir (imp. par défaut)
Là, je sèche.......
Hello, 2 trucs me chiffonne 1 : tu devrais avoir 2 imprimantes dans le panneau de config, et elles devraient avoir 2 noms différents comme celles d'Isabelle, les ports on s'en fout, non ? 2 : si ta procédure fonctionne "normalement" sauf si tu la met dans le beforeprint, pourquoi ne pas mettre le changement d'imprimante sur le changement de feuille ? Parce que si j'ai bien compris, tu dois avec telle imprimante si tu es sur telle feuille, non ? J'dis ça, j'dis rien -- JièL diseur de rien Le 15/12/2016 à 17:22, ThierryP a écrit :
Merci beaucoup pour tous tes efforts !! ;o)) Ta dernière procédure fonctionne très très bien......... à condition que je ne l'appelle pas depuis le workbook_beforeprint ! Dans ce cas, elle imprime en noir (imp. par défaut) Là, je sèche....... ThierryP