bonjour a vous
je ne sais pas comment faire une mise en page car mes données arrivent en paquet sur la feuille, aussi bien 3 lignes que 80 ou plus ou moins issu d'une listview, jusque présent j'utilisait le code suivant qui faisait une mise en page automatique après détection d'une cellule nommée "MTTC".
mais la comme le "MTTC" n'est pas fixe il y a un problème
donc dans ThisWorkbook il y a
les entêtes sont mis en commentaires car la mise en page les remplacaient
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Private Sub Workbook_BeforePrint(Cancel As Boolean) 'Utilis & Chr(10) & Dim VPB As VPageBreak, HPB As HPageBreak Dim No As String, Dt As String Application.ScreenUpdating = False 'No = Year(Now) & " - " & Sheets("facturation").Range("A1") Dt = Format(Date, "dd mmmm yyyy") 'formatter en vue d'impression With ActiveSheet 'reset parametres d'impression .ResetAllPageBreaks With .PageSetup 'redefinition de la plage d'impression .PrintArea = "$A$1:$G$" & [MTTC].Row + 13 .CenterHeader = "" .CenterFooter = "" End With 'passage en break preview sinon erreur avec DragOff ActiveWindow.View = xlPageBreakPreview 'déplacement des sauts de page For Each VPB In .VPageBreaks VPB.DragOff Direction:=xlToRight, RegionIndex:=1 Next VPB 'retour à vue normale ActiveWindow.View = xlNormalView 'ajout de ligne avant et après chaque saut de page pour délimiter le cadre lors de l'impression For Each HPB In .HPageBreaks .Range(.Cells(HPB.Location.Row - 1, 3), .Cells(HPB.Location.Row - 1, 12)).Borders(xlEdgeBottom).LineStyle = xlContinuous .Range(.Cells(HPB.Location.Row, 3), .Cells(HPB.Location.Row, 12)).Borders(xlEdgeTop).LineStyle = xlContinuous Next HPB 'entête au centre '.PageSetup.CenterHeader = "&14&""Arial,Gras""FACTURE SAV N° " & No & " en date du " & Dt 'pied de page au centre '.PageSetup.CenterFooter = "&14&""SIRET : 123456789 - NAF : 0000A - RCS : 00000 - N° TVA : FR0123456789" & Chr(10) & _ '"assurance décennale n°0123456 de chez untel" End With Application.ScreenUpdating = True End Sub
et aussi comment adapter le code du bordurage qui en commentaire dans le code du bouton 8
ces codes sont issu d'un fichier qui envoie ses données une par une dans la feuille en repoussant le bas de page
je vous joint le fichier pour plus de compréhension
Pascal
Partager