Bonjour à tous,

J'ai une macro qui me permet d'imprimer un UserForm qui comprend un multipage.
Cela fonctionne plus ou moins bien...

J'ai deux problèmes:
- le premier est que l'impression est "normale" de mon PC, cad qu'il imprime toutes les feuilles et pas plus. Or, sur la même version d'EXCEL (2013), j'ai un collègue qui a 200 pages quand il lance l'impression..
Avez-vous une idée de la source? j'ai fait du pas-à-pas mais ne parviens pas à trouver le pb...

-le second problème est que mes captures d'écran ne prennent pas toute la page (je le vois dans l'aperçu avant impression) et parfois la capture d'écran fonctionne mal: par ex: deux fois le même onglet puis il en saute un pour faire une capture d'écran de l'onglet d'après.

Merci pour votre aide!

Dans un module:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Option Explicit
Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As LongPtr)
Const KEYEVENTF_KEYUP = &H2
Const VK_SNAPSHOT = &H2C
Const VK_MENU = &H12
Dans le UserForm:
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
25
Dim i As Long
 
ReDim tablo(UFsaisie.MultiPage1.Pages.Count - 1)    'on dimentionne la variable tablo au nombre de page dans le multipage
    For i = 0 To UFsaisie.MultiPage1.Pages.Count - 1    'on boucle sur tout les page du multipage
        Set sh = Sheets.Add(After:=Sheets(Sheets.Count))    'on ajoute un sheet
        sh.Name = "page" & i    'on nomme le sheets
        UFsaisie.MultiPage1.Value = i    'on change de page
        For A = 1 To 30: Application.SendKeys "(%{1068})": Next   'cette ligne remplace la manipulation de la touche snapshot avec les api
        sh.Cells(1, 1).Select    'on selectionne la cellule ou doit etre poser la capture
        DoEvents
        sh.Paste    ' on colle ce qui a été pris en cliché par la touche snapshot
        With ActiveSheet.PageSetup
        .Orientation = xlLandscape 'permet de mettre au format paysage
        .Zoom = False ' pas de zoom
        .FitToPagesWide = 1 'format une page
        End With
        Application.Wait Now + TimeValue("00:00:02")
        tablo(i) = "page" & i    ' on ajoute le nom de la nouvelle feuille dans le tablo
    Next
    Unload UFsaisie    ' on ferme le userform
    Sheets(tablo).PrintPreview    ' apercu des feuilles a imprimer
    Sheets(tablo).PrintOut  ' apercu des feuilles a imprimer
    Application.DisplayAlerts = False    'on bloque le message d'alert qui va me demander si je veux vraiment supprimer les sheets
    Sheets(tablo).Delete    ' suppression des sheets calques des userforms
    Sheets("Feuil1").Select