XL 2019 VBA paramètres impr. multi Sheets

Julien_m

XLDnaute Junior
Bonjour à tous,

J'essaie donc d'imprimer avec des onglets que j'ai sélectionné (tous sauf les 3 premiers).
J'ai l'impression que ce n'est pas possible de le faire avec PageSetup (solution qui permet beaucoup de paramètre) donc j'ai fini par trouver et faire avec PrintOut... mais trop peu de paramètres de trouve (à première vue).

VB:
Sub Impr2()
    If Sheets.Count > 3 Then
        Dim WB1 As Workbook
        Dim MyArray() As String
        Dim i As Integer, X As Byte

        Set WB1 = ThisWorkbook

        For i = 4 To Sheets.Count
            ReDim Preserve MyArray(X)
            MyArray(X) = Sheets(i).Name
            X = X + 1
        Next
            WB1.Worksheets(MyArray).Select
            ActiveWindow.SelectedSheets.PrintOut Collate:=True, Preview:=True
    Else
         MsgBox "Il n'y a aucune feuille à imprimer, veuillez  en générer avant de lancer l'impression !"
    End If
End Sub

J'aimerais pouvoir paramétrer le format de papier (A3, A4...), la disposition (paysage, portrait), le zoom, les marges... et que l'utilisateur n'ait plus qu'à choisir son imprimante pour lancer le processus.

Merci d'avance,

Julien,
 

Julien_m

XLDnaute Junior
Merci enfin je bloque depuis dimanche dessus malgré de multiples recherches...
Et l'enregistreur de macro ne me donne pas satisfaction pour ce cas.
Rechercher sur des forums et tester l'enregistreur c'est déjà ce que je fais dès que je bloque...
 
Dernière édition:

Julien_m

XLDnaute Junior
Salut, pour cela lire et pratiquer : Excel et l'enregistreur de macro
Optimiser ensuite à la main le code généré pour l'adjoindre au code existant
Cf. mon commentaire ci-dessus et :
L'enregistreur de macro ne me propose que PrintOut... et à ma connaissance il n'y a pas de paramètre tel que le format de la page... c'est pourquoi je vous demande s'il n'existe pas une autre solution ou comment le faire avec PageSetup.
Bonne journée,
 

Julien_m

XLDnaute Junior
EN passant par ici c'est possible mais les modifs ne s'applique que sur l'onglet actif. J'aimerai bien que ça se fasse sur la sélection de feuilles...
C'est pour ça que j'aurai voulu passer par les paramètres de mise en page via fichier>imprimer.
Au vu du nombre d'onglet que je peux avoir à imprimer si je fais une boucle pour aller changer les paramètres de mise en page pour chaque onglet, j'y serai encore le lendemain ....
 

Julien_m

XLDnaute Junior
Sinon j'avance mais j'ai un problème... je veux pouvoir choisir mon imprimante avec la petite fenêtre mais dès que j'ajoute la ligne, ma page d'impression est vide, aucun graph, aucune donnée...
VB:
Sub Macro1()
    Range("B2").Select
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = "" & Chr(10) & "&G"
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = " &G"
        .CenterFooter = "                              &G"
        .RightFooter = "" & Chr(10) & "&G  "
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

ça bug quand je remplace la dernière ligne "ActiveWindow.Selected..." par
VB:
    If Application.Dialogs(xlDialogPrinterSetup).Show = True Then Selection.PrintOut

Menu que j'aimerais obtenir en lançant ma macro et que tous les paramètres de mise en page soient déjà paramétrés dans le vba....
Or avec PrintOut j'ai pas ce menu.
1601587329780.png
 
Dernière édition:

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa