Bonjour

pour imprimer un écran (formulaire) vers un fichier PDF j'utilise (vu dans FAQ)

L'image du UserForm est automatiquement placée dans le coin supérieur gauche de la page imprimée.


Il n'existe pas d'option pour centrer ou repositionner l'impression. La seule solution palliative consiste à faire une copie d'écran de la boîte de dialogue. Ensuite vous faites un collage dans la feuille de calcul en tant qu'image, pour la manipuler à votre guise.

Cet exemple imprime l'UserForm centré dans la page:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Option Explicit
 
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 CommandButton1_Click()
    Dim Ws As Worksheet
 
    'Copie d'écran de la forme active
    keybd_event vbKeySnapshot, 1, 0&, 0&
    DoEvents
 
    'Ajoute une feuille pour coller l'image de la forme
    Set Ws = Sheets.Add
    Ws.Paste
 
    'impression centrée dans la page
    With Ws
        .PageSetup.CenterHorizontally = True
        .PageSetup.CenterVertically = True
        .PrintOut
    End With
End Sub

mais je souhaite :
paramétrer le chemin et le fichier créé
avoir tous l'écran sur une page

Dans le FAQ et la doc microsoft (2013)

il y a

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
       .PageSetup.PrinToFile = True
        .PageSetup.PrinToFileName = "C:\program files\apbene\stats\benevole_ind\nom&prenom.pdf"
        .PageSetup.PrintArea = "$A$1:$N$48"
mais celà ne me semble pas géré en Exel 2007

est-ce exact ?
merci de m'aider pour prendre en compte ces besoins en exel 2007
solution ?
paliatif ?

bien cordialement
MJ