imprimer un userform directement en pdf

patricktoulon

XLDnaute Barbatruc
bonjour a tous
on trouve diverses solutions pour imprimer un userform en pdf
aujourd'hui avec Windows 10 nous avons le WINDOWS PDF PRINTER ET !!!! nous pouvons l'avoir avec Windows 7 sous un autre nom(voir capture plus bas)
et il y a moult applications (virtual printer pdf) en gratuiciel sur la toile

le seul problème avec l'impression directe
c'est que la fonction printform fait appel a l'imprimante par défaut de windows ET NON !!! celle par défaut de excel
et bien voici une petite sub qui pourrait bien vous rendre service
elle vous propose tout les (virtual pdf printer) installées

VB:
Sub impressionForm(usf)
    Dim x, tbl(), i, texte
    x = 0
    With CreateObject("WScript.Network")
        Set imprimantes = .EnumPrinterConnections
        For i = 0 To imprimantes.Count - 1
            If InStr(LCase(imprimantes(i)), "pdf") > 0 Then ReDim Preserve tbl(0 To x): tbl(x) = imprimantes(i): texte = texte & x & "--" & imprimantes(i) & vbCrLf: x = x + 1
        Next
        i = InputBox("choissisez  une imprimante " & vbCrLf & texte, "impression userform")
        If i <> "" Then
            .SetDefaultPrinter tbl(Val(i))
            usf.printform
        End If
    End With
End Sub
l'argument usf etant un object userform

un petit exemple
dans le userform un bouton
VB:
Private Sub CommandButton1_Click()
impressionForm Me    'me.printform
End Sub
résultat
Capture.JPG


taper le chiffre correspondant a celle que vous désirez

voila plus besoins de capturer paster sur sheets etc......

testé sur 2007 et 2013 windows 7 et 2016 pc portable windows 10
a+
 

Noleleda

XLDnaute Nouveau
Bonjour,

Merci pour le sub des imprimantes.

Question:
Mon userform contient un multipages de 3 pages. La macro n'imprime que la page active ou le bouton impression est situé. Il y a t'il une façon d'imprimer les 3 pages?

J'avais trouvé ceci pour l'impression des 3 pages, mais je ne trouve pas comment l'intégrer dans votre code.

For i = 0 To 3
MultiPage1.Value = i
Do: DoEvents: Loop Until MultiPage1.Value = i
Me.PrintForm
Next


Merci beaucoup.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 912
Membres
101 837
dernier inscrit
Ugo