format impression UserForm

B

Ben

Guest
Salut à tous!

Voila mon probleme:

J'ai un userForm de la taille d'une fenetre classique (genre impression), et je lance son impression par :

UserForm.PrintForm

A partir d'un bouton sur le UserForm. Mais il ne s'imprime qu'en haut à gauche de la page! Moi je voudrais qu'il s'imprime en milieu de page!

Ca fait 2,3 jours que je cherche sur tous les sites et forums et personne ne me repond!!

Comment fait-on pour definir l'impression d'un UserForm? Est-ce possible?

Merci a ceux qui repondront.
 
T

Thierry

Guest
Salut ben,

Oui j'ai vu ton post du 29 sur le MPFE... As-tu regardé les sites des grands Maîtres que sont Laurent Longre et Frédéric Sigonneau comme on te l'a conseillé...

As-tu testé la soluce de Michel Pierron ?

Moi je n'imprime jamais de Userform... Je pense qu'ils ne doivent servir qu'à l'inter-activité entre le user et mes applis... Si il faut imprimer quelque chose, je fait un report sur une feuille qui, elle, peut être imprimée avec toutes les facilités d'option sous VBA...

Enfin c'est toi qui voit...

Bon Courage
@+Thierry
 
V

Vériland

Guest
Salut Ben,

hier je travaillais sur une feuille de gestion et à l’impression du tableau il m’avait tout simplement imprimé le UserForm en plein milieu de la page ?? il faut que je remette la main dessus la solution est peut-être là ! le temps de chercher…

A+ Vériland
 
B

Ben

Guest
Bon ben en fait, la réponse de Michel Pierron je ne la trouve pas!

Moi il me semblait n'avoir qu'une réponse à ma question, et dans laquelle on me parle juste de changer l'imprimante active....

Donc je vais chercher encore pour voir si je la trouve!

Sinon, je commence à croire que je vais suivre ton conseil Thierry!! A moins que VériLand retrouve son fichier avec le code magique!! ;)

En tout cas merci.

@+
 
V

Vériland

Guest
Salut Ben,

Alors j’ai fait des recherches, dans mon Historique, dans ma corbeille et j’ai enfin remis la main sur le fameux fichier…

la nouvelle, c’est qu’effectivement l’UserForm s’imprime mais pas précisément au milieu de la page… ce sont les mêmes paramètres que tu donnes (UserForm.PrintForm)… le mien occupe réellement la largeur de la feuille car sa taille correspond à celle ci… j’ai essayé en modifiant les marges de page mais rien y fait, toujours pareille… donc je n’ai pas la formule magique à ta question…

Désolé de t’avoir fait perdre du temps...

A+ Vériland
 
B

Ben

Guest
C pas grave! je vais me debrouiller autrement!

Le probleme C que la solution de mettre les donnees du UserForm sur une feuille ne correspond pas tout à fait à ce que je voulais faire...mais bon :'(

Merci a vous deux en tout cas!
 
B

Ben

Guest
PS : Je me permets d'ajouter une petite question subsidiaire meme si ca detourne un peu le sujet!

Dans le meme genre de UserForm, l'utilisateur doit saisir des chiffres, qui peuvent etre décimaux. Et malgré des parametres reconnaissant le point comme virgule, malgré aussi un bidouillage qui met dans une cellule la valeur recuperee, puis la reprend a partir de la cellule dans Excel pour faire des calculs dans le code, il est impossible de saisir un point comme separateur sans le planter!!

Alors j'ai essayé de faire un Mid() sur le champ utilisateur mais je ne comprend pas pourquoi ca ne marche pas!!

Alors si vous pouviez m'aider la-dessus ca simplifierait bien mes codes!!!

Merci encore et @+
Ben.
 
T

Thierry

Guest
Re Ben

Dans un premier temps, voici le post en réponse à ta question dans le MPFE : (je pensais pas que je finirais facteur un jour ! lol)
===================================================

From: Michel Pierron (michel.pierron@free.fr)
Subject: Re: imprimer un userform
Newsgroups: microsoft.public.fr.excel
Date: 2002-10-29 14:20:09 PST


Salut Ben;
Comme je l'ai déjà dis dans un précédent post, tu n'as aucune action sur les
paramètres de l'imprimante en utilisant PrintForm, l'objet Printer n'étant
pas disponible dans VBA. L'idée est de coller l'image de l'userform dans un
nouveau classeur au travers du presse-papiers et de détruire ce classeur
après impression.
Dans le module de ton userform, tu transpose les lignes suivantes:

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

Private Sub CommandButton2_Click()
' Ici ton code

PrintUserForm
End Sub

Private Sub PrintUserForm()
Dim BookName As String

Me.Repaint '* Relâche le bouton avant l'impression
keybd_event vbKeySnapshot, 0, 0&, 0&
Application.ScreenUpdating = False
Workbooks.Add
BookName = ActiveWorkbook.Name
ActiveWindow.Visible = False
Workbooks(BookName).Sheets(1).Paste
With Workbooks(BookName).Sheets(1).PageSetup
.RightFooter = Me.Caption & " Le &D Page &P/&N"
.PrintGridlines = False
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlPortrait '* Vertical
'.Orientation = xlLandscape '* Horizontal
.PaperSize = xlPaperA4
.Zoom = 100 '* Mettre en remarque si impression ajustée
' * Ajuste l'impression (largeur & hauteur)
'.Zoom = False
'.FitToPagesWide = 1
'.FitToPagesTall = 1
End With
Application.ScreenUpdating = True
Windows(BookName).SelectedSheets.PrintOut Copies:=1
Workbooks(BookName).Close False
End Sub
===================================================

Je n'ai pas testé, car je n'en ai pas besoin... Mais tiens nous au courant et si çà marche tiens aussi son auteur informé (çà fait toujours plaisir)

Bon je vais voir ce aue je peux faire pour ta question "subsidiaire"...

@+Thierry
 
B

Ben

Guest
Bon ben je fais des essais mais ca marche pas super!!

Au début il me sortait toutes mes pages de codes! Puis j'ai changé le Me.Repaint par le nom de ma UserForm et la il m'imprime l'image de mon Userform mais avec le feuille derrière!! Bref C la m...

Tant pis et merci à toi Thierry! puis aussi à Michel Pierron!!
 

Discussions similaires