Bonsoir le chat voici ma derniere mouture de ma fonction PrintFormX pour imprimer full page , j'ai utiliser une autre methode et je n'ai plus de soucis a me faire avec les sauts de page verticaux ou horizontaux recalcitrants je me permet même mon propre zoom en utilisant un pourcentage tiens voila la bête;;;;;'*****************************************************************************************************' ___ _ _______ __ _ ____ _ _ _______ ___ _ _ _ ___ _ _.' // \\ /\\ // // \\ // // // // // // \\ // // // // \\ //| //' //___// //__\ // //__// // // //__// // // // // // // // // // | //' // // \\ // // \\ // // // \\ // // // // // // // // // | //'// // // // // // // //___ // \\ // \\__// //__// //___ \\__// // |//'****************************************************************************************************'Fonction pour imprimer ou exporter la capture d'un userform en pleine page'quelque soit sa taille'auteur: patricktoulon'version 4.0''préambule'Dans cette Version 4.0,' on ne s'occupe plus du Zoom d'impression on en a plus besoin ( Ni celui de la feuille d'ailleurs )' on ne s'ocupe plus des saut de pages on en a plus besoin( car il n'y en a plus )' on utilisera les fonctions natives d'impression dans le pagesetup'Dans ce nouveau principe :'1° Nous allons créer une feuille''2° Dans cette feuille nous allons considérer une plage au même ratio que le format A4' La formule est simple la plage sera A1.resize( 29.7/hauteur de A1 , 21/largeur de A1)' Bien sur on inverse selon l'userform si il est plus haut que large(orientation)'3° Determiner le page setup avec l'adress de la plage' Mettre toute les margeS à zero ainsi que le header et footer' On va utiliser les deux fit...' On maitrise la couleur qui est une option' Et on centre''4° On colle la capture''5° On dimensionne et centre la shape en fonction de la plage et du pourcentage demandé''6° Option de destination destination' En fichier pdf' Apercu avant impression' Impression''La fonction' Arguments' uf As Object 'pour l'object userform' Optional nomFichierPDF As String = "" 'chemin pour la sortie en pdf' Optional BlackAndWhite As Boolean = False 'en couleur ou noir et blanc' Optional percentpage As Double = 100 'pourcentage de 0 à 100 de la page pour la capture' Optional lpreview As Boolean = False) As Boolean 'apercu avant impression#If VBA7 Then Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)#Else Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)#End IfSub snapshotForm() keybd_event &H12, 0, 0, 0 keybd_event &H2C, 0, 0, 0 keybd_event &H2C, 0, &H2, 0 keybd_event &H12, 0, &H2, 0 DoEventsEnd SubPublic Function PrintFormX( _ uf As Object, _ Optional nomFichierPDF As String = "", _ Optional BlackAndWhite As Boolean = False, _ Optional percentpage As Double = 100, _ Optional lpreview As Boolean = False) As Boolean Dim ws As Worksheet, shp As Shape, RnG As Range, w#, H# snapshotForm 'CAPTURE uf.Hide Set ws = Sheets.Add DoEvents 'determine la largeur en point pour le format A4 et l'orientation If uf.Width > uf.Height Then ws.PageSetup.Orientation = xlLandscape w = Application.CentimetersToPoints(29.7) H = Application.CentimetersToPoints(21) Else ws.PageSetup.Orientation = xlPortrait w = Application.CentimetersToPoints(21) H = Application.CentimetersToPoints(29.7) End If 'creation d'une plage(Rng) au ratio A4 directement!!!!!!!! Set RnG = ws.[A1].Resize(H / ws.[A1].Height, w / ws.[A1].Width) 'le page setup on met tout a zero(marge et header),on centre et on fit tout simplement With ws.PageSetup .PaperSize = xlPaperA4 .PrintArea = RnG.Address .FitToPagesWide = 1 .FitToPagesTall = 1 .LeftMargin = 0 .RightMargin = 0 .TopMargin = 0 .BottomMargin = 0 .HeaderMargin = 0 .FooterMargin = 0 .Zoom = False 'pas de zoom .CenterHorizontally = True .CenterVertically = True .BlackAndWhite = BlackAndWhite .ScaleWithDocHeaderFooter = True .Draft = False End With 'on colle la capture ws.Paste 'on place et dimentionne la shape(capture) With ws.Shapes(1) .Width = RnG.Width * (percentpage / 100) If .Height > RnG.Height Then .Height = RnG.Height * (percentpage / 100) .Left = (RnG.Width - .Width) / 2 .Top = (RnG.Height - .Height) / 2 End With 'JUSTE pour la demo on affiche le mode avec saut de page ActiveWindow.View = xlPageBreakPreview 'destination If nomFichierPDF <> "" Then 'en pdf ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nomFichierPDF, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False Else 'si preview demandé If lpreview Then ws.PrintPreview Else 'sinon on imprime tout court ws.PrintOut End If End If 'on supprime la feuille on en a plus besoin Application.DisplayAlerts = False 'ws.Delete Application.DisplayAlerts = False uf.Show 0 End Function