Est il possible de contr=F4ler l'existance d'une imprimante=20
avant d'imprimer via VBA ?
J'ai une appli qui imprimera selon les donn=E9es, sur=20
l'imprimante de l'utilisateur concern=E9 (r=E9seau). =E7a marche=20
super sauf si le nom de l'imprimante est mal renseign=E9,=20
Excel prend l'imprimante par d=E9gfaut, voir la derni=E8re=20
utilis=E9e...=20
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
ChrisV
Bonjour Patrice,
A partir d'un post de Frédéric, et d'un code de LL... (à recopier dans un module du classeur)
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 Test() MsgBox ExisteImpr("Printer PS") End Sub
Function ExisteImpr(NomImprimante) As Boolean 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) If Impr(I) = NomImprimante Then ExisteImpr = True Exit For End If Next I End Function
ChrisV
"patrice" a écrit dans le message de news: 55b701c523d1$52d3b3b0$ Bonjour,
Est il possible de contrôler l'existance d'une imprimante avant d'imprimer via VBA ?
J'ai une appli qui imprimera selon les données, sur l'imprimante de l'utilisateur concerné (réseau). ça marche super sauf si le nom de l'imprimante est mal renseigné, Excel prend l'imprimante par dégfaut, voir la dernière utilisée...
Merci de votre aide
Patrice
Bonjour Patrice,
A partir d'un post de Frédéric, et d'un code de LL...
(à recopier dans un module du classeur)
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 Test()
MsgBox ExisteImpr("Printer PS")
End Sub
Function ExisteImpr(NomImprimante) As Boolean
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)
If Impr(I) = NomImprimante Then
ExisteImpr = True
Exit For
End If
Next I
End Function
ChrisV
"patrice" <anonymous@discussions.microsoft.com> a écrit dans le message de
news: 55b701c523d1$52d3b3b0$a601280a@phx.gbl...
Bonjour,
Est il possible de contrôler l'existance d'une imprimante
avant d'imprimer via VBA ?
J'ai une appli qui imprimera selon les données, sur
l'imprimante de l'utilisateur concerné (réseau). ça marche
super sauf si le nom de l'imprimante est mal renseigné,
Excel prend l'imprimante par dégfaut, voir la dernière
utilisée...
A partir d'un post de Frédéric, et d'un code de LL... (à recopier dans un module du classeur)
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 Test() MsgBox ExisteImpr("Printer PS") End Sub
Function ExisteImpr(NomImprimante) As Boolean 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) If Impr(I) = NomImprimante Then ExisteImpr = True Exit For End If Next I End Function
ChrisV
"patrice" a écrit dans le message de news: 55b701c523d1$52d3b3b0$ Bonjour,
Est il possible de contrôler l'existance d'une imprimante avant d'imprimer via VBA ?
J'ai une appli qui imprimera selon les données, sur l'imprimante de l'utilisateur concerné (réseau). ça marche super sauf si le nom de l'imprimante est mal renseigné, Excel prend l'imprimante par dégfaut, voir la dernière utilisée...