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

  • Initiateur de la discussion Initiateur de la discussion marc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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 ...
 
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!!!!
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour