Print Userform

Bonjour,

J’aimerais imprimer un Userfrom sur une seule page, j’arrive à l’imprimer mais pas entièrement, il manque une partie, je souhaiterais aussi pouvoir choisir le sens paysage ou portrait lors du lancement de l’impression.

En vous remerciant pour votre aide.

95print-userfom.xlsm (583.27 Ko)

Bonjour,

Jette un œil ici:

https://forum.excel-pratique.com/viewtopic.php?t=17462

Cordialement,

Bonjour,

Essaie ceci :

Private Sub Bp_Print_Paysage1_Click()
    Dim Ws As Worksheet
    Set Ws = Sheets.Add
    'Copie d'écran de la forme active
    keybd_event vbKeySnapshot, 1, 0&, 0&
    DoEvents
    Ws.Paste
    Me.Hide
    Application.DisplayAlerts = False
    With Ws.Range("Q24")
        .Value = "x"
        .Font.Color = vbWhite
    End With
    With Ws.PageSetup
        .Orientation = xlLandscape
        .CenterHorizontally = True
        .CenterVertically = True
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintArea = "A1:Q24"
    End With
    'Ws.PrintOut
    Ws.PrintPreview
    'Ws.Delete
End Sub

NB- J'ai mis PrintPreview pour les tests...

Elle fonctionne... Il arrive cependant parfois que la copie échoue et la macro va placer un bout de code en A1 ?

Je ne sais pas ce qui provoque ça, de même que les échecs sur mes autres essais (utilisation d'une variable pour affecter l'image et la réduire, détection de la cellule inférieure droite pour y placer un caractère, ...)

Cela fonctionnait parfois, mais le taux d'échec restait supérieur au taux de réussite. Pour celle que j'ai retenue le taux de réussite est supérieur...

Cordialement.

Bonjour,

Jette un œil ici:

https://forum.excel-pratique.com/viewtopic.php?t=17462

Cordialement,

Bonjour xorsankukai

Merci pour t'on aide, je viens de regarder le fichier, il imprime bien en paysage mais ne réduit pas l'impression de l'userform à une seule page. C'est peut être pas possible! et à moi de réduire l'userform.

Cdlt

Bonjour,

Essaie ceci :

Private Sub Bp_Print_Paysage1_Click()
    Dim Ws As Worksheet
    Set Ws = Sheets.Add
    'Copie d'écran de la forme active
    keybd_event vbKeySnapshot, 1, 0&, 0&
    DoEvents
    Ws.Paste
    Me.Hide
    Application.DisplayAlerts = False
    With Ws.Range("Q24")
        .Value = "x"
        .Font.Color = vbWhite
    End With
    With Ws.PageSetup
        .Orientation = xlLandscape
        .CenterHorizontally = True
        .CenterVertically = True
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintArea = "A1:Q24"
    End With
    'Ws.PrintOut
    Ws.PrintPreview
    'Ws.Delete
End Sub

NB- J'ai mis PrintPreview pour les tests...

Elle fonctionne... Il arrive cependant parfois que la copie échoue et la macro va placer un bout de code en A1 ?

Je ne sais pas ce qui provoque ça, de même que les échecs sur mes autres essais (utilisation d'une variable pour affecter l'image et la réduire, détection de la cellule inférieure droite pour y placer un caractère, ...)

Cela fonctionnait parfois, mais le taux d'échec restait supérieur au taux de réussite. Pour celle que j'ai retenue le taux de réussite est supérieur...

Cordialement.

Bonjour Mr Ferrand,

J[u]e vous remercie une fois de plus pour votre aide, [/u]je viens de tester votre code et j'ai comme l'impression qu'il m'affiche la valeur du presse papier et non l'userform.

C'est peut être impossible et à moi de réduire la taille de l'userform??

Cdlt

Bonjour,

Lis entièrement ce que j'ai écrit... Si j'ai affirmé que ce code fonctionne, c'est que je l'ai testé. J'ai fait entre 20 et 30 tests avec diverses variantes de code, et celui-ci est celui qui fonctionne le mieux, soit le plus souvent, mais il lui arrive de déraper et dans ce cas c'est le collage d'image qui ne se fait pas... Tu recommences immédiatement...

Cordialement.

Bonjour Pilougne, MFerrand,

Une autre solution ici (à laquelle tu as contribué MFerrand, ):

https://forum.excel-pratique.com/viewtopic.php?f=2&t=74711 Regarde la solution de BOB71AU

Cordialement,

Bonjour,

Salut xorsankulai ! Je me souviens effectivement de ce sujet (en le revoyant)... Le code est à peu près semblable, la différence est que l' Userform tenait dans la page standard...

Ce que j'ai mis en plus pour le problème de Pilougne c'est la frappe d'un caractère pour cadrer la réduction à l'impression par Excel.

Mais j'ai rechargé le fichier de ce sujet, et premier essai, erreur au collage qui ne se fait pas ! 2e essai ça fonctionne !

Cela m'a donc l'air récurrent ce plantage périodique au collage de l'image du userform...

Cordialement.

Bonjour,

Lis entièrement ce que j'ai écrit... Si j'ai affirmé que ce code fonctionne, c'est que je l'ai testé. J'ai fait entre 20 et 30 tests avec diverses variantes de code, et celui-ci est celui qui fonctionne le mieux, soit le plus souvent, mais il lui arrive de déraper et dans ce cas c'est le collage d'image qui ne se fait pas... Tu recommences immédiatement...

Cordialement.

Bonjour Mr Ferrand,

Je viens de tester le code, il fonctionne bien et affiche l'userfom entièrement.

Cependant j'ai remarqué que si on fait juste avant une copie (ctrl-c) dans le presse papier c'est cette donnée copiée qui apparaît à la prévisu à la place de l'userform, par contre ensuite à la seconde prévisu l'userform est bien affiché.

Cordialement.

Bonjour Pilougne, MFerrand,

Une autre solution ici (à laquelle tu as contribué MFerrand, ):

https://forum.excel-pratique.com/viewtopic.php?f=2&t=74711 Regarde la solution de BOB71AU

Cordialement,

Bonjour,

Je viens de trouver comment palier le problème lors de la 1ére impression, il suffit de vider le presse papier

Application.CutCopyMode = False et ensuite ça fonctionne à tous les coups.

Merci encore.

Cdlt

Bonjour,

Lis entièrement ce que j'ai écrit... Si j'ai affirmé que ce code fonctionne, c'est que je l'ai testé. J'ai fait entre 20 et 30 tests avec diverses variantes de code, et celui-ci est celui qui fonctionne le mieux, soit le plus souvent, mais il lui arrive de déraper et dans ce cas c'est le collage d'image qui ne se fait pas... Tu recommences immédiatement...

Cordialement.

Bonjour Mr Ferrand,

Je viens de tester le code, il fonctionne bien et affiche l'userfom entièrement.

Cependant j'ai remarqué que si on fait juste avant une copie (ctrl-c) dans le presse papier c'est cette donnée copiée qui apparaît à la prévisu à la place de l'userform, par contre ensuite à la seconde prévisu l'userform est bien affiché.

Cordialement.

Bonjour,

Je viens de trouver comment palier le problème lors de la 1ére impression, il suffit de vider le presse papier

Application.CutCopyMode = False et ensuite ça fonctionne à tous les coups.

Merci encore.

Cdlt

Bien joué,

Bonsoir,

Suite à ton observation, j'ai fait un essai en introduisant :

Application.CutCopyMode = False, pour vider le presse-papier avant de procéder à la copie.

Le résultat au premier essai était que le texte de la macro s'est trouvé copié sur la feuille, mais pas l'image (mais on va au bout, on a l'aperçu ! mais sans le contenu qu'on veut !!

J'ai ajouté alors un forçage collage image avec :

Ws.Pictures.Paste

Sur quelques essais cela a fonctionné, je me suis dit : ça y est... ! mais juste ensuite, deux essais manqués avant que cela redevienne bon...

Ce n'est donc pas suffisant pour stabiliser...

Cordialement.

Rechercher des sujets similaires à "print userform"