OVH Cloud OVH Cloud

Impression d'un formulaire (userform) en orientation paysage VBA

4 réponses
Avatar
delphineR
Bonjour,

A l'aide d'un bouton j'arrive à imprimer un userform mais je n'arrive pas à
définir des caractéristiques de mise en page telles que l'orientation en
paysage

D'avance merci pour votre aide

4 réponses

Avatar
Daniel
Bonjour.
Ce n'est pas directement possible. Il y a une bidouille citée par Tom Olgivy
et originellement ppostée par Orlando Magalhães Filho. Elle consiste à
copier l'image de l'userform dans un classeur temporaire, mettre celui-ci en
mode paysage et à l'imprimer :

Dans un module :

Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Public Const VK_SNAPSHOT = &H2C

Sub Test()
UserForm1.Show
End Sub

Dans le code de l'userform (ici un bouton impression) :

Private Sub CommandButton1_Click()
keybd_event VK_SNAPSHOT, 0, 0, 0
Workbooks.Add
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:úlse,
DisplayAsIcon:úlse
ActiveSheet.Range("A1").Select
Activesheet.PageSetup.Orientation = xlLandscape
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close False
End Sub

Cordialement.
Daniel
"delphineR" a écrit dans le message de
news:
Bonjour,

A l'aide d'un bouton j'arrive à imprimer un userform mais je n'arrive pas
à
définir des caractéristiques de mise en page telles que l'orientation en
paysage

D'avance merci pour votre aide


Avatar
delphineR
Merci beaucoup, ça m'imprime bien en orientation paysage, mais je n'arrive
pas à donner d'autres caractéristique comme :
ajuster pourimprimer une page
centrer horizontalement...

et je ne comprends pas pourquoi, ça imprime le quadrillage et les colonnes
(A, B..) et les lignes (1,2...)

Merci de m'aider à comprendre le détail de cette écriture


Bonjour.
Ce n'est pas directement possible. Il y a une bidouille citée par Tom Olgivy
et originellement ppostée par Orlando Magalhães Filho. Elle consiste à
copier l'image de l'userform dans un classeur temporaire, mettre celui-ci en
mode paysage et à l'imprimer :

Dans un module :

Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Public Const VK_SNAPSHOT = &H2C

Sub Test()
UserForm1.Show
End Sub

Dans le code de l'userform (ici un bouton impression) :

Private Sub CommandButton1_Click()
keybd_event VK_SNAPSHOT, 0, 0, 0
Workbooks.Add
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:úlse,
DisplayAsIcon:úlse
ActiveSheet.Range("A1").Select
Activesheet.PageSetup.Orientation = xlLandscape
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close False
End Sub

Cordialement.
Daniel
"delphineR" a écrit dans le message de
news:
Bonjour,

A l'aide d'un bouton j'arrive à imprimer un userform mais je n'arrive pas
à
définir des caractéristiques de mise en page telles que l'orientation en
paysage

D'avance merci pour votre aide







Avatar
Daniel
C'est pas l'Amérique, mais c'est tout ce que je sais faire...

Private Sub CommandButton1_Click()
keybd_event VK_SNAPSHOT, 0, 0, 0
Workbooks.Add
Application.DisplayFullScreen = True
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
End With
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:úlse,
DisplayAsIcon:úlse
ActiveSheet.Range("A1").Select
With ActiveSheet.PageSetup
.Orientation = xlLandscape
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close False
End Sub

Daniel
"delphineR" a écrit dans le message de
news:
Merci beaucoup, ça m'imprime bien en orientation paysage, mais je n'arrive
pas à donner d'autres caractéristique comme :
ajuster pourimprimer une page
centrer horizontalement...

et je ne comprends pas pourquoi, ça imprime le quadrillage et les colonnes
(A, B..) et les lignes (1,2...)

Merci de m'aider à comprendre le détail de cette écriture


Bonjour.
Ce n'est pas directement possible. Il y a une bidouille citée par Tom
Olgivy
et originellement ppostée par Orlando Magalhães Filho. Elle consiste à
copier l'image de l'userform dans un classeur temporaire, mettre celui-ci
en
mode paysage et à l'imprimer :

Dans un module :

Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As
Long)

Public Const VK_SNAPSHOT = &H2C

Sub Test()
UserForm1.Show
End Sub

Dans le code de l'userform (ici un bouton impression) :

Private Sub CommandButton1_Click()
keybd_event VK_SNAPSHOT, 0, 0, 0
Workbooks.Add
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:úlse,
DisplayAsIcon:úlse
ActiveSheet.Range("A1").Select
Activesheet.PageSetup.Orientation = xlLandscape
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close False
End Sub

Cordialement.
Daniel
"delphineR" a écrit dans le message
de
news:
Bonjour,

A l'aide d'un bouton j'arrive à imprimer un userform mais je n'arrive
pas
à
définir des caractéristiques de mise en page telles que l'orientation
en
paysage

D'avance merci pour votre aide









Avatar
delphineR
Bonjour,

j'y suis arrivé : copie d'écran avec mise en page paysage, ajuster sur une
page

Merci pour votre aide

ci-dessous code VBA pour info :

Private Sub Imprim_Click()
Dim BookName As String

keybd_event VK_SNAPSHOT, 0, 0, 0
Workbooks.Add
Application.DisplayFullScreen = True ' plein écran
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:úlse,
DisplayAsIcon:úlse
ActiveSheet.Range("A1").Select
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.CenterHorizontally = True
.CenterVertically = True
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Application.DisplayFullScreen = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close False

End Sub



C'est pas l'Amérique, mais c'est tout ce que je sais faire...

Private Sub CommandButton1_Click()
keybd_event VK_SNAPSHOT, 0, 0, 0
Workbooks.Add
Application.DisplayFullScreen = True
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
End With
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:úlse,
DisplayAsIcon:úlse
ActiveSheet.Range("A1").Select
With ActiveSheet.PageSetup
.Orientation = xlLandscape
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close False
End Sub

Daniel
"delphineR" a écrit dans le message de
news:
Merci beaucoup, ça m'imprime bien en orientation paysage, mais je n'arrive
pas à donner d'autres caractéristique comme :
ajuster pourimprimer une page
centrer horizontalement...

et je ne comprends pas pourquoi, ça imprime le quadrillage et les colonnes
(A, B..) et les lignes (1,2...)

Merci de m'aider à comprendre le détail de cette écriture


Bonjour.
Ce n'est pas directement possible. Il y a une bidouille citée par Tom
Olgivy
et originellement ppostée par Orlando Magalhães Filho. Elle consiste à
copier l'image de l'userform dans un classeur temporaire, mettre celui-ci
en
mode paysage et à l'imprimer :

Dans un module :

Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As
Long)

Public Const VK_SNAPSHOT = &H2C

Sub Test()
UserForm1.Show
End Sub

Dans le code de l'userform (ici un bouton impression) :

Private Sub CommandButton1_Click()
keybd_event VK_SNAPSHOT, 0, 0, 0
Workbooks.Add
Application.Wait Now + TimeValue("00:00:01")
ActiveSheet.PasteSpecial Format:="Bitmap", Link:úlse,
DisplayAsIcon:úlse
ActiveSheet.Range("A1").Select
Activesheet.PageSetup.Orientation = xlLandscape
ActiveWindow.SelectedSheets.PrintOut Copies:=1
ActiveWorkbook.Close False
End Sub

Cordialement.
Daniel
"delphineR" a écrit dans le message
de
news:
Bonjour,

A l'aide d'un bouton j'arrive à imprimer un userform mais je n'arrive
pas
à
définir des caractéristiques de mise en page telles que l'orientation
en
paysage

D'avance merci pour votre aide