OVH Cloud OVH Cloud

imprimer formulaire mais en format paysage

2 réponses
Avatar
jil
Bonjour, Bonne année,

Je voudrais imprmier mon "userform1" via un bouton "cmdimprimer" (bouton sur
ce formulaire). Par contre, je ne sais pas lui dire de s'éditer en Paysage.

Merci d'avance pour vos tuyaux

Jil

Private Sub CMDImprimer_Click()
.PrintForm
End With
End Sub

2 réponses

Avatar
Michel Pierron
Bonjour jil;
Meilleurs voeux

La combinaison de touches pour PrintScreen dépend de la version de l'OS.
Impression paysage dans un classeur masqué (dans le module UserForm):

Option Explicit
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Declare Function GetVersionEx& Lib _
"kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO)
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte _
, ByVal dwFlags&, ByVal dwExtraInfo&)
Private Declare Function OpenClipboard& Lib "user32" (ByVal hwnd&)
Private Declare Function EmptyClipboard& Lib "user32" ()
Private Declare Function CloseClipboard& Lib "user32" ()
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12

' Impression écran en paysage
Private Sub CommandButton1_Click()
Me.Repaint
OpenClipboard 0&
EmptyClipboard
Dim OSI As OSVERSIONINFO
OSI.dwOSVersionInfoSize = 148
OSI.szCSDVersion = Space$(128)
Call GetVersionEx(OSI)
If OSI.dwMajorVersion > 4 Then
keybd_event VK_SNAPSHOT, 1, 0, 0
Else
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
End If
CloseClipboard
DoEvents
Application.ScreenUpdating = False
Dim NewBook As String
Workbooks.Add: ActiveSheet.Paste
NewBook = ActiveWorkbook.Name
With ActiveSheet.PageSetup
.RightFooter = Me.Caption & " Le &D Page &P/&N"
.PrintGridlines = False
.Orientation = xlLandscape
.PaperSize = xlPaperA4
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
ActiveWindow.Visible = False
Application.ScreenUpdating = True
Me.Hide
On Error Resume Next
Windows(NewBook).SelectedSheets.PrintOut Copies:=1
Workbooks(NewBook).Close False
Me.Show
End Sub

MP

"jil" a écrit dans le message de news:
eiMh#
Bonjour, Bonne année,

Je voudrais imprmier mon "userform1" via un bouton "cmdimprimer" (bouton
sur

ce formulaire). Par contre, je ne sais pas lui dire de s'éditer en
Paysage.


Merci d'avance pour vos tuyaux

Jil

Private Sub CMDImprimer_Click()
.PrintForm
End With
End Sub





Avatar
jil
Bonjour Michel et merci pour ta réponse;

J'ai tardé à te répondre car visiblement j'ai dû mal adapter ton code car
cela fonctionne pas.
J'ai un niveau VBA qui n'est pas encore au point pour les variables. Je
pense qu'il faut que je mette la première partie de ton code en module ou
module de classe et à partir de 'impression écran en paysage' dans mon
formulaire. Est cela?

Je te remercie d'avance pour ta réponse
Bonne soirée
Jil

"Michel Pierron" a écrit dans le message de news:

Bonjour jil;
Meilleurs voeux

La combinaison de touches pour PrintScreen dépend de la version de l'OS.
Impression paysage dans un classeur masqué (dans le module UserForm):

Option Explicit
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Declare Function GetVersionEx& Lib _
"kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO)
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte _
, ByVal dwFlags&, ByVal dwExtraInfo&)
Private Declare Function OpenClipboard& Lib "user32" (ByVal hwnd&)
Private Declare Function EmptyClipboard& Lib "user32" ()
Private Declare Function CloseClipboard& Lib "user32" ()
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12

' Impression écran en paysage
Private Sub CommandButton1_Click()
Me.Repaint
OpenClipboard 0&
EmptyClipboard
Dim OSI As OSVERSIONINFO
OSI.dwOSVersionInfoSize = 148
OSI.szCSDVersion = Space$(128)
Call GetVersionEx(OSI)
If OSI.dwMajorVersion > 4 Then
keybd_event VK_SNAPSHOT, 1, 0, 0
Else
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
End If
CloseClipboard
DoEvents
Application.ScreenUpdating = False
Dim NewBook As String
Workbooks.Add: ActiveSheet.Paste
NewBook = ActiveWorkbook.Name
With ActiveSheet.PageSetup
.RightFooter = Me.Caption & " Le &D Page &P/&N"
.PrintGridlines = False
.Orientation = xlLandscape
.PaperSize = xlPaperA4
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
ActiveWindow.Visible = False
Application.ScreenUpdating = True
Me.Hide
On Error Resume Next
Windows(NewBook).SelectedSheets.PrintOut Copies:=1
Workbooks(NewBook).Close False
Me.Show
End Sub

MP

"jil" a écrit dans le message de news:
eiMh#
Bonjour, Bonne année,

Je voudrais imprmier mon "userform1" via un bouton "cmdimprimer" (bouton
sur

ce formulaire). Par contre, je ne sais pas lui dire de s'éditer en
Paysage.


Merci d'avance pour vos tuyaux

Jil

Private Sub CMDImprimer_Click()
.PrintForm
End With
End Sub