Intéressant Michel, je connaissais kbd_event, mais je me demandais ce que donnerait ce vbkeySnapshot et j'aurais dit a priori qu'il copierait tout l'écran, ce qui n'aurait guère été intéressant. Je garderai cette astuce
Mais comme Carlos, ça ne m'intéressait guère de passer par Word, aussi j'ai un peu simplifié ta macro en passant simplement par une feuille Excel (laquelle peut être masquée au demeurant).
Avantage, outre qu'on n'a plus à piloter word, c'est qu'on peut très facilement définir une fois pour toutes les propriétés de cette feuille (Orientation, définition des marges, centrer horizontalement/verticalement etc.)
Private Sub CommandButton2_Click()
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Application.ScreenUpdating = False
With Feuil3 'le codename de la feuille masque
.Paste .Range('A1')
'si la feuille était masquée
.Visible = xlSheetVisible
.PrintOut
.Shapes(1).Delete
.Visible = xlSheetHidden
End With
Application.ScreenUpdating = True
End Sub
On peut aussi lancer un printpreview, mais alors il ne faut pas oublier de masquer d'abord le userform par un me.Hide, sinon on plante irrémédiablement Excel !