XL 2013 Impression d'un userform

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

PHV62

XLDnaute Junior
bonjour le forum
je souhaiterai imprimer un userform avec les informations dans les textbox et combobox grace a un bouton

merci d'avance pour votre aide
ph v
 
voila ce que j'ai depuis cematin
dans le userform j'envoie "80" pour 80%
1754206898790.png


ensuite quand je lance j'ai mis un point d'arrêt
et quand on regarde percentpage /100 il se transforme en 1
pourtant quand on regarde au dessus il n'y a rien qui le change
demo3.gif

c'est infernal
 
J'ai fait comme ceci...

Si on demande pas de marges, et que ce n'est pas un Print sur fichier PDF, le code demande de choisir l'imprimante.
  1. Si l'imprimante est "Microsoft Print to PDF" -> Marges à zéro
  2. Si l'imprimante est autre -> Marges standards
Si on demande des marges (le défaut)
  1. Quelque soit l'imprimante -> Marges standards
 

Pièces jointes

c' est le resultat que tu attends?
Oui car le paramètre "Margins" est à True par défaut.
Code:
Sub PrintUserForm(Optional PDFFileFullName As String = vbNullString, _
                  Optional PaperSize As Integer = xlPaperA4, _
                  Optional FullPage As Boolean = True, _
                  Optional Margins As Boolean = True, _
                  Optional Preview As Boolean = True)
Sinon, tu fais ça:
VB:
Private Sub CommandButton1_Click()
    'Call PrintUserForm
    Call PrintUserForm(Margins:=False)
End Sub
et tu obtiens ça si tu choisis l'imprimante "Microsoft Print to PDF" lorsque tu es prompté par le code pour le choix de l'imprimante.
car si tu choisis une autre imprimante, les marges ne seront pas mises à zéro car ça foire.
1754214211214.png
 
Dernière édition:
@Dudu2 sans doute encore les marge d'ombre qui faussent les calcul du hbitmap mais bon ya pas beaucoup car même avec l'astuce j'aurais toujours une marge bottom plus grande que celle du top
il faut tester avec le bouton ratio (bleu clair) tout les formats( à chaque clicks on change de format)
notamment le ratio A4(1.414...) soit 29.7/21

@halecs93 je ne sais pas quoi te dire
peut être a tu une imprimante paramétrée , déjà
Hello... non aucune imprimante..... juste PDF
 
ok voila le resultat pleine page
l'image est pixelisée
dans ma methode avec excel j'agrandi la shape ou dans la 1 v2 c'est directement dans le hbitmap que le zoom
du coup c'est net
mais avec ta version word le resultat ci dessous
1754221649038.png



ET VOILA COMMENT CA SE PASSE AVEC MA VERSION EXCEL
IL N Y A PAS PHOTO JE CROIS


1754221984875.png
 
Salut,
pour la "pixelisation" du PDF, il faut se méfier du programme qui visualise le PDF car moi à partir d'un certain niveau de zoom ça pixelise et en plus on voit un effet "jpeg" comme quoi l'image générée est dégradée par rapport à la source.
Dans les captures d'écran de patricktoulon, où il nous dit qu'il n'y pas photo la version Word est montrée dans une visualisation PDF et la version Excel dans un aperçu avant impression.
Par contre si en imprimante de sortie j'utilise l'imprimante Microsoft xps Document Writer pas de dégradation même avec un fort grossissement :
UserFormPrintXps.png


Dans Windows 10 la visionneuse xps est une fonctionnalité facultative à ajouter.

Nullosse
 
Dernière édition:
Bonjour @Nullos , @Dudu2 , et tout les autres

Dans le pdf lui même c'est pixelisé aussi
Je l'ai ouvert avec adobd, firefox ,edge et c'est pareil en zoom 100 ( bien sur je parle du zoom de ces 3 fenêtres de ces applications)

Pour ma part comme je connais et maitrise le problème avec excel a savoir qu'il paramètre pas réellement sur A4
J ai fait au plus simple
Je crée une plage (et surtout!! celle que Excel prend de lui même en temps normal rien de plus rien de moins)
C'est a dire celui de A1 et la cellule (saut de page horizontal 1 ,saut de page vertical 1 )
Autrement dit je ne force rien
Et je laisse tout les rowheight et columnwidth comme ils sont
Sauf le dernier (row et colonne)que je redimensionne pour faire sauter le marges

Je laisse une marge de quelques milimètre( en effet quand on imprime trop au bord les imprimantes à jet bouffent les cartouches a une vitesse folle ,car les tampons se salissent très vite et elles se mettent en auto-nettoyage plus souvent)

Et voila me voila avec une pleine page avec marge comme sur les photos
Je laisse le zoom à 100( je n'y touche pas)
Je centre

Toute les marges sont zero

Du coup sur ma plage il me reste plus qu'a coller ma capture et de stretcher la shapes(1) sur le width ou height selon le ratio de la capture (donc du userform)
Pas compliqué

Et voila on ne fait pas de calcul c'est tout en dur


voici ma createplageA4 avec les 2 sub de test landscape ou portrait
VB:
Sub testLandscape()
    Dim Rng As Range, Ws As Worksheet
    'au depart les rng et ws sont nothing,ils sont determinés dans la createPage A4
    createPageA4 xlLandscape, Rng, Ws
    'du coup j'ai la plage et la feuille disponible ici
   
    'ici on pourrait coller la capture et strtcher la shapes(1) dans ws
   
    'je met de la couleur pour voir
    Rng.Interior.Color = RGB(255, 245, 240)
    Rng.BorderAround 1, 2, 3
    Ws.PrintPreview
       
    Application.DisplayAlerts = False
    Ws.Delete
    Application.DisplayAlerts = True
End Sub

Sub testportrait()
    Dim Rng As Range, Ws As Worksheet
    'au depart les rng et ws sont nothing,ils sont determinés dans la createPage A4
    createPageA4 xlPortrait, Rng, Ws
    'du coup j'ai la plage et la feuille disponible ici
   
    'ici on pourrait coller la capture et strtcher la shapes(1) dans ws
   
    'Pour l'exemple je met de la couleur pour voir
    Rng.Interior.Color = RGB(255, 245, 240)
    Rng.BorderAround 1, 2, 3
    Ws.PrintPreview
   
    Application.DisplayAlerts = False
    Ws.Delete
    Application.DisplayAlerts = True
End Sub


Sub createPageA4(sens, Rng As Range, Ws As Worksheet)
    Set Ws = Sheets.Add
   
    If sens = xlLandscape Then
        Set Rng = Ws.Range("A1:M40")
        Rng.ColumnWidth = 10.71
        Rng.RowHeight = 15
        Rng.Cells(Rng.Rows.Count, 1).RowHeight = 15.75
        Rng.Cells(Rng.Columns.Count).ColumnWidth = 9.29
    Else
        Set Rng = Ws.Range("A1:I57")
        Rng.ColumnWidth = 10.71
        Rng.RowHeight = 15
        Rng.Cells(Rng.Rows.Count, 1).RowHeight = 10.25
        Rng.Cells(Rng.Columns.Count).ColumnWidth = 11
    End If
   
    With Ws.PageSetup
        .PrintArea = Rng.Address
        .Orientation = sens
        .LeftMargin = 0
        .TopMargin = 0
        .RightMargin = 0
        .BottomMargin = 0
        .HeaderMargin = 0
        .FooterMargin = 0
        .Zoom = 100
        Ws.ResetAllPageBreaks 'juste au cas ou
        .CenterHorizontally = 1
        .CenterVertically = 1
    End With
End Sub
PATRICK

Aperçu landscape

1754305582276.png


Aperçu portrait

1754305651198.png
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
220
  • Question Question
XL 2019 User Form
Réponses
9
Affichages
314
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
361
Réponses
2
Affichages
310
  • Question Question
Microsoft 365 Lecture vocale USF
Réponses
5
Affichages
167
Retour