Microsoft 365 Zone d'impression

ExcLnoob

XLDnaute Occasionnel
Bonsoir le Forum,

J'ai une document qui contient Plus de 1000 lignes et je souhaiterai avec une boite de dialogue pouvoir permettre aux utilisateur de ce fichier de modifier la zone d'impression selon le nombre de page voulu.

Je m'explique :
J'ai une zone d'impression qui va de B1 à K54, c'est ma page 1.
La page 2 va de B55 à K117
La page 3 de B118 à K184 et ainsi de suite sur 11 pages
Je souhaiterai que l'utilisateur puisse indiquer le nombre de page qu'il souhaite imprimer dans une boite de dialogue et que, de ce fait, la zone d'impression s'ajuste.
Par exemple, si l'utilisateur ne veut qu'1 page, la zone d'impression sera de B1 à K54. Si l'utilisateur veut 2 pages, la zone d'impression devient B1 à K117. Si l'utilisateur veut 3 pages, la zone d'impression devient B1 à K184 et ainsi de suite.

J'ai farfouillé un peu partout mais je ne trouve pas (et ne comprends pas) comment faire.
Pourriez-vous m'aider svp ?

Merci.
 
Solution
Bonjour à toutes & à tous, bonjour @ExcLnoob

Comme le dit @Phil69970 difficile de comprendre le ainsi de suite ...
J'ai créé une feuille table avec un tableau qui définit les dimensions des pages (j'ai interprété au delà de la page 3) :
PageDébutFin
1​
$B1$K54
2​
$B$55$K$117
3​
$B$118$K$184
4​
$B$185$K$238
5​
$B$239$K$301
6​
$B$302$K$368
7​
$B$369$K$422
8​
$B$423
...

Phil69970

XLDnaute Barbatruc
Bonjour @ExcLnoob

Tu devrais te poser des questions car aucune réponse en 43 vues c'est bizarre !!! o_O

1683444452984.png


Et quand je lis ce que tu veux faire je me dis que tout s'explique peut être .....
Il n'y a pas beaucoup de logique dans le nombre de lignes par page que tu veux faire !

Page 1Page 2Page 3
54 lignes63 lignes67 lignes

ainsi de suite sur 11 pages

Ainsi de suite veut dire quoi quand il n'y a pas de logique dans le nombre de lignes :oops:

Bonne lecture

@Phil69970
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour à toutes & à tous, bonjour @ExcLnoob

Comme le dit @Phil69970 difficile de comprendre le ainsi de suite ...
J'ai créé une feuille table avec un tableau qui définit les dimensions des pages (j'ai interprété au delà de la page 3) :
PageDébutFin
1​
$B1$K54
2​
$B$55$K$117
3​
$B$118$K$184
4​
$B$185$K$238
5​
$B$239$K$301
6​
$B$302$K$368
7​
$B$369$K$422
8​
$B$423$K$486
9​
$B$487$K$553
10​
$B$554$K$607
11​
$B$608$K$670

Comme on ne connait pas exactement la largeur ni la hauteur réelles de chaque page (cela dépend des hauteurs de ligne et des largeurs de colonne),
la macro fait une boucle sur le nombre de pages choisi, et redéfinit la zone d'impression page après page avec un ajustement auto (1 page en largeur, 1 page en hauteur).
Pour chaque page tu as un aperçu avant impression, à remplacer par une impression le cas échéant :
Macro :
VB:
Sub Imprimer()
     Set Sh_Print = Feuil1
     Set Sh_Table = Feuil2
   
     TbPage = Sh_Table.[Tb_MiseEnPage]
     NbMax = UBound(TbPage)
   
     Rép = Application.InputBox(Prompt:="Nombre de page à imprimer ? (de 0  à " & NbMax & ")", Title:="Impression", Type:=1)
     If TypeName(Rép) = "Boolean" Then Exit Sub
     Rép = Int(Rép)
     If Rép < 1 Then Exit Sub
     If Rép > NbMax Then Rép = NbMax
   
     With Sh_Print
          .PageSetup.PrintArea = ""
          For i = 1 To Rép
               With .PageSetup
                    .PrintArea = TbPage(i, 2) & ":" & TbPage(i, 3)
                    .FitToPagesWide = 1
                    .FitToPagesTall = 1
               End With
               .PrintPreview   'à remplacer par .PrinOut pour imprimer
          Next
     End With
   
End Sub

On pourrait ajouter des sauts de page et ajuster à une page en largeur à condition que la hauteur de chaque zone tienne dans une page, à toi de voir.
A bientôt
 

Pièces jointes

  • Zones d'impression.xlsm
    38.7 KB · Affichages: 7
Dernière édition:

ExcLnoob

XLDnaute Occasionnel
Bonjour à tous,
Merci pour ta réponse détailléé @AtTheOne
J'ai trouvé une soltution asses simple en // :
VB:
Option Explicit
Sub Imprimer()

    Dim Texte1 As Variant

    Texte1 = Application.InputBox("Merci d'indiquer le nombre de page à imprimer", "Options d'impression")
 
    If Texte1 = False Then
    MsgBox ("Opération annulée"), vbInformation, "Alerte"
    Exit Sub
    ElseIf Texte1 = "" Then
    MsgBox ("Merci d'indiquer un nombre de page"), vbExclamation, "Alerte"
    Exit Sub
    ElseIf Texte1 = 1 Then
        ActiveSheet.PageSetup.PrintArea = "$B$1:$K$58"
    ElseIf Texte1 = 2 Then
        ActiveSheet.PageSetup.PrintArea = "$B$1:$K$125"
    ElseIf Texte1 = 3 Then
        ActiveSheet.PageSetup.PrintArea = "$A$1:$K$192"
 'etc... pour faire le nombre de page'
    Else
        MsgBox ("Il n'est pas possible d'imprimer plus de 11 pages !"), vbInformation, "Alerte"
        Exit Sub
    End If

    ActiveSheet.PrintPreview
    'ActiveWindow.SelectedSheets.PrintOut
    

    
End Sub
Je n'ai pas encore testé ton code mais je note en résolu ton commentaire et te remercie de ta bienveillance à essayer de comprendre un novice !
 

ExcLnoob

XLDnaute Occasionnel
Bonjour @ExcLnoob

Tu devrais te poser des questions car aucune réponse en 43 vues c'est bizarre !!! o_O

Regarde la pièce jointe 1169710

Et quand je lis ce que tu veux faire je me dis que tout s'explique peut être .....
Il n'y a pas beaucoup de logique dans le nombre de lignes par page que tu veux faire !

Page 1Page 2Page 3
54 lignes63 lignes67 lignes



Ainsi de suite veut dire quoi quand il n'y a pas de logique dans le nombre de lignes :oops:

Bonne lecture

@Phil69970
Bonsoir @Phil69970
Merci pour la lecture
Effectivement, elle fut instructive et m'a permis de comprendre la différence entre ceux qui pointent les solutions et ceux qui pointent les problèmes !
Un grand merci de la pertinence de ton commentaire.
 

AtTheOne

XLDnaute Accro
Supporter XLD
Re ...
J'ai trouvé une soltution asses simple en //
Oui, mais sans connaître la largeur des colonnes ni la hauteur des lignes on ne peut pas être assuré d'avoir une, deux ou trois pages etc (il peut y avoir 2 pages en largeur, et on n'est pas assuré que les sauts de page se fassent au bon endroit) .
Sauf si tu as adapté les largeurs de colonnes, les hauteurs de lignes, les marges et les sauts de pages pour que cela tombe pile poil .
A bientôt
 

Discussions similaires

Réponses
7
Affichages
763
Compte Supprimé 979
C

Statistiques des forums

Discussions
314 749
Messages
2 112 460
Membres
111 553
dernier inscrit
cecilou47