Bonjour,
Nous avons diff=E9rentes marques d'imprimante qui g=E9rent diff=E9rement le=
s
bacs... Pour g=E9rer la s=E9lection du bon type de papier j'aimerais cr=E9e=
r
une macro qui me retourne le nom du pilote (pas le nom de l'imprimante
comme le fait "ActivePrinter") des imprimantes install=E9es pour pouvoir
ensuite aller chercher les codes des bacs dans un fichier ini.
Mon probl=E8me est le suivant : Dans mes mod=E8les j'aimerais pouvoir
g=E9rer les codes des bacs (papier en-t=EAte et papier blanc) des
diff=E9rentes imprimantes de notre r=E9seau. De plus, j'aimerais cr=E9er un=
e
macro qui affichera un masque permettant aux utilisateurs de
s=E9lectionner une imprimante (liste de ses imprimantes install=E9es) et
aussi le type de papier pour la premi=E8re page et le type pour les
suivantes.
D'avance un grand merci =E0 celles et ceux qui voudrons m'aider =E0
"pondre" ces deux bouts de code !!!! GeGe
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Geo
Bonjour à gege2000 qui nous a écrit :
Bonjour, Nous avons différentes marques d'imprimante qui gérent différement les bacs... Pour gérer la sélection du bon type de papier j'aimerais créer une macro qui me retourne le nom du pilote (pas le nom de l'imprimante comme le fait "ActivePrinter") des imprimantes installées pour pouvoir ensuite aller chercher les codes des bacs dans un fichier ini. Mon problème est le suivant : Dans mes modèles j'aimerais pouvoir gérer les codes des bacs (papier en-tête et papier blanc) des différentes imprimantes de notre réseau. De plus, j'aimerais créer une macro qui affichera un masque permettant aux utilisateurs de sélectionner une imprimante (liste de ses imprimantes installées) et aussi le type de papier pour la première page et le type pour les suivantes. D'avance un grand merci à celles et ceux qui voudrons m'aider à "pondre" ces deux bouts de code !!!! GeGe
La gestion des imprimantes et des bacs n'est pas une sinécure. Voici quelques éléments que j'ai conservé : Private Declare Function EnumPrintersA Lib "winspool.drv" _ (ByVal flags As Long, ByVal name As String, ByVal Level As Long, _ pPrinterEnum As Long, ByVal cdBuf As Long, _ pcbNeeded As Long, pcReturned As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" _ (ByVal lpString As Any) As Long
Private Declare Function lstrcpyA Lib "kernel32" _ (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Sub ListeImprimantes()
Dim PrinterEnum() As Long, Impr() As String Dim Needed As Long, Returned As Long, i As Integer
EnumPrintersA 2, vbNullString, 5, 0, 0, Needed, 0 ReDim PrinterEnum(Needed / 4) EnumPrintersA 2, vbNullString, 5, PrinterEnum(0), _ Needed, Needed, Returned ReDim Impr(1 To Returned) For i = 1 To Returned Impr(i) = Space$(lstrlenA(PrinterEnum(i * 5 - 5))) lstrcpyA Impr(i), PrinterEnum(i * 5 - 5) Debug.Print Impr(i), Application.ActivePrinter ActivePrinter = NomImpr Next i
End Sub
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
J'ai d'autres archives, mais il se fait tard.
-- A+
Bonjour à gege2000 qui nous a écrit :
Bonjour,
Nous avons différentes marques d'imprimante qui gérent différement les
bacs... Pour gérer la sélection du bon type de papier j'aimerais créer
une macro qui me retourne le nom du pilote (pas le nom de l'imprimante
comme le fait "ActivePrinter") des imprimantes installées pour pouvoir
ensuite aller chercher les codes des bacs dans un fichier ini.
Mon problème est le suivant : Dans mes modèles j'aimerais pouvoir
gérer les codes des bacs (papier en-tête et papier blanc) des
différentes imprimantes de notre réseau. De plus, j'aimerais créer une
macro qui affichera un masque permettant aux utilisateurs de
sélectionner une imprimante (liste de ses imprimantes installées) et
aussi le type de papier pour la première page et le type pour les
suivantes.
D'avance un grand merci à celles et ceux qui voudrons m'aider à
"pondre" ces deux bouts de code !!!! GeGe
La gestion des imprimantes et des bacs n'est pas une sinécure.
Voici quelques éléments que j'ai conservé :
Private Declare Function EnumPrintersA Lib "winspool.drv" _
(ByVal flags As Long, ByVal name As String, ByVal Level As Long, _
pPrinterEnum As Long, ByVal cdBuf As Long, _
pcbNeeded As Long, pcReturned As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" _
(ByVal lpString As Any) As Long
Private Declare Function lstrcpyA Lib "kernel32" _
(ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Sub ListeImprimantes()
Dim PrinterEnum() As Long, Impr() As String
Dim Needed As Long, Returned As Long, i As Integer
EnumPrintersA 2, vbNullString, 5, 0, 0, Needed, 0
ReDim PrinterEnum(Needed / 4)
EnumPrintersA 2, vbNullString, 5, PrinterEnum(0), _
Needed, Needed, Returned
ReDim Impr(1 To Returned)
For i = 1 To Returned
Impr(i) = Space$(lstrlenA(PrinterEnum(i * 5 - 5)))
lstrcpyA Impr(i), PrinterEnum(i * 5 - 5)
Debug.Print Impr(i), Application.ActivePrinter
ActivePrinter = NomImpr
Next i
End Sub
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
Bonjour, Nous avons différentes marques d'imprimante qui gérent différement les bacs... Pour gérer la sélection du bon type de papier j'aimerais créer une macro qui me retourne le nom du pilote (pas le nom de l'imprimante comme le fait "ActivePrinter") des imprimantes installées pour pouvoir ensuite aller chercher les codes des bacs dans un fichier ini. Mon problème est le suivant : Dans mes modèles j'aimerais pouvoir gérer les codes des bacs (papier en-tête et papier blanc) des différentes imprimantes de notre réseau. De plus, j'aimerais créer une macro qui affichera un masque permettant aux utilisateurs de sélectionner une imprimante (liste de ses imprimantes installées) et aussi le type de papier pour la première page et le type pour les suivantes. D'avance un grand merci à celles et ceux qui voudrons m'aider à "pondre" ces deux bouts de code !!!! GeGe
La gestion des imprimantes et des bacs n'est pas une sinécure. Voici quelques éléments que j'ai conservé : Private Declare Function EnumPrintersA Lib "winspool.drv" _ (ByVal flags As Long, ByVal name As String, ByVal Level As Long, _ pPrinterEnum As Long, ByVal cdBuf As Long, _ pcbNeeded As Long, pcReturned As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" _ (ByVal lpString As Any) As Long
Private Declare Function lstrcpyA Lib "kernel32" _ (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Sub ListeImprimantes()
Dim PrinterEnum() As Long, Impr() As String Dim Needed As Long, Returned As Long, i As Integer
EnumPrintersA 2, vbNullString, 5, 0, 0, Needed, 0 ReDim PrinterEnum(Needed / 4) EnumPrintersA 2, vbNullString, 5, PrinterEnum(0), _ Needed, Needed, Returned ReDim Impr(1 To Returned) For i = 1 To Returned Impr(i) = Space$(lstrlenA(PrinterEnum(i * 5 - 5))) lstrcpyA Impr(i), PrinterEnum(i * 5 - 5) Debug.Print Impr(i), Application.ActivePrinter ActivePrinter = NomImpr Next i
End Sub
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
J'ai d'autres archives, mais il se fait tard.
-- A+
gege2000
Bonjour Geo, Merci pour ces pistes. En effet c'était déjà tard et je te remercie pour l'effort. J'ai la liste des imprimantes dans une liste déroulante et les deux champs pour sélectionner le type de papier. Maintenant j'aimerais le driver de ces mêmes imprimantes ce qui me permettra d'aller lire le fichier inin et sélectionner le bon bac. Et ça... j'y arrive pas vraiment. D'avance à toute autre aide. Bien à vous. GeGe
Bonjour Geo,
Merci pour ces pistes. En effet c'était déjà tard et je te remercie
pour l'effort.
J'ai la liste des imprimantes dans une liste déroulante et les deux
champs pour sélectionner le type de papier. Maintenant j'aimerais le
driver de ces mêmes imprimantes ce qui me permettra d'aller lire le
fichier inin et sélectionner le bon bac. Et ça... j'y arrive pas
vraiment.
D'avance à toute autre aide. Bien à vous. GeGe
Bonjour Geo, Merci pour ces pistes. En effet c'était déjà tard et je te remercie pour l'effort. J'ai la liste des imprimantes dans une liste déroulante et les deux champs pour sélectionner le type de papier. Maintenant j'aimerais le driver de ces mêmes imprimantes ce qui me permettra d'aller lire le fichier inin et sélectionner le bon bac. Et ça... j'y arrive pas vraiment. D'avance à toute autre aide. Bien à vous. GeGe
Geo
Bonjour
J'ai la liste des imprimantes dans une liste déroulante et les deux champs pour sélectionner le type de papier. Maintenant j'aimerais le driver de ces mêmes imprimantes ce qui me permettra d'aller lire le fichier ini et sélectionner le bon bac. Et ça... j'y arrive pas vraiment.
Je ne sais pas trop ce que vous appelez le pilote, mais regardez si vous trouvez votre bonheur avec la fonction DeviceCapabilities http://msdn.microsoft.com/en-us/library/dd183552(VS.85).aspx
-- A+
Bonjour
J'ai la liste des imprimantes dans une liste déroulante et les deux
champs pour sélectionner le type de papier. Maintenant j'aimerais le
driver de ces mêmes imprimantes ce qui me permettra d'aller lire le
fichier ini et sélectionner le bon bac. Et ça... j'y arrive pas
vraiment.
Je ne sais pas trop ce que vous appelez le pilote, mais regardez si
vous trouvez votre bonheur avec la fonction
DeviceCapabilities
http://msdn.microsoft.com/en-us/library/dd183552(VS.85).aspx
J'ai la liste des imprimantes dans une liste déroulante et les deux champs pour sélectionner le type de papier. Maintenant j'aimerais le driver de ces mêmes imprimantes ce qui me permettra d'aller lire le fichier ini et sélectionner le bon bac. Et ça... j'y arrive pas vraiment.
Je ne sais pas trop ce que vous appelez le pilote, mais regardez si vous trouvez votre bonheur avec la fonction DeviceCapabilities http://msdn.microsoft.com/en-us/library/dd183552(VS.85).aspx
-- A+
Geo
Bonjour
Voici un bout de code qui permet de récupérer les caractéristiques d'une imprimante : http://cjoint.com/?jDoURaUVgu
C'est un peu ancien, il semble que la structure DevMode ait évolué depuis, mais ça a l'air de marcher. C'est extrait d'un module qui permettait de basculer une imprimante en mode couleur ou noir et Blanc par défaut, et ça le faisait.
-- A+
Bonjour
Voici un bout de code qui permet de récupérer les caractéristiques
d'une imprimante :
http://cjoint.com/?jDoURaUVgu
C'est un peu ancien, il semble que la structure DevMode ait évolué
depuis, mais ça a l'air de marcher.
C'est extrait d'un module qui permettait de basculer une imprimante en
mode couleur ou noir et Blanc par défaut, et ça le faisait.
Voici un bout de code qui permet de récupérer les caractéristiques d'une imprimante : http://cjoint.com/?jDoURaUVgu
C'est un peu ancien, il semble que la structure DevMode ait évolué depuis, mais ça a l'air de marcher. C'est extrait d'un module qui permettait de basculer une imprimante en mode couleur ou noir et Blanc par défaut, et ça le faisait.
-- A+
gege2000
Bonjour, Merci Geo, ça me donne quelques idées sur les possibilités qui s'offrent à moi.... Par pilote j'entendais le driver, avec ce nom je peux aller chercher les paramètres dans le fichier ini. Je ne peux pas retrouver l'imprimante avec son nom réseau dans le fichier ini. (plus de 300 imprimantes pour 6 modèles différents) J'y arriverai... Merci encore. Bonne journée. GeGe
Bonjour,
Merci Geo, ça me donne quelques idées sur les possibilités qui
s'offrent à moi....
Par pilote j'entendais le driver, avec ce nom je peux aller chercher
les paramètres dans le fichier ini. Je ne peux pas retrouver
l'imprimante avec son nom réseau dans le fichier ini. (plus de 300
imprimantes pour 6 modèles différents)
J'y arriverai... Merci encore.
Bonne journée. GeGe
Bonjour, Merci Geo, ça me donne quelques idées sur les possibilités qui s'offrent à moi.... Par pilote j'entendais le driver, avec ce nom je peux aller chercher les paramètres dans le fichier ini. Je ne peux pas retrouver l'imprimante avec son nom réseau dans le fichier ini. (plus de 300 imprimantes pour 6 modèles différents) J'y arriverai... Merci encore. Bonne journée. GeGe
Geo
Bonjour Plus court et plus "moderne" un code avec les wmi : http://cjoint.com/?jEpNb4fASA
Il y a le driverpath qui indique quel est le fichier du pilote, mais je ne sais pas si cela vous suffit pour l'identifier.
La macro liste toutes les données disponible dans le document Word ouvert. Un message indique combien de pilotes ont été trouvés et donc signale la fin d'exécution.
-- A+
Bonjour
Plus court et plus "moderne" un code avec les wmi :
http://cjoint.com/?jEpNb4fASA
Il y a le driverpath qui indique quel est le fichier du pilote, mais je
ne sais pas si cela vous suffit pour l'identifier.
La macro liste toutes les données disponible dans le document Word
ouvert.
Un message indique combien de pilotes ont été trouvés et donc signale
la fin d'exécution.
Bonjour Plus court et plus "moderne" un code avec les wmi : http://cjoint.com/?jEpNb4fASA
Il y a le driverpath qui indique quel est le fichier du pilote, mais je ne sais pas si cela vous suffit pour l'identifier.
La macro liste toutes les données disponible dans le document Word ouvert. Un message indique combien de pilotes ont été trouvés et donc signale la fin d'exécution.
-- A+
gege2000
Bonjour Geo, ça m'a l'air pas mal, je pense pouvoir utiliser le nom pour lire les param. dans le fichier ini Un tout grand merci, un beau et bon week-end. GeGe
Bonjour Geo,
ça m'a l'air pas mal, je pense pouvoir utiliser le nom pour lire les
param. dans le fichier ini
Un tout grand merci, un beau et bon week-end. GeGe
Bonjour Geo, ça m'a l'air pas mal, je pense pouvoir utiliser le nom pour lire les param. dans le fichier ini Un tout grand merci, un beau et bon week-end. GeGe