Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 *** RESOLU MERCI :)*** Impression personnalisée.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Agecanonix35400

XLDnaute Junior
Bonjour à tous.

J'aurais besoin de vos lumières si vous le permettez.
En effet je vous ai mis mon fichier de facturation en exemple.
Lorsque je veux imprimer, je voudrais imprimer avec les filtres présents colonnes "A" et "H"
En revanche lorsque j'imprime cela me sort la liste complète
Ce que je voudrais c'est 1 jour par feuille
Par exemple
feuille 1 le 1er janvier.
feuille 2 le 02 janvier recto/verso
feuille 3 le 03 janvier.

Actuellement je dois sélectionner ma date et imprimer et refaire la même chose pour les autres jours.
Cela prend un temps fou car j'ai 3 fichiers gros comme celui-ci à imprimer.

Merci de me dire s'il y a un moyen d'imprimer en selectionnant le mois complet et que ca imprime 1 feuille par date ou bien une autre manière de faire.
 

Pièces jointes

Solution
Bonjour le forum,

Dans le fichier joint j'ai augmenté le nombre de lignes du 02/01/2025 pour que ce jour occupe 2 pages.

Dans la macro Imprimer il faut ôter Application.ScreenUpdating = False pour que l'aperçu puisse afficher la 2ème page.

A+
Bon j'ai modifié la macro "Imprimer" en ajoutant une feuille vierge auxiliaire :
VB:
Sub Imprimer()
Dim T As Range, rc&, i&, dat, coll As New Collection, P As Range, j&
Set T = [Tableau3] 'tableau structuré
rc = T.Rows.Count
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To rc
    If Not T.Rows(i).Hidden Then 'lignes visibles
        dat = T(i, 2)
        On Error Resume Next
        coll.Add dat, CStr(dat)
        If Err = 0 Then
            Set P = T.Rows(i)
            For j = i + 1 To rc
                If Not T.Rows(j).Hidden Then If T(j, 2) = dat Then Set P = Union(P, T.Rows(j))
            Next j
            With Sheets.Add(, Sheets(Sheets.Count), 1) 'ajoute une feuille vierge auxiliaire
                T.Rows(0).Copy .Cells(1)
                For j = 1 To .UsedRange.Columns.Count: .Columns(j).ColumnWidth = T(1, j).ColumnWidth: Next j 'largeurs des colonnes
                P.Copy
                .Cells(2, 1).PasteSpecial xlPasteValues 'collage spécial
                .Cells(2, 1).PasteSpecial xlPasteFormats
                .UsedRange.RowHeight = 30 'hauteur des lignes
                With .PageSetup
                    .PrintTitleRows = "$1:$1"
                    .Orientation = xlLandscape
                    .Zoom = False
                    .FitToPagesWide = 1 '1 page en largeur
                    .FitToPagesTall = 2 '2 pages en hauteur
                End With
                '.PrintOut 'pour imprimer ôter l'apostrophe et en mettre une devant la ligne suivante
                Application.ScreenUpdating = True: .PrintPreview: Application.ScreenUpdating = False 'aperçu
                .Delete 'supprime la feuille auxiliaire
            End With
        End If
    End If
Next i
T.Parent.Activate 's'il y a plusieurs feuilles
End Sub
 

Pièces jointes

Merci beaucoup,
Cela fonctionne impeccablement 🙂
Encore merci à vous
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…