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
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" <cbolmont@ch-dreux.fr> a écrit dans le message de
news:bn3itq$p6a$1@s1.read.news.oleane.net...
Salut à tous,
Je souhaite imprimer un userform et je ne sait comment faire !!!
HEEEEELLLLLLPPPPP !!!!!
@ +
Wallace
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
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
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" <cbolmont@ch-dreux.fr> a écrit dans le message de
news:bn3itq$p6a$1@s1.read.news.oleane.net...
Salut à tous,
Je souhaite imprimer un userform et je ne sait comment faire !!!
HEEEEELLLLLLPPPPP !!!!!
@ +
Wallace
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