imprimer; aidez moi svp je suis désespéré!!!!!!

M

marc

Guest
Bonjour tous,

Mon 1er message sur ce forum ne c'est pas avérer très efficace...

Donc je repose la question, merci de me répondre même si c'est par la négative... pour que j'arrête de chercher au moins.
Il est impossible de modifier les options de mise en page avant impresson d'un userform? car je souhaite imprimer un userform mais en format paysage!

SVP je suis désespéré!!!!!!!!!

marc
 
J

jmt0

Guest
Salut,

tu lance ca juste avant (filtre tous ce qui te sert a rien)

Sub Macro1()
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.787401575)
.RightMargin = Application.InchesToPoints(0.787401575)
.TopMargin = Application.InchesToPoints(0.984251969)
.BottomMargin = Application.InchesToPoints(0.984251969)
.HeaderMargin = Application.InchesToPoints(0.4921259845)
.FooterMargin = Application.InchesToPoints(0.4921259845)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 1200
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait -----------> C'est la
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
End With
End Sub

Cette macro en fait vraiment beaucoup plus que ce que tu demande (elle permet de modifier toute la mise en page en fait), mais je te la donne tel quel, comme ca si tu veut modifer d'autre element au passage, tu pourrat.

Si je te donne pas les éléments qui t'interesse je vais encore me faire tapper sur les doigts. Donc tu as:
.Orientation = xlPortrait (portrait)
.Orientation = xlLandscape (paysage)


PS: merci de ne pas me repondre par mail merci
 
S

SpaceFrog

Guest
Le user form à des limites en particulier sur la largeur, tu ne pourras pas atteindre le 29,7 cm en largeur, je te recommenderais de passer par un picturebox éventuellement, c'est à dire de reconstituer ta page à imprimer dans un picturebox en visible false, puis d'imprimer le picturebox...
Sinon il reste l'objet printer qui une fois que l'on a saisi le truc n'est pas si compliqué que ça ...
 
M

marc

Guest
SAlut,

le code: printer.orientation = ... ne marche pas, le programme bug.

Et ton idée d'imprimer dans un picturebox ou avec l'objet printer n'est pas très claire pour moi... tu arrive à m'envoyer un exemple svp?

MERCI BEAUCOUP de ton aide!!!!
 
S

SpaceFrog

Guest
Ben dans ton userform tu colles un picturebox en visible false au format A4R
tu mets le scale mode en cm et tu definit la hauteur et la largeur soit au format 29.7 x 21 ou moins en fonction des marges d'impression...

ensuite tu remplis ton picturebox avec une boucle par exemple:

for each control in Myuserform.controls
'et ici tu les bascule un a un dans le picturebox avec leur top, left value etc...
next


puis tu imprimes ton picbox:

printer.paintpicture Picturebox.image,coordX,coordY

avec coordX et coordY = 0,0
de cette façon tu utilises lobjet printer pour imprimer l'image contenue dans le picture box...

Sinon tu peux utiliser l'objet printer diretement en y construisant directement la page...
Ci-joint un exemple de code que tu dois pouvoir modifier en changeant les dimensions, le sens d'impression et le facteur zoom...

Option Explicit

Private Sub Command1_Click()

Const FacEch! = 1.5
Dim ContImprim As Control

Printer.ScaleMode = 6
Printer.Orientation = 2
Printer.PaperSize = 9
Printer.PrintQuality = -4
For Each ContImprim In Me.Controls
If TypeOf ContImprim Is Label Then
With Printer
.FontName = ContImprim.FontName
.FontBold = ContImprim.FontBold
.FontSize = FacEch * ContImprim.FontSize
.CurrentX = ContImprim.Left * FacEch
.CurrentY = ContImprim.Top * FacEch
End With
Printer.Print ContImprim.Caption
ElseIf TypeOf ContImprim Is TextBox Then
With Printer
.FontName = ContImprim.FontName
.FontBold = ContImprim.FontBold
.FontSize = FacEch * ContImprim.FontSize
.CurrentX = ContImprim.Left * FacEch
.CurrentY = ContImprim.Top * FacEch
End With
Printer.Print ContImprim.Text
ElseIf TypeOf ContImprim Is CheckBox Then
Printer.Line (ContImprim.Left * FacEch, ContImprim.Top * FacEch)-Step(7, 7), , B
If ContImprim.Value = 1 Then
Printer.Line (ContImprim.Left * FacEch, ContImprim.Top * FacEch)-Step(7, 7)
Printer.Line ((ContImprim.Left * FacEch) + 7, ContImprim.Top * FacEch)-Step(-7, 7)
End If
With Printer
.FontName = ContImprim.FontName
.FontBold = ContImprim.FontBold
.FontSize = ContImprim.FontSize * FacEch
.CurrentX = ContImprim.Left * FacEch + 10
.CurrentY = ContImprim.Top * FacEch + 2
End With
Printer.Print ContImprim.Caption
ElseIf TypeOf ContImprim Is MSFlexGrid Then
With Printer
.CurrentX = ContImprim.Left * FacEch
.CurrentY = ContImprim.Top * FacEch
End With
Printer.PaintPicture ContImprim.Picture, Printer.CurrentX, Printer.CurrentY
End If
Next
Printer.Line (Balise(0).X1 * FacEch, Balise(0).Y1 * FacEch)-(Balise(1).X2 * FacEch, Balise(1).Y2 * FacEch), , B
Printer.Line (Balise(0).X1 * FacEch, Balise(0).Y1 * FacEch)-(Balise(2).X2 * FacEch, Balise(2).Y2 * FacEch), , B
Printer.EndDoc

End Sub
 

Discussions similaires

Réponses
3
Affichages
2 K

Statistiques des forums

Discussions
312 332
Messages
2 087 361
Membres
103 530
dernier inscrit
Chess01