OVH Cloud OVH Cloud

Impression d'un userfor

3 réponses
Avatar
Wallace
Salut à tous,

Je souhaite imprimer un userform et je ne sait comment faire !!!

HEEEEELLLLLLPPPPP !!!!!

@ +

Wallace

3 réponses

Avatar
Denis Michon
Bonjour Wallace,


Voici un message de Michel Perron sur le sujet paru sur ce forum :


'----------------------------------------
Avec la méthode PrintForm, tout est prédéfini et tu ne peux avoir aucune
action sur les différents paramètres; l'objet Printer n'étant pas utilisable
dans VBA.
L'idée pour contourner le problème est la suivante:
Utiliser les options d'impression d'Excel lui même en collant l'image de
l'UserForm dans un nouveau classeur au travers du presse-papiers;
malheureusement, la méthode SendKeys ne peut pas être utilisée pour
effectuer cette opération car pour une raison qui m'échappe (peut être
parceque Excel gère son propre presse-papiers), la touche Impression écran
n'est pas gérée par SendKeys.
Pour contourner ce problème, on va utiliser une fonction API.
Je suppose que l'impression de ton UserForm est déclenchée par un bouton
présent sur cet UserForm, auquel cas, je te propose d'associer la procédure
suivante à ce bouton.

En tête du module de ton UserForm: 'La plus complète

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

' La procédure d'impression de l'UserForm:
Private Sub PrintUserForm()
Dim BookName As String

Application.CutCopyMode = False
EmptyClipboard
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
'----------------------------------------


Salutations!


"Wallace" a écrit dans le message de news:bn3itq$p6a$
Salut à tous,

Je souhaite imprimer un userform et je ne sait comment faire !!!

HEEEEELLLLLLPPPPP !!!!!

@ +

Wallace
Avatar
Wallace
Salut,

Merci de ton aide

Une petite présicion concernant mon problème.
l'impression que je souhaite déclenché n'est pas par un bouton sur le
Userform..

En fait j'ai ma feuille de calcul.
J'ai crée un Userform "legende".
Je voudrais que lorsque j'imprime ma feuille mon Userform legende soit
intégré dans l'imression de ma feuille.
En résumé je déclenche l'ouverture de mon Userform legende par un bouton, je
le place sur ma feuille de calcul et je lance un CTRL + P pour imprimer ma
feuille.
Et sur ma feuille imprimé je voudrais que mon userform soit imprimé
aussi....

Merci à tous pour vos solutions....
"Denis Michon" a écrit dans le message de news:
nrelb.8849$
Bonjour Wallace,


Voici un message de Michel Perron sur le sujet paru sur ce forum :


'----------------------------------------
Avec la méthode PrintForm, tout est prédéfini et tu ne peux avoir aucune
action sur les différents paramètres; l'objet Printer n'étant pas
utilisable

dans VBA.
L'idée pour contourner le problème est la suivante:
Utiliser les options d'impression d'Excel lui même en collant l'image de
l'UserForm dans un nouveau classeur au travers du presse-papiers;
malheureusement, la méthode SendKeys ne peut pas être utilisée pour
effectuer cette opération car pour une raison qui m'échappe (peut être
parceque Excel gère son propre presse-papiers), la touche Impression écran
n'est pas gérée par SendKeys.
Pour contourner ce problème, on va utiliser une fonction API.
Je suppose que l'impression de ton UserForm est déclenchée par un bouton
présent sur cet UserForm, auquel cas, je te propose d'associer la
procédure

suivante à ce bouton.

En tête du module de ton UserForm: 'La plus complète

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

' La procédure d'impression de l'UserForm:
Private Sub PrintUserForm()
Dim BookName As String

Application.CutCopyMode = False
EmptyClipboard
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
'----------------------------------------


Salutations!


"Wallace" a écrit dans le message de
news:bn3itq$p6a$

Salut à tous,

Je souhaite imprimer un userform et je ne sait comment faire !!!

HEEEEELLLLLLPPPPP !!!!!

@ +

Wallace





Avatar
Denis Michon
Bonjour Wallace,

Le principe de la procédure de Michel Perron, est de copier une image du formulaire dans une nouvelle feuille de calcul
et d'imprimer cette image. Si tu veux joindre cette image à une feuille déjà existante, tu peux ajouter quelques lignes
de code dans la procédure pour prendre l'image obtenu par la copie du formulaire et la copier dans la feuille dont tu
veux lancer l'impression.

Tu désactive cette ligne de code : Application.ScreenUpdating = False

et tu exécutes le code pas à pas.

Après que l'exécution pas à pas ait lu cette ligne de code,
Workbooks(BookName).Sheets(1).Paste

Tu arrête la macro. Et avec l'enregistreur de macro, tu fais les manipulations nécessaires pour copier à nouveau l'image
de ton graphe vers ta feuille de calcul. Tu insères dans la procédure de Michel le code obtenu où tu as arrêté la macro.

Voilà.

Amuse-toi bien !


Salutations!


"Wallace" a écrit dans le message de news:bn5es1$jck$
Salut,

Merci de ton aide

Une petite présicion concernant mon problème.
l'impression que je souhaite déclenché n'est pas par un bouton sur le
Userform..

En fait j'ai ma feuille de calcul.
J'ai crée un Userform "legende".
Je voudrais que lorsque j'imprime ma feuille mon Userform legende soit
intégré dans l'imression de ma feuille.
En résumé je déclenche l'ouverture de mon Userform legende par un bouton, je
le place sur ma feuille de calcul et je lance un CTRL + P pour imprimer ma
feuille.
Et sur ma feuille imprimé je voudrais que mon userform soit imprimé
aussi....

Merci à tous pour vos solutions....
"Denis Michon" a écrit dans le message de news:
nrelb.8849$
Bonjour Wallace,


Voici un message de Michel Perron sur le sujet paru sur ce forum :


'----------------------------------------
Avec la méthode PrintForm, tout est prédéfini et tu ne peux avoir aucune
action sur les différents paramètres; l'objet Printer n'étant pas
utilisable

dans VBA.
L'idée pour contourner le problème est la suivante:
Utiliser les options d'impression d'Excel lui même en collant l'image de
l'UserForm dans un nouveau classeur au travers du presse-papiers;
malheureusement, la méthode SendKeys ne peut pas être utilisée pour
effectuer cette opération car pour une raison qui m'échappe (peut être
parceque Excel gère son propre presse-papiers), la touche Impression écran
n'est pas gérée par SendKeys.
Pour contourner ce problème, on va utiliser une fonction API.
Je suppose que l'impression de ton UserForm est déclenchée par un bouton
présent sur cet UserForm, auquel cas, je te propose d'associer la
procédure

suivante à ce bouton.

En tête du module de ton UserForm: 'La plus complète

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

' La procédure d'impression de l'UserForm:
Private Sub PrintUserForm()
Dim BookName As String

Application.CutCopyMode = False
EmptyClipboard
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
'----------------------------------------


Salutations!


"Wallace" a écrit dans le message de
news:bn3itq$p6a$

Salut à tous,

Je souhaite imprimer un userform et je ne sait comment faire !!!

HEEEEELLLLLLPPPPP !!!!!

@ +

Wallace