Est il possible dans une macro en VBA de sélectionner une imprimante. Le but est de pouvoir diffuser un document sur plusieurs imprimantes.
Comment voulez-vous sélectionner l'imprimante ? Par son nom ?
-- A+
Geo
Re
Vous pouvez définir l'imprimante avec ActivePrinter Si le nom n'est pas ambigu, ça doit marcher avec le nom seul. S'il s'agit d'imprimantes réseau il doit falloir préciser le serveur.
Pour afficher la liste des imprimantes dans la fenêtre d'exécution, lancez cette macro : Sub ListeDesImprimantes() Dim WshNetwork As Object Dim Impr As Object Dim I As Integer Set WshNetwork = CreateObject("WScript.Network") Set Impr = WshNetwork.EnumPrinterConnections For I = 1 To Impr.Count - 1 Step 2 Debug.Print Impr.Item(I) & " on " & Impr.Item(I - 1) Next Debug.Print Debug.Print ActivePrinter End Sub
Vous aurez après cette liste, l'imprimante active.
-- A+
Re
Vous pouvez définir l'imprimante avec
ActivePrinter
Si le nom n'est pas ambigu, ça doit marcher avec le nom seul.
S'il s'agit d'imprimantes réseau il doit falloir préciser le serveur.
Pour afficher la liste des imprimantes dans la fenêtre d'exécution,
lancez cette macro :
Sub ListeDesImprimantes()
Dim WshNetwork As Object
Dim Impr As Object
Dim I As Integer
Set WshNetwork = CreateObject("WScript.Network")
Set Impr = WshNetwork.EnumPrinterConnections
For I = 1 To Impr.Count - 1 Step 2
Debug.Print Impr.Item(I) & " on " & Impr.Item(I - 1)
Next
Debug.Print
Debug.Print ActivePrinter
End Sub
Vous aurez après cette liste, l'imprimante active.
Vous pouvez définir l'imprimante avec ActivePrinter Si le nom n'est pas ambigu, ça doit marcher avec le nom seul. S'il s'agit d'imprimantes réseau il doit falloir préciser le serveur.
Pour afficher la liste des imprimantes dans la fenêtre d'exécution, lancez cette macro : Sub ListeDesImprimantes() Dim WshNetwork As Object Dim Impr As Object Dim I As Integer Set WshNetwork = CreateObject("WScript.Network") Set Impr = WshNetwork.EnumPrinterConnections For I = 1 To Impr.Count - 1 Step 2 Debug.Print Impr.Item(I) & " on " & Impr.Item(I - 1) Next Debug.Print Debug.Print ActivePrinter End Sub
Vous aurez après cette liste, l'imprimante active.
-- A+
Lolo
Merci Geo pour ta réponse.
Alors je précise, j'ai dans mon entreprise environs 70 imprimantes, je souhaite imprimer sur un certains nombres, disons 40. Je souhaite sélectionner les imprimantes par leurs noms, je sais précisément sur quels imprimantes je souhaite éditer.. Disons en les stockant dans un tableau, ou une feuille Excel... Je souhaiterais lancer l'impression d'un document Word avec une certaine mise en page.
Merci encore de ton aide.
"Geo" a écrit :
Re
Vous pouvez définir l'imprimante avec ActivePrinter Si le nom n'est pas ambigu, ça doit marcher avec le nom seul. S'il s'agit d'imprimantes réseau il doit falloir préciser le serveur.
Pour afficher la liste des imprimantes dans la fenêtre d'exécution, lancez cette macro : Sub ListeDesImprimantes() Dim WshNetwork As Object Dim Impr As Object Dim I As Integer Set WshNetwork = CreateObject("WScript.Network") Set Impr = WshNetwork.EnumPrinterConnections For I = 1 To Impr.Count - 1 Step 2 Debug.Print Impr.Item(I) & " on " & Impr.Item(I - 1) Next Debug.Print Debug.Print ActivePrinter End Sub
Vous aurez après cette liste, l'imprimante active.
-- A+
Merci Geo pour ta réponse.
Alors je précise, j'ai dans mon entreprise environs 70 imprimantes, je
souhaite imprimer sur un certains nombres, disons 40. Je souhaite
sélectionner les imprimantes par leurs noms, je sais précisément sur quels
imprimantes je souhaite éditer.. Disons en les stockant dans un tableau, ou
une feuille Excel...
Je souhaiterais lancer l'impression d'un document Word avec une certaine
mise en page.
Merci encore de ton aide.
"Geo" a écrit :
Re
Vous pouvez définir l'imprimante avec
ActivePrinter
Si le nom n'est pas ambigu, ça doit marcher avec le nom seul.
S'il s'agit d'imprimantes réseau il doit falloir préciser le serveur.
Pour afficher la liste des imprimantes dans la fenêtre d'exécution,
lancez cette macro :
Sub ListeDesImprimantes()
Dim WshNetwork As Object
Dim Impr As Object
Dim I As Integer
Set WshNetwork = CreateObject("WScript.Network")
Set Impr = WshNetwork.EnumPrinterConnections
For I = 1 To Impr.Count - 1 Step 2
Debug.Print Impr.Item(I) & " on " & Impr.Item(I - 1)
Next
Debug.Print
Debug.Print ActivePrinter
End Sub
Vous aurez après cette liste, l'imprimante active.
Alors je précise, j'ai dans mon entreprise environs 70 imprimantes, je souhaite imprimer sur un certains nombres, disons 40. Je souhaite sélectionner les imprimantes par leurs noms, je sais précisément sur quels imprimantes je souhaite éditer.. Disons en les stockant dans un tableau, ou une feuille Excel... Je souhaiterais lancer l'impression d'un document Word avec une certaine mise en page.
Merci encore de ton aide.
"Geo" a écrit :
Re
Vous pouvez définir l'imprimante avec ActivePrinter Si le nom n'est pas ambigu, ça doit marcher avec le nom seul. S'il s'agit d'imprimantes réseau il doit falloir préciser le serveur.
Pour afficher la liste des imprimantes dans la fenêtre d'exécution, lancez cette macro : Sub ListeDesImprimantes() Dim WshNetwork As Object Dim Impr As Object Dim I As Integer Set WshNetwork = CreateObject("WScript.Network") Set Impr = WshNetwork.EnumPrinterConnections For I = 1 To Impr.Count - 1 Step 2 Debug.Print Impr.Item(I) & " on " & Impr.Item(I - 1) Next Debug.Print Debug.Print ActivePrinter End Sub
Vous aurez après cette liste, l'imprimante active.
-- A+
Geo
Re
Alors je précise, j'ai dans mon entreprise environs 70 imprimantes, je souhaite imprimer sur un certains nombres, disons 40. Je souhaite sélectionner les imprimantes par leurs noms, je sais précisément sur quels imprimantes je souhaite éditer.. Disons en les stockant dans un tableau, ou une feuille Excel...
Lancez la macro un peu modifiée : Sub ListeDesImprimantes() Dim WshNetwork As Object Dim Impr As Object Dim Doc As Document Dim I As Integer Set Doc = Documents.Add
Set WshNetwork = CreateObject("WScript.Network") Set Impr = WshNetwork.EnumPrinterConnections For I = 1 To Impr.Count - 1 Step 2 Doc.Range.InsertAfter Impr.Item(I) & " on " & _ Impr.Item(I - 1) & vbCrLf Next Doc.Range.ConvertToTable Separator:=wdSeparateByParagraphs End Sub
Vous aurez un tableau avec la liste de toutes les imprimantes installées, comme je n'ai pas d'imprimante sur serveur je ne peux pas tester complètement.
Ensuite dans votre programme d'édition, Mettez ActivePrinter = le contenu du i-ème poste de la table et printout.
-- A+
Re
Alors je précise, j'ai dans mon entreprise environs 70 imprimantes, je
souhaite imprimer sur un certains nombres, disons 40. Je souhaite
sélectionner les imprimantes par leurs noms, je sais précisément sur quels
imprimantes je souhaite éditer.. Disons en les stockant dans un tableau, ou
une feuille Excel...
Lancez la macro un peu modifiée :
Sub ListeDesImprimantes()
Dim WshNetwork As Object
Dim Impr As Object
Dim Doc As Document
Dim I As Integer
Set Doc = Documents.Add
Set WshNetwork = CreateObject("WScript.Network")
Set Impr = WshNetwork.EnumPrinterConnections
For I = 1 To Impr.Count - 1 Step 2
Doc.Range.InsertAfter Impr.Item(I) & " on " & _
Impr.Item(I - 1) & vbCrLf
Next
Doc.Range.ConvertToTable Separator:=wdSeparateByParagraphs
End Sub
Vous aurez un tableau avec la liste de toutes les imprimantes
installées, comme je n'ai pas d'imprimante sur serveur je ne peux pas
tester complètement.
Ensuite dans votre programme d'édition, Mettez
ActivePrinter = le contenu du i-ème poste de la table et printout.
Alors je précise, j'ai dans mon entreprise environs 70 imprimantes, je souhaite imprimer sur un certains nombres, disons 40. Je souhaite sélectionner les imprimantes par leurs noms, je sais précisément sur quels imprimantes je souhaite éditer.. Disons en les stockant dans un tableau, ou une feuille Excel...
Lancez la macro un peu modifiée : Sub ListeDesImprimantes() Dim WshNetwork As Object Dim Impr As Object Dim Doc As Document Dim I As Integer Set Doc = Documents.Add
Set WshNetwork = CreateObject("WScript.Network") Set Impr = WshNetwork.EnumPrinterConnections For I = 1 To Impr.Count - 1 Step 2 Doc.Range.InsertAfter Impr.Item(I) & " on " & _ Impr.Item(I - 1) & vbCrLf Next Doc.Range.ConvertToTable Separator:=wdSeparateByParagraphs End Sub
Vous aurez un tableau avec la liste de toutes les imprimantes installées, comme je n'ai pas d'imprimante sur serveur je ne peux pas tester complètement.
Ensuite dans votre programme d'édition, Mettez ActivePrinter = le contenu du i-ème poste de la table et printout.
-- A+
Lolo
MErci Geo !
grace a toi j'ai pu ecrire la procédure que je souhaitais
Sub Lancer_Impression_Word(P_Chemin_Document As String, P_Nom_Imprimante As String)
> Alors je précise, j'ai dans mon entreprise environs 70 imprimantes, je > souhaite imprimer sur un certains nombres, disons 40. Je souhaite > sélectionner les imprimantes par leurs noms, je sais précisément sur quels > imprimantes je souhaite éditer.. Disons en les stockant dans un tableau, ou > une feuille Excel...
Lancez la macro un peu modifiée : Sub ListeDesImprimantes() Dim WshNetwork As Object Dim Impr As Object Dim Doc As Document Dim I As Integer Set Doc = Documents.Add
Set WshNetwork = CreateObject("WScript.Network") Set Impr = WshNetwork.EnumPrinterConnections For I = 1 To Impr.Count - 1 Step 2 Doc.Range.InsertAfter Impr.Item(I) & " on " & _ Impr.Item(I - 1) & vbCrLf Next Doc.Range.ConvertToTable Separator:=wdSeparateByParagraphs End Sub
Vous aurez un tableau avec la liste de toutes les imprimantes installées, comme je n'ai pas d'imprimante sur serveur je ne peux pas tester complètement.
Ensuite dans votre programme d'édition, Mettez ActivePrinter = le contenu du i-ème poste de la table et printout.
-- A+
MErci Geo !
grace a toi j'ai pu ecrire la procédure que je souhaitais
Sub Lancer_Impression_Word(P_Chemin_Document As String, P_Nom_Imprimante As
String)
> Alors je précise, j'ai dans mon entreprise environs 70 imprimantes, je
> souhaite imprimer sur un certains nombres, disons 40. Je souhaite
> sélectionner les imprimantes par leurs noms, je sais précisément sur quels
> imprimantes je souhaite éditer.. Disons en les stockant dans un tableau, ou
> une feuille Excel...
Lancez la macro un peu modifiée :
Sub ListeDesImprimantes()
Dim WshNetwork As Object
Dim Impr As Object
Dim Doc As Document
Dim I As Integer
Set Doc = Documents.Add
Set WshNetwork = CreateObject("WScript.Network")
Set Impr = WshNetwork.EnumPrinterConnections
For I = 1 To Impr.Count - 1 Step 2
Doc.Range.InsertAfter Impr.Item(I) & " on " & _
Impr.Item(I - 1) & vbCrLf
Next
Doc.Range.ConvertToTable Separator:=wdSeparateByParagraphs
End Sub
Vous aurez un tableau avec la liste de toutes les imprimantes
installées, comme je n'ai pas d'imprimante sur serveur je ne peux pas
tester complètement.
Ensuite dans votre programme d'édition, Mettez
ActivePrinter = le contenu du i-ème poste de la table et printout.
> Alors je précise, j'ai dans mon entreprise environs 70 imprimantes, je > souhaite imprimer sur un certains nombres, disons 40. Je souhaite > sélectionner les imprimantes par leurs noms, je sais précisément sur quels > imprimantes je souhaite éditer.. Disons en les stockant dans un tableau, ou > une feuille Excel...
Lancez la macro un peu modifiée : Sub ListeDesImprimantes() Dim WshNetwork As Object Dim Impr As Object Dim Doc As Document Dim I As Integer Set Doc = Documents.Add
Set WshNetwork = CreateObject("WScript.Network") Set Impr = WshNetwork.EnumPrinterConnections For I = 1 To Impr.Count - 1 Step 2 Doc.Range.InsertAfter Impr.Item(I) & " on " & _ Impr.Item(I - 1) & vbCrLf Next Doc.Range.ConvertToTable Separator:=wdSeparateByParagraphs End Sub
Vous aurez un tableau avec la liste de toutes les imprimantes installées, comme je n'ai pas d'imprimante sur serveur je ne peux pas tester complètement.
Ensuite dans votre programme d'édition, Mettez ActivePrinter = le contenu du i-ème poste de la table et printout.
-- A+
Geo
Bonjour Merci pour le retour, on va se mettre ça de côté. J'aime bien le MonWordAMoi :-)
Puisque vous êtes dans une macro Word, ça veut dire que Word est déjà ouvert, vous auriez donc pu vous passer d'en ouvrir une autre occurrence, mais je fais comme vous, ça permet de continuer à travailler sans interférer. Par contre vous pourriez le mettre en invisible.
-- A+
Bonjour
Merci pour le retour, on va se mettre ça de côté.
J'aime bien le MonWordAMoi :-)
Puisque vous êtes dans une macro Word, ça veut dire que Word est déjà
ouvert, vous auriez donc pu vous passer d'en ouvrir une autre
occurrence, mais je fais comme vous, ça permet de continuer à
travailler sans interférer.
Par contre vous pourriez le mettre en invisible.
Bonjour Merci pour le retour, on va se mettre ça de côté. J'aime bien le MonWordAMoi :-)
Puisque vous êtes dans une macro Word, ça veut dire que Word est déjà ouvert, vous auriez donc pu vous passer d'en ouvrir une autre occurrence, mais je fais comme vous, ça permet de continuer à travailler sans interférer. Par contre vous pourriez le mettre en invisible.