Comment Adapter l'impression à la taille d'une feuille ?

Le
Bartez
Bonjour à tous,

Je cherche un peu partout le truc qui me permettrait d'imprimer un
formulaire tout en l'adaptant à la largeur d'une feuille d'impression comme
le fait très bien Excel quant on sélectionne l'option "Ajuster à 1 page en
largeur".

Actuellement j'utilise la commande toute simple
UserFormPerso.PrintForm
mais malheureusement j'ai une partie qui est tronquée :(

Merci pour votre aide et vos idées

@+
Bartez
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
lSteph
Le #3671201
Bonjour,

Avant d'appeler
UserFormPerso.PrintForm


essaie mettre ceci dans le code du Userform tout en haut :
'******
Private Declare Function GetDC Lib "User32" (ByVal hWnd As Long) As Long

Private Declare Function GetDeviceCaps Lib "Gdi32" (ByVal hdc As Long, _
ByVal nIndex As Long) As Long

Private Declare Function ReleaseDC Lib "User32" (ByVal hWnd As Long, _
ByVal hdc As Long) As Long
'****
'**et ceci dans l'initialize**
Private Sub UserForm_Initialize()
Dim DC As Long
DC = GetDC(0)
Me.Width = 20 + (GetDeviceCaps(DC, 8) / GetDeviceCaps(DC, 88) * 72)
Me.Height = GetDeviceCaps(DC, 10) / GetDeviceCaps(DC, 90) * 72
ReleaseDC 0, DC


End Sub

"Bartez"
Bonjour à tous,

Je cherche un peu partout le truc qui me permettrait d'imprimer un
formulaire tout en l'adaptant à la largeur d'une feuille d'impression
comme le fait très bien Excel quant on sélectionne l'option "Ajuster à 1
page en largeur".

Actuellement j'utilise la commande toute simple
UserFormPerso.PrintForm
mais malheureusement j'ai une partie qui est tronquée :(

Merci pour votre aide et vos idées

@+
Bartez




Bartez
Le #3671191
Salut lSteph,

Merci de ton aide !
Je vais essayer ton code, mais franchement pour moi c'est du chinois, j'y
comprend vraiment rien ;-)

Pourais-tu expliquer un peu tes quelques lignes par des commentaires ?

Merci
Bartez

"lSteph"
Bonjour,

Avant d'appeler
UserFormPerso.PrintForm


essaie mettre ceci dans le code du Userform tout en haut :
'******
Private Declare Function GetDC Lib "User32" (ByVal hWnd As Long) As Long

Private Declare Function GetDeviceCaps Lib "Gdi32" (ByVal hdc As Long, _
ByVal nIndex As Long) As Long

Private Declare Function ReleaseDC Lib "User32" (ByVal hWnd As Long, _
ByVal hdc As Long) As Long
'****
'**et ceci dans l'initialize**
Private Sub UserForm_Initialize()
Dim DC As Long
DC = GetDC(0)
Me.Width = 20 + (GetDeviceCaps(DC, 8) / GetDeviceCaps(DC, 88) * 72)
Me.Height = GetDeviceCaps(DC, 10) / GetDeviceCaps(DC, 90) * 72
ReleaseDC 0, DC


End Sub

"Bartez"
Bonjour à tous,

Je cherche un peu partout le truc qui me permettrait d'imprimer un
formulaire tout en l'adaptant à la largeur d'une feuille d'impression
comme le fait très bien Excel quant on sélectionne l'option "Ajuster à 1
page en largeur".

Actuellement j'utilise la commande toute simple
UserFormPerso.PrintForm
mais malheureusement j'ai une partie qui est tronquée :(

Merci pour votre aide et vos idées

@+
Bartez








Bartez
Le #3671181
Salut lSteph,

Je viens de tester ton code et j'ai pu constater qu'il permettait d'adapter
la taille du formulaire à la taille de l'écran. mais à l'impression c'est
toujours pareil, j'en ai une partie qui est tronquée.

Ce que je recherche c'est de l'aisser le formulaire dans l'état,mais
simplement de le faire apparaitre en entier à l'impression.

Si tu as une autre idée ;-)
Merci en core pour ton aide!

@+
Bartez

"lSteph"
Bonjour,

Avant d'appeler
UserFormPerso.PrintForm


essaie mettre ceci dans le code du Userform tout en haut :
'******
Private Declare Function GetDC Lib "User32" (ByVal hWnd As Long) As Long

Private Declare Function GetDeviceCaps Lib "Gdi32" (ByVal hdc As Long, _
ByVal nIndex As Long) As Long

Private Declare Function ReleaseDC Lib "User32" (ByVal hWnd As Long, _
ByVal hdc As Long) As Long
'****
'**et ceci dans l'initialize**
Private Sub UserForm_Initialize()
Dim DC As Long
DC = GetDC(0)
Me.Width = 20 + (GetDeviceCaps(DC, 8) / GetDeviceCaps(DC, 88) * 72)
Me.Height = GetDeviceCaps(DC, 10) / GetDeviceCaps(DC, 90) * 72
ReleaseDC 0, DC


End Sub

"Bartez"
Bonjour à tous,

Je cherche un peu partout le truc qui me permettrait d'imprimer un
formulaire tout en l'adaptant à la largeur d'une feuille d'impression
comme le fait très bien Excel quant on sélectionne l'option "Ajuster à 1
page en largeur".

Actuellement j'utilise la commande toute simple
UserFormPerso.PrintForm
mais malheureusement j'ai une partie qui est tronquée :(

Merci pour votre aide et vos idées

@+
Bartez








lSteph
Le #3671151
Re,
Je ne sais pas si cela résoudra ton pb mais cet api windows permet d'ajuster
une fenêtre à la taille de l'écran.
width indique la largeur height la hauteur.
J'ai juste oublié d'enlever ceci 20+ issu de l'adaptation qui me convenait
Donc remplacer ceci
Me.Width = 20 + (GetDeviceCaps(DC, 8) / GetDeviceCaps(DC, 88) * 72)
par
Me.Width = GetDeviceCaps(DC, 8) / GetDeviceCaps(DC, 88) * 72

Sinon en complément pour ton souci d'impression peut-être adapter le zoom
ex:
Me.Zoom = Me.Zoom * 60 / 100

'lSteph



"Bartez"
Salut lSteph,

Merci de ton aide !
Je vais essayer ton code, mais franchement pour moi c'est du chinois, j'y
comprend vraiment rien ;-)

Pourais-tu expliquer un peu tes quelques lignes par des commentaires ?

Merci
Bartez

"lSteph"
Bonjour,

Avant d'appeler
UserFormPerso.PrintForm


essaie mettre ceci dans le code du Userform tout en haut :
'******
Private Declare Function GetDC Lib "User32" (ByVal hWnd As Long) As Long

Private Declare Function GetDeviceCaps Lib "Gdi32" (ByVal hdc As Long, _
ByVal nIndex As Long) As Long

Private Declare Function ReleaseDC Lib "User32" (ByVal hWnd As Long, _
ByVal hdc As Long) As Long
'****
'**et ceci dans l'initialize**
Private Sub UserForm_Initialize()
Dim DC As Long
DC = GetDC(0)
Me.Width = 20 + (GetDeviceCaps(DC, 8) / GetDeviceCaps(DC, 88) * 72)
Me.Height = GetDeviceCaps(DC, 10) / GetDeviceCaps(DC, 90) * 72
ReleaseDC 0, DC


End Sub

"Bartez"
Bonjour à tous,

Je cherche un peu partout le truc qui me permettrait d'imprimer un
formulaire tout en l'adaptant à la largeur d'une feuille d'impression
comme le fait très bien Excel quant on sélectionne l'option "Ajuster à 1
page en largeur".

Actuellement j'utilise la commande toute simple
UserFormPerso.PrintForm
mais malheureusement j'ai une partie qui est tronquée :(

Merci pour votre aide et vos idées

@+
Bartez












Bartez
Le #3671101
Ok, merci lSteph, j'en comprends un peu plus ;-)
Je vais gratter dessus maintenant.

Bonne journée à toi
Bartez

"lSteph" O%
Re,
Je ne sais pas si cela résoudra ton pb mais cet api windows permet
d'ajuster une fenêtre à la taille de l'écran.
width indique la largeur height la hauteur.
J'ai juste oublié d'enlever ceci 20+ issu de l'adaptation qui me convenait
Donc remplacer ceci
Me.Width = 20 + (GetDeviceCaps(DC, 8) / GetDeviceCaps(DC, 88) * 72)
par
Me.Width = GetDeviceCaps(DC, 8) / GetDeviceCaps(DC, 88) * 72

Sinon en complément pour ton souci d'impression peut-être adapter le
zoom
ex:
Me.Zoom = Me.Zoom * 60 / 100

'lSteph



"Bartez"
Salut lSteph,

Merci de ton aide !
Je vais essayer ton code, mais franchement pour moi c'est du chinois,
j'y comprend vraiment rien ;-)

Pourais-tu expliquer un peu tes quelques lignes par des commentaires ?

Merci
Bartez

"lSteph"
Bonjour,

Avant d'appeler
UserFormPerso.PrintForm


essaie mettre ceci dans le code du Userform tout en haut :
'******
Private Declare Function GetDC Lib "User32" (ByVal hWnd As Long) As Long

Private Declare Function GetDeviceCaps Lib "Gdi32" (ByVal hdc As Long, _
ByVal nIndex As Long) As Long

Private Declare Function ReleaseDC Lib "User32" (ByVal hWnd As Long, _
ByVal hdc As Long) As Long
'****
'**et ceci dans l'initialize**
Private Sub UserForm_Initialize()
Dim DC As Long
DC = GetDC(0)
Me.Width = 20 + (GetDeviceCaps(DC, 8) / GetDeviceCaps(DC, 88) * 72)
Me.Height = GetDeviceCaps(DC, 10) / GetDeviceCaps(DC, 90) * 72
ReleaseDC 0, DC


End Sub

"Bartez"
Bonjour à tous,

Je cherche un peu partout le truc qui me permettrait d'imprimer un
formulaire tout en l'adaptant à la largeur d'une feuille d'impression
comme le fait très bien Excel quant on sélectionne l'option "Ajuster à
1 page en largeur".

Actuellement j'utilise la commande toute simple
UserFormPerso.PrintForm
mais malheureusement j'ai une partie qui est tronquée :(

Merci pour votre aide et vos idées

@+
Bartez
















Poster une réponse
Anonyme