Comment imprimer la même page de plusieurs onglets

Résolu
Flojo05 Messages postés 9 Statut Membre -  
 Utilisateur anonyme -
Bonjour,
Malgré mes différentes tentatives, je ne parviens pas à imprimer la même page de plusieurs onglets d'un même fichier.
Mon fichier contient environ 45 onglets, chacun faisant 12 pages. Je souhaite par exemple imprimer la page 4 de chaque onglet. Je sélectionne les onglets, je fais imprimer, je sélectionne le numéro de page à imprimer, je coche feuilles sélectionnées et ça m'imprime toujours que la page du 1er onglet.
Je n'y connais rien en macro mais je suis ouverte à vos explication pour en créer une si je dois en passer par là.
Merci d'avance

1 réponse

  1. Utilisateur anonyme
     
    Bonjour Flojo05,

    Si chaque onglet fait toujours 12 pages, alors :
    la page 4 de l'onglet n est la page n° :

    12 * (n - 1) + 4

    Exemple : pour la page 4 de l'onglet 5, il te faudra imprimer
    la page n° 12 × (5 - 1) + 4 = (12 × 4) + 4 = 48 + 4 = 52.

    Ce renseignement est à utiliser soit pour une impression
    manuelle de la page concernée, soit pour une macro.

    Voici une macro pour imprimer la page 4 de l'onglet 5,
    avec n = 5, x = 4.

    
    Option Explicit
    
    Private Sub PrintPageX(n As Integer, x As Byte)
      Worksheets(12 * (n - 1) + x).Printout
    End Sub
    
    Sub Essai()
      PrintPageX 5, 4
    End Sub
    
    

    Voici une autre macro pour imprimer toutes les pages 4
    de chaque onglet, avec x = 4 :

    
    Option Explicit
    
    Private Sub PrintAllPagesX(x As Byte)
      Dim n As Integer
      For n = x to Worksheets.Count Step x
        Worksheets(n).Printout
      Next n
    End Sub
    
    Sub Essai()
      PrintAllPagesX 4
    End Sub
    
    

    Dans les 2 macros, si tu es sûr(e) d'avoir moins de 256 onglets,
    tu peux remplacer « n As Integer » par « n As Byte ».

    Si ton problème est réglé, merci d'aller en haut de page
    pour cliquer sur « Marquer comme résolu ».

    Cordialement.  😊
     
    0
    1. Flojo05 Messages postés 9 Statut Membre
       
      Je suis désolée mais je ne comprend rien ! Je dois remplacer x par mon n° de page ?
      Et si je veux changer de n° de page, est-ce que je dois obligatoirement retourner et modifier ma macro ?
      0
    2. Utilisateur anonyme > Flojo05 Messages postés 9 Statut Membre
       
       
      Tu n'as pas précisé de quel code VBA il s'agit ! Mais dans les 2 codes,
      tu dois seulement changer la ligne de la sub Essai(), comme suit :

      Si c'est pour le 1er code :
      a) Pour onglet 5, page 3 : PrintPageX 5, 3
      b) Pour onglet 3, page 8 : PrintPageX 3, 8

      Si c'est pour le 2ème code :
      Pour imprimer la 6ème page de chaque onglet : PrintAllPagesX 6

      Tu as bien mis le code VBA dans Module1, n'est-ce-pas ? Et un seul
      des 2 codes à la fois, selon ce que tu veux faire !

      Tu peux aussi ajouter un InputBox pour les données onglet et page ;
      modifications des 2 subs Essai() comme ci-dessous.

      Pour le 1er code VBA :

      
      Sub Essai()
        Dim ongletX As Integer, pageX As Byte, chn As String
        Do
          chn = InputBox("Onglet n° : "): ongletX = Val(chn)
        Loop Until ongletX >= 1 And ongletX <= 45
        Do
          chn = InputBox("Page n° : "): pageX = Val(chn)
        Loop Until pageX >= 1 And pageX <= 12
        PrintPageX ongletX, pageX
      End Sub
      
      


      Pour le 2ème code VBA :

      
      Sub Essai()
        Dim pageX As Byte, chn As String
        Do
          chn = InputBox("Page n° : "): pageX = Val(chn)
        Loop Until pageX >= 1 And pageX <= 12
        PrintAllPagesX pageX
      End Sub
      
      

      Attention : pour les 2 codes VBA, laisse telle que la Private Sub !

      Si ton problème est réglé, n'oublies pas de mettre le sujet en résolu.  😉
      Sinon, donnes-moi plus de précisions sur ce qui ne vas pas.  😊
       
      0
    3. Flojo05 Messages postés 9 Statut Membre
       
      Albkan, j'ai bien une fenêtre qui s'ouvre pour me demander le n° de page à imprimer, mais cela imprime quand même toutes les pages de la dernière feuille alors que c'était la première qui était selectionnée.
      Je te confirme que je veux bien imprimer la page x de toutes les feuilles donc le 2° code.
      Petit complément d'info, mon nombre de feuilles est variable :-)
      0
    4. Flojo05 Messages postés 9 Statut Membre
       
      Après d'autres essais j'ai l'impression que le chiffre que j'inscris dans la boite de dialogue qui s'ouvre correspond plus au n° de la feuille. J'ai fait un test avec le 2 et le 3 (censés être les numéros de page) et c'est en fait toutes les pages de la 2° ou 3° feuille qui s'impriment.
      Lorsque je tape 1 par contre, toutes les pages de toutes les feuilles s'impriment !!!
      Je suis larguée
      0
    5. Utilisateur anonyme > Flojo05 Messages postés 9 Statut Membre
       
       
      Réponse à ton message #4

      Merci d'avoir précisé que tu veux imprimer la page x de toutes les feuilles ;
      donc oui, il s'agit bien du 2ème code VBA. Tu as précisé aussi en autre info
      que ton nombre de feuilles est variable ; c'est évidemment une indication
      bien utile, même si le code VBA en tient déjà compte avec l'instruction
      Worksheets.Count : ça retourne le nombre de feuilles du classeur.

      C'est normal que tu n'aies pas eu le résultat attendu, car j'ai fait une
      grosse erreur : j'ai vu ta demande, puis j'ai pensé à la formule
      12 * (n - 1) + 4, et ensuite, j'ai bêtement utilisé Worksheets(x) qui est
      pour la feuille d'un classeur et non pas pour une des pages
      de cette feuille ! Désolé, mea culpa !  😞

      Je vais maintenant répondre à ton message #5.  😊
       
      0