OVH Cloud OVH Cloud

Imprimantes

9 réponses
Avatar
JLuc
Bonsoir les lecteurs,
Y a t'il une methode ou un moyen de connaitre le nom de toutes les
imprimantes installees sur un pc en vba ?
J'aimerais faire un applicatif pour choisir une imprimante par defaut
pour un classeur.
Merci d'avance

--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:\Program Files\Microsoft Office\Office\1036\VBALIST.XLS

9 réponses

Avatar
michdenis
Bonjour JLuc



De Laurent Longre sur le site de Frédéric Sigonneau
Attribute VB_Name = "ImprimantesInstallees"
'===================================================== 'mpfe L Longre : Question :
'Quelqu'un connait il un moyen via VBA de connaitre la liste des imprimantes
'installées sur un PC et surtout de connaitre les qualités d'impression
possibles ?
'Précision : Je ne veux pas connaitre seulement l'imprimante active, mais
toutes
'celles que l'utilisateur a installé sur son PC et connaitre la qualité
'd'impression de chacune d'elle.
Option Explicit

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 Sub RtlMoveMemory Lib "Kernel32" (pDest As Long, _
ByVal pSource As Long, ByVal Length 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 Test()
Dim PrinterEnum() As Long, Impr As String
Dim Needed As Long, Returned As Long, I As Integer
Dim Res As Long
EnumPrintersA 2, vbNullString, 2, 0, 0, Needed, 0
If Needed = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
ReDim PrinterEnum(Needed / 4)
If EnumPrintersA(2, vbNullString, 2, PrinterEnum(0), Needed, _
Needed, Returned) = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
For I = 1 To Returned * 21 Step 21
Impr = Space$(lstrlenA(PrinterEnum(I)))
lstrcpyA Impr, PrinterEnum(I)
If PrinterEnum(I + 6) Then _
RtlMoveMemory Res, PrinterEnum(I + 6) + 58, 2
MsgBox "Imprimante : " & Impr & vbCr & vbCr & "Résolution : " _
& IIf(PrinterEnum(I + 6), Res, "Inconnue")
Next I
End Sub

'=====================================================

Salutations!



"JLuc" a écrit dans le message de news:
Bonsoir les lecteurs,
Y a t'il une methode ou un moyen de connaitre le nom de toutes les
imprimantes installees sur un pc en vba ?
J'aimerais faire un applicatif pour choisir une imprimante par defaut
pour un classeur.
Merci d'avance

--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS
Avatar
JLuc
*Bonjour michdenis*,
Merci, de la rapidite et de la qualite, c'est geant.
Il est vrai aussi que je devrais aller voir les sites que je cite dans
ma signature avant de poser mes question :oÞ
Bonjour JLuc



De Laurent Longre sur le site de Frédéric Sigonneau
Attribute VB_Name = "ImprimantesInstallees"
'===================================================== > 'mpfe L Longre : Question :
'Quelqu'un connait il un moyen via VBA de connaitre la liste des imprimantes
'installées sur un PC et surtout de connaitre les qualités d'impression
possibles ?
'Précision : Je ne veux pas connaitre seulement l'imprimante active, mais
toutes
'celles que l'utilisateur a installé sur son PC et connaitre la qualité
'd'impression de chacune d'elle.
Option Explicit

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 Sub RtlMoveMemory Lib "Kernel32" (pDest As Long, _
ByVal pSource As Long, ByVal Length 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 Test()
Dim PrinterEnum() As Long, Impr As String
Dim Needed As Long, Returned As Long, I As Integer
Dim Res As Long
EnumPrintersA 2, vbNullString, 2, 0, 0, Needed, 0
If Needed = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
ReDim PrinterEnum(Needed / 4)
If EnumPrintersA(2, vbNullString, 2, PrinterEnum(0), Needed, _
Needed, Returned) = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
For I = 1 To Returned * 21 Step 21
Impr = Space$(lstrlenA(PrinterEnum(I)))
lstrcpyA Impr, PrinterEnum(I)
If PrinterEnum(I + 6) Then _
RtlMoveMemory Res, PrinterEnum(I + 6) + 58, 2
MsgBox "Imprimante : " & Impr & vbCr & vbCr & "Résolution : " _
& IIf(PrinterEnum(I + 6), Res, "Inconnue")
Next I
End Sub

'===================================================== >

Salutations!



"JLuc" a écrit dans le message de news:
Bonsoir les lecteurs,
Y a t'il une methode ou un moyen de connaitre le nom de toutes les
imprimantes installees sur un pc en vba ?
J'aimerais faire un applicatif pour choisir une imprimante par defaut
pour un classeur.
Merci d'avance



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
JLuc
*Bonjour michdenis*,
J'ai fais un copier coller et tester et ca marche. il ne me reste plus
qu'a trouver la solution pour avoir le port d'imprimante utilise
Bonjour JLuc



De Laurent Longre sur le site de Frédéric Sigonneau
Attribute VB_Name = "ImprimantesInstallees"
'===================================================== > 'mpfe L Longre : Question :
'Quelqu'un connait il un moyen via VBA de connaitre la liste des imprimantes
'installées sur un PC et surtout de connaitre les qualités d'impression
possibles ?
'Précision : Je ne veux pas connaitre seulement l'imprimante active, mais
toutes
'celles que l'utilisateur a installé sur son PC et connaitre la qualité
'd'impression de chacune d'elle.
Option Explicit

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 Sub RtlMoveMemory Lib "Kernel32" (pDest As Long, _
ByVal pSource As Long, ByVal Length 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 Test()
Dim PrinterEnum() As Long, Impr As String
Dim Needed As Long, Returned As Long, I As Integer
Dim Res As Long
EnumPrintersA 2, vbNullString, 2, 0, 0, Needed, 0
If Needed = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
ReDim PrinterEnum(Needed / 4)
If EnumPrintersA(2, vbNullString, 2, PrinterEnum(0), Needed, _
Needed, Returned) = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
For I = 1 To Returned * 21 Step 21
Impr = Space$(lstrlenA(PrinterEnum(I)))
lstrcpyA Impr, PrinterEnum(I)
If PrinterEnum(I + 6) Then _
RtlMoveMemory Res, PrinterEnum(I + 6) + 58, 2
MsgBox "Imprimante : " & Impr & vbCr & vbCr & "Résolution : " _
& IIf(PrinterEnum(I + 6), Res, "Inconnue")
Next I
End Sub

'===================================================== >

Salutations!



"JLuc" a écrit dans le message de news:
Bonsoir les lecteurs,
Y a t'il une methode ou un moyen de connaitre le nom de toutes les
imprimantes installees sur un pc en vba ?
J'aimerais faire un applicatif pour choisir une imprimante par defaut
pour un classeur.
Merci d'avance



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
michdenis
A = Application.ActivePrinter


Salutations!


"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
J'ai fais un copier coller et tester et ca marche. il ne me reste plus
qu'a trouver la solution pour avoir le port d'imprimante utilise
Bonjour JLuc



De Laurent Longre sur le site de Frédéric Sigonneau
Attribute VB_Name = "ImprimantesInstallees"
'===================================================== > 'mpfe L Longre : Question :
'Quelqu'un connait il un moyen via VBA de connaitre la liste des imprimantes
'installées sur un PC et surtout de connaitre les qualités d'impression
possibles ?
'Précision : Je ne veux pas connaitre seulement l'imprimante active, mais
toutes
'celles que l'utilisateur a installé sur son PC et connaitre la qualité
'd'impression de chacune d'elle.
Option Explicit

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 Sub RtlMoveMemory Lib "Kernel32" (pDest As Long, _
ByVal pSource As Long, ByVal Length 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 Test()
Dim PrinterEnum() As Long, Impr As String
Dim Needed As Long, Returned As Long, I As Integer
Dim Res As Long
EnumPrintersA 2, vbNullString, 2, 0, 0, Needed, 0
If Needed = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
ReDim PrinterEnum(Needed / 4)
If EnumPrintersA(2, vbNullString, 2, PrinterEnum(0), Needed, _
Needed, Returned) = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
For I = 1 To Returned * 21 Step 21
Impr = Space$(lstrlenA(PrinterEnum(I)))
lstrcpyA Impr, PrinterEnum(I)
If PrinterEnum(I + 6) Then _
RtlMoveMemory Res, PrinterEnum(I + 6) + 58, 2
MsgBox "Imprimante : " & Impr & vbCr & vbCr & "Résolution : " _
& IIf(PrinterEnum(I + 6), Res, "Inconnue")
Next I
End Sub

'===================================================== >

Salutations!



"JLuc" a écrit dans le message de news:
Bonsoir les lecteurs,
Y a t'il une methode ou un moyen de connaitre le nom de toutes les
imprimantes installees sur un pc en vba ?
J'aimerais faire un applicatif pour choisir une imprimante par defaut
pour un classeur.
Merci d'avance



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
JLuc
Oui, ca, ca marche pour l'imprimante active, en mettant le nom ET le
port ex : Application.ActivePrinter = "Brother HL-1270N sur LPT1:"
Pour l'instant, je recupere que "Brother HL-1270N"
Donc, faut que je cherche un peu
Merci tout de meme
A = Application.ActivePrinter


Salutations!


"JLuc" a écrit dans le message de news:
*Bonjour michdenis*,
J'ai fais un copier coller et tester et ca marche. il ne me reste plus
qu'a trouver la solution pour avoir le port d'imprimante utilise
Bonjour JLuc



De Laurent Longre sur le site de Frédéric Sigonneau
Attribute VB_Name = "ImprimantesInstallees"
'===================================================== >> 'mpfe L Longre : Question :
'Quelqu'un connait il un moyen via VBA de connaitre la liste des imprimantes
'installées sur un PC et surtout de connaitre les qualités d'impression
possibles ?
'Précision : Je ne veux pas connaitre seulement l'imprimante active, mais
toutes
'celles que l'utilisateur a installé sur son PC et connaitre la qualité
'd'impression de chacune d'elle.
Option Explicit

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 Sub RtlMoveMemory Lib "Kernel32" (pDest As Long, _
ByVal pSource As Long, ByVal Length 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 Test()
Dim PrinterEnum() As Long, Impr As String
Dim Needed As Long, Returned As Long, I As Integer
Dim Res As Long
EnumPrintersA 2, vbNullString, 2, 0, 0, Needed, 0
If Needed = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
ReDim PrinterEnum(Needed / 4)
If EnumPrintersA(2, vbNullString, 2, PrinterEnum(0), Needed, _
Needed, Returned) = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
For I = 1 To Returned * 21 Step 21
Impr = Space$(lstrlenA(PrinterEnum(I)))
lstrcpyA Impr, PrinterEnum(I)
If PrinterEnum(I + 6) Then _
RtlMoveMemory Res, PrinterEnum(I + 6) + 58, 2
MsgBox "Imprimante : " & Impr & vbCr & vbCr & "Résolution : " _
& IIf(PrinterEnum(I + 6), Res, "Inconnue")
Next I
End Sub

'===================================================== >>

Salutations!



"JLuc" a écrit dans le message de news:
Bonsoir les lecteurs,
Y a t'il une methode ou un moyen de connaitre le nom de toutes les
imprimantes installees sur un pc en vba ?
J'aimerais faire un applicatif pour choisir une imprimante par defaut
pour un classeur.
Merci d'avance




--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS


Avatar
Modeste
Bonsour®
JLuc wrote:
Y a t'il une methode ou un moyen de connaitre le nom de toutes les
imprimantes installees sur un pc en vba ?
J'aimerais faire un applicatif pour choisir une imprimante par defaut
pour un classeur.
Merci d'avance


heu ....
Sub ChoixIMP()
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub


--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042

Avatar
JLuc
*ReBonjour michdenis*,
C'est super, sur l'EXCELENT site
http://www.excelabo.net/xl/imprimer.php#choiximprimante, j'ai trouve
exactement ce qu'il me fallais ! :-)
Et dire que je recommande a tous d'aller faire un tour la-bas et que
mois meme je n'y vais pas... Decidement, je suis lamentable :'(
Bonjour JLuc



De Laurent Longre sur le site de Frédéric Sigonneau
Attribute VB_Name = "ImprimantesInstallees"
'===================================================== > 'mpfe L Longre : Question :
'Quelqu'un connait il un moyen via VBA de connaitre la liste des imprimantes
'installées sur un PC et surtout de connaitre les qualités d'impression
possibles ?
'Précision : Je ne veux pas connaitre seulement l'imprimante active, mais
toutes
'celles que l'utilisateur a installé sur son PC et connaitre la qualité
'd'impression de chacune d'elle.
Option Explicit

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 Sub RtlMoveMemory Lib "Kernel32" (pDest As Long, _
ByVal pSource As Long, ByVal Length 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 Test()
Dim PrinterEnum() As Long, Impr As String
Dim Needed As Long, Returned As Long, I As Integer
Dim Res As Long
EnumPrintersA 2, vbNullString, 2, 0, 0, Needed, 0
If Needed = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
ReDim PrinterEnum(Needed / 4)
If EnumPrintersA(2, vbNullString, 2, PrinterEnum(0), Needed, _
Needed, Returned) = 0 Then MsgBox "Erreur", vbCritical: Exit Sub
For I = 1 To Returned * 21 Step 21
Impr = Space$(lstrlenA(PrinterEnum(I)))
lstrcpyA Impr, PrinterEnum(I)
If PrinterEnum(I + 6) Then _
RtlMoveMemory Res, PrinterEnum(I + 6) + 58, 2
MsgBox "Imprimante : " & Impr & vbCr & vbCr & "Résolution : " _
& IIf(PrinterEnum(I + 6), Res, "Inconnue")
Next I
End Sub

'===================================================== >

Salutations!



"JLuc" a écrit dans le message de news:
Bonsoir les lecteurs,
Y a t'il une methode ou un moyen de connaitre le nom de toutes les
imprimantes installees sur un pc en vba ?
J'aimerais faire un applicatif pour choisir une imprimante par defaut
pour un classeur.
Merci d'avance



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
JLuc
*Bonjour Modeste*,
J'ai tester en modifiant un peu :
Sub ChoixIMP()
Dim imprimante
imprimante = Application.Dialogs(xlDialogPrinterSetup).Show
MsgBox imprimante
End Sub
ca me renvoie "Vrai" ?? :-? 8-o
Bonsour®
JLuc wrote:
Y a t'il une methode ou un moyen de connaitre le nom de toutes les
imprimantes installees sur un pc en vba ?
J'aimerais faire un applicatif pour choisir une imprimante par defaut
pour un classeur.
Merci d'avance


heu ....
Sub ChoixIMP()
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub


--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS


Avatar
JLuc
*Bonjour Modeste*,
Ca y es, j'ai compris en lisant le code de Michel Pierron sur excelabo
Application.Dialogs(xlDialogPrinterSetup).Show
me permet de definir une imprimante /par defaut/ pour le temps que

tourne l'appli, elle est stockee dans application.activeprinter.
Donc si je veux son nom avec son port, il faut que je le recupere dans
une variable string :
impr$ = Application.ActivePrinter
C'est ca, j'ai tout compris ? :oÞ

--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS