Excel. Probleme Macro / Impression

Résolu
Bonjour,

Est il possible dans un classeur excel de créer une macro (ou autre moyen) "imprimer la page 4 de chaque feuille" par exemple.

Sachant que les feuilles vont et viennent dans le classeur... et qu'il n'est donc pas possible, je pense, en utilisant le nom des feuilles....

Merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

22 réponses

  1. Salut !

    une macro avec :
    ActiveWorkbook.PrintOut From:=4, To:=4, Copies:=1, Collate:=True

    tu vas dans : outils nouvelle macro
    puis fichier , imprimer de la page 4 à la page 4
    coches "tout le classeur"
    n'oublie d'arrêter la macro !

    1
    1. Contributeur
      Bonjour et bravo à xkristi :-)
      0
      1. Salut Eriiic
        Merci pour ton bravo
        mais c'était si peu de chose comparé aux macros plus compliquées que tu écris ...
        0
    2. Bonjour,

      J'ai essayé la solution de la macro, hélas, ca ne m'imprime que la feuille 4 à l'écran...

      Par contre je n'ai pas "tout le classeur" mais "classuer entier"... je pense que c'est la meme chose.

      Merci de votre aide
      0
      1. Bonjour !

        J'ai mal compris ta demande
        dans un classeur , il n'y a qu'une feuille nommée feuille 4
        et je pensais que tu voulais imprimer celle-là !!!

        0
        1. Bonjour,

          Je me suis peut etre mal exprimé.

          c'est la page 4 (par exemple) de chaque feuille du classeur que je veux imprimer.... (sachant que les feuilles vont et viennent dans ce classeur).

          merci d'vaance
          0
          1. Bonjour !

            en fait il te faut pour chacune des feuilles définir la zone d'impressionsoit tu fais aperçu des sautes de page
            tu sélectionnes les cellules de la page
            puis fichier , zone d'impression , définir
            ensuite quand feras imprimer
            le système n'imprimera que les zones sélectionnées pour chacune des feuilles

            et dans ce cas, pas besoin de macro

            se traduit en macro par :

            Sheets("Feuil1").Select
            ActiveSheet.PageSetup.PrintArea = "$A$55:$D$108"
            Sheets("Feuil2").Select
            Range("A55:B108").Select
            ActiveSheet.PageSetup.PrintArea = "$A$55:$B$108"
            Sheets("Feuil4").Select
            Range("A55:B108").Select
            ActiveSheet.PageSetup.PrintArea = "$A$55:$B$108"
            Sheets("Feuil3").Select
            Range("A55:A67").Select
            ActiveSheet.PageSetup.PrintArea = "$A$55:$A$67"
            Range("E69").Select
            0
            1. Bonjour,

              sinon, si tu connais le no de page que tu veux imprimer et que celui-ci ne change pas d'une feuille à la suivante, copie le code si dessous dans l'éditeur Macros (ALT+F11)

              jai testé ça marche chez moi
              (attention la macro plante si 'nb de pages d'une feuille < no page que tu veux imprimer', c'est à dire si tu lui demandes d'imprimer une page qui n'existe pas !)
              ________________________________________________________________
              sub imprim_page_no ()

              dim nb_de_feuilles

              nb_de_feuilles = activeworkbook.sheets.count 'compte le nombre de feuille dans le classeur en cours

              'impression de la page 4 de chaque feuille du classeur
              for i=1 to nb_de_feuilles

              sheets(i).select
              Activesheet.PrintOut From:=4, To:=4, Copies:=1, Collate:=True

              next

              end sub
              __________________________________________


              si tu veux imprimer un autre no de page que le 4, tu n'as qu'à changer le chiffre dans From:=4, To:=4, . :)

              PS : pour aller plus loin, il est même possible de lancer une interface qui te permettrait d'indiquer le no de la page à imprimer si ça t'intéresse

              atonservice
              0
              1. Bonjour,
                Ca m'a l'air pas mal du tout comme solution, mais au niveau macro je suis limité à enregistrer une macro. Quand il faut la créer comme tu me le demande je sais pas faire.

                En faisant alt+f11, une grande page grise s'affiche... ensuite?

                Merci d'avance
                0
                1. Bonjour,

                  ok alors dans la "grande page" (lol)

                  1) tu vas dans le menu "insertion", tu cliques sur "module"

                  une fenêtre, telle que celle ci, s'ouvre :
                   http://www.fabnet.ch/cours_vb/environ2.PNG 
                  ,

                  2) tu colles le code dans la partie de droite (juste en dessous des listes "Général" et "Déclarations").

                  3) tu reviens à ta feuille excel. la macro "imprim_page_no" figure maintenant dans la liste des macros (Menu Outils->Macro->Macros)

                  tu n'as plus qu'à l'exécuter pour voir ce que ça donne
                  0
                  1. Bonjour,

                    Ca marche Nickel!!!

                    Maintenan,t si ca te derange pas ca m'interesse beaucoup ton ->

                    "PS : pour aller plus loin, il est même possible de lancer une interface qui te permettrait d'indiquer le no de la page à imprimer si ça t'intéresse "

                    En prenant en compte omn trés modeste niveau ;-)

                    (Pour l'instant il me faudra imprimer d'abord toutes les pages 2, puis plus tard toutes les pages 3... et ainsi jusqu'a 13.)
                    0
                    1. jvais voir ce que jpeux faire pcq on arrive vite à des usines à gaz, qui dès qu'on modifie le moindre truc il faut tout refaire...

                      jregarde après manger ^^P
                      0
                      1. Bonjour,

                        C'est encore moi.

                        Dans le meme ordre d'idée : "Excel devine le nombre de feuille qu'il y a et effectue la meme operation dans chaque feuille"

                        -> Serait il possible dans une feuille supplementaire de créer une macro ayant pour mission de "recuperer toutes les données de A6(par exemple) de chaque feuille du classeur"

                        En esperant avoir été clair....

                        Merci d'avance
                        0
                        1. Bonjour,

                          Un grand merci. j'avais pas vu ton message precedent! Mais bon l'interface c'est idéal. ta solution de acros me convient parfaitement.

                          Concernant mon post suivant :
                          Pour t'eclaircir une page correspond à un mois.

                          C'est à dire que la page 2 corresopnd au mois de novembre pour chaque personne du groupe.

                          Cette page comprend les stats du mois (entrés).

                          C'est donc c'est stats que je dois recapituler dans un tableau regroupant toutes les personnes du groupe.

                          LA difficulté etant que de temps en temps une personne nouvelle arrive dans le groupe et que d'autres passent d'un gropupe à l'autre...

                          merci
                          0
                          1. ça sent le tableau croisé dynamique...

                            tu sais ce que c?
                            0
                            1. c un tableau qui sert à synthétiser des données de plusieurs feuilles

                              ça se met à jour les valeurs à chaque fois qu'elles changent (d'ou le terme dynamique)

                              tu fais Menu->données->rapport de tableau croisé dynamique
                              0
                              1. pour répondre à la question 11

                                je te propose un truc simple : il t'imprime le no de la page que tu lui indiques dans la case A1 de la 1ère feuille

                                pour ce faire:

                                1) remplace le code que je t'ai donné par celui-là:

                                Sub imprim_page_no()

                                Dim no, i

                                Sheets(1).Activate
                                no = Range("A1").Value

                                For i = 1 To Sheets.Count

                                With Sheets(i)
                                .PrintOut From:=no, To:=no
                                End With
                                Next i

                                End Sub


                                2) reviens à ton classeur et saisi le No de la page que tu veux imprimer (2 par exemple) dans la cellule A1 de la 1ère feuille

                                3) lance la macro
                                => il t'imprime les pages no 2 de chaque feuille

                                si tu veux imprimer des autres pages, tu n'as qu'à changer la valeur de la cellule A1 et relancer la macro!

                                jespère que ça t'aidera
                                atonservice

                                PS : si ça n'est pas possible de saisir le chiffre en A1, tu peux lui indiquer une autre cellule en remplaçant le "A1" dans Range("A1") par l'adresse de la cellule ou se trouve le chiffre à prendre en compte
                                1
                                1. noublie pasde cloturer le sujet SVP...
                                  0
                                  1. Bonjour,
                                    Bonjour,
                                    Merci pour vos aides.

                                    Le tableau croisé dynamique ca va aps convenir a mon avis mais j'ai regler le probleme d'impression!
                                    0
                                    1. eske la solution 18 te convient?
                                      0
                                      • 1
                                      • 2