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

Bonjour,


Il va falloir un code VBA ( que je suivrai , n'étant pas en forme pour l'écrire moi-même )

P.
Oui je te remercie.
C'est ce que je pense aussi.
SInon rien que de sélectionner les 30 jours sur les 3 fichiers cela me prends un temps fou.
C'est pour cela que j'ai fait appel à vous.
D'autant plus que ce n'est pas sur la même imprimante que celle dont je me sers d'habitude pour imprimer.
J'ai un badge pour imprimer et il faut que je le selectionne en plus
 
Bonjour

Les données filtrées ne sont pas imprimées chez moi.

Il y a 31 dates à cheval sur 2 mois, cela fait 31 tableaux.

Il suffit de faire un saut de page forcé en fin de jour.

On peut prévoir :
  • soit une répartition automatique sur 31 onglets ce qui permet d'imprimer en une fois (PowerQuery ou VBA)
  • soit une boucle filtre+ impression (VBA)
  • soit l'insertion automatique des sauts de pages (VBA)
mais j'ai du mal à saisir l'utilité... d'imprimer entre 31 et 60 pages
 
Oui je suis d'accord avec toi mais ma direction me demande le suivi papier. Surtout que j'ai 3 classeurs différents et la même chose à faire dans les 3.
Pour les filtres il faut toujours que j'ai "11" en colonne "A" et "Acceptée" en colonne "H".
L'année prochaine un logiciel pour gérer ça mais en attendant il faut que sur 1 page ou 1 page rectoverso j'ai 1 jour.
 
mais je n'incrémente les fichiers que mois par mois. Donc il faut que je puisse imprimer que le mois qui m'interesse
 
RE

Pour ne sélectionner qu'un mois il suffit d'ajouter un filtre sur les dates

Comme je l'ai indiqué on peut insérer manuellement un saut de page à chaque fin de journée.

Sinon j'ai cité 3 possibilités, la même mais avec insertion automatique des sauts de page, un boucle qui change le filtre, n onglets

Dans le 1er cas et le 3ème on aura une numérotation continue au fil des pages, dans le 2ème la numérotation repart à un chaque jour

Il faudrait donc être plus précis sur le besoin
 
Dernière édition:
Bonjour,

L'année prochaine un logiciel pour gérer ça mais en attendant il faut que sur 1 page ou 1 page rectoverso j'ai 1 jour.
Une proposition :
VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'
    If ActiveSheet.Name <> "Feuille pour factu" Then Exit Sub

    ActiveSheet.ResetAllPageBreaks
    For Ligne = 2 To Range("Tableau3[Date]").ListObject.ListRows.Count
        If Not Intersect(Range("Tableau3[Date]").SpecialCells(xlCellTypeVisible), Range("Tableau3[Date]")(Ligne)) Is Nothing Then
            If Range("Tableau3[Date]")(Ligne) <> Range("Tableau3[Date]")(Ligne - 1) Then
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Range("Tableau3[Date]")(Ligne)
            End If
        End If
    Next Ligne

End Sub
 

Pièces jointes

Dernière édition:
Bonjour,
J'aurais ( encore ) mal compris la demande ?
J'ai pensé qu'il fallait imprimer page par page les datas d'une même date et même mois avec à chaque fois le titre des colonnes ...
1 impression pour le 1 ( 1 seule ligne ), 1 impression pour le 2 ( 2 lignes) etc etc...
Donc 17 pages à imprimer ?
Je regarde (quand j'ai un peu de temps) une autre manière de faire mais qui pourra s'appliquer à d'autres personnes
 
Salut désolé cela fonctionne dans le fichier exemple mais je n'arrive pas à enregistrer la macro dans mon fichier.
C'est exactement le même pourtant mais en plus gros. Là il n'y a que janvier.
Désolé, mais en macro je ne m'y connais pas.
Mon fichier n'acceptait pas les macros donc je l'ai converti pour accepter les macros.
J'ai l'onglet Développeur d'activé.
Mais après... peux-tu me donner la marche à suivre... sinon c'est top vraiment
 
Oui c'est cela.
1 page par jour.
Dans le code donné par TooFatBoy cela fonctionne.
En revanche, je ne m'y connais pas du tout en programmation. Comme je le disais j'ai mon onglet développeur mais je n'arrive pas à l'enregistrer.
En cliquant sur Macro, je n'arrive pas à la retrouver
 
J'ai l'onglet Développeur d'activé.
C'est-à-dire ???
C'est bien la feuille à imprimer qui est active ?


Mon fichier n'acceptait pas les macros donc je l'ai converti pour accepter les macros.
Il suffit de l'enregistrer en .XLSM. 😉


désolé cela fonctionne dans le fichier exemple mais je n'arrive pas à enregistrer la macro dans mon fichier.
C'est exactement le même pourtant mais en plus gros. Là il n'y a que janvier.
Peut-être que ça vient du nom du Tableau Structuré qui n'est pas le même, donc je te propose de remplacer la première macro par celle-ci, dans laquelle j'ai ajouté des commentaires et la configuration de l'impression pour imprimer l'en-tête du tableau sur chaque page (chose que j'avais faite en dur dans le classeur fourni en #8) :
VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
' Exemple d'ajout d'un saut de page : ActiveSheet.HPageBreaks.Add Before:=Range("A3")
Dim TS As Object
Dim MesDates As Range
Dim Ligne As Long

    ' Si la feuille active au moment d'imprimer ne s'appelle pas "Feuille pour factu", alors on abandonne la macro
    If ActiveSheet.Name <> "Feuille pour factu" Then Exit Sub

    ' Assignation des deux variables TS et MesDates
    Set TS = ActiveSheet.ListObjects(1)             ' Tableau complet (sans les en-têtes)
    Set MesDates = TS.ListColumns(2).DataBodyRange  ' Deuxième colonne du tableau (sans l'en-tête)

    ' Supprime tous les sauts de page de la feuille active
    ActiveSheet.ResetAllPageBreaks

    ' De la deuxième ligne de données du tableau à la dernière ligne de données du tableau
    For Ligne = 2 To TS.ListRows.Count
        ' Si la cellule est affichée (donc non masquée), alors...
        If Not Intersect(MesDates(Ligne).SpecialCells(xlCellTypeVisible), MesDates(Ligne)) Is Nothing Then
            ' Si la valeur de la cellule n'est pas la même valeur que la cellule de la ligne au-dessus, alors on ajoute un saut de page
            If MesDates(Ligne) <> MesDates(Ligne - 1) Then ActiveSheet.HPageBreaks.Add Before:=MesDates(Ligne)
        ' Fin de Si
        End If
    ' Passage à la ligne suivante
    Next Ligne

    ' Configuration pour imprimer l'en-tête sur chaque page
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = TS.HeaderRowRange.Address
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True

End Sub
 

Pièces jointes

Dernière édition:
Salut camarade. 😉
Nous avons bien compris la même chose : imprimer les lignes visibles, avec les dates identiques sur une seule page et donc un saut de page pour chaque nouvelle date. Ce qui ici fait 10 "pages" et non 17. 😉


Dans le code donné par TooFatBoy cela fonctionne.
Vu l'endroit où j'ai mis la macro, ça fonctionne quand on imprime, mais la prévisualisation n'affiche pas ce qui sera réellement imprimé...
 
Je te remercie, cela fonctionne sur ton fichier.
Effectivement la prévisualisation ne montre pas ce qui va être imprimé.
Par contre impossible d'enregistrer le code sur mon vrai fichier.
Peux-tu me guider stp.*
Le fichier est converti et accepte les macros.
J'ai bien VB dans mon onglet développeur.
Je clique sur VB
Je fais insertion module.
Je colle le code.
Sur la partie gauche j'ai "Général" d'affiché et pas d'autres possibilités. Et j'ai Workbook_BeforePrint qui s'est inscrit sur la partie droite.
J'enregistre dans mon fichier
Dans ma date je filtre par le mois de septembre et cela m'imprime le tout.
Je dois mal enregistrer le code
Peux-tu m'aider stp
 
re,

j'y suis allé de ma petite bafouille comme ceci:
les dates / mois sont scindées et mises avec le titre dans un nouvel onglet 'export" et ensuite une code permet d'imprimer ça dans un répertoire à modifier ( voir le code)
C'est ce que j'ai fait avec ce que j'ai compris 🙂
Pas parfait encore mais à vérifier si ça te convient 🙂
 

Pièces jointes

- 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…