Excel. Probleme Macro / Impression

Résolu/Fermé
Benj - 18 oct. 2007 à 08:44
 atonservice - 8 nov. 2007 à 09:00
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
A voir également:

22 réponses

xkristi Messages postés 4264 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 19 août 2022 564
18 oct. 2007 à 09:09
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
atonservice
31 oct. 2007 à 14:03
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
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
18 oct. 2007 à 12:10
Bonjour et bravo à xkristi :-)
0
xkristi Messages postés 4264 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 19 août 2022 564
18 oct. 2007 à 12:19
Salut Eriiic
Merci pour ton bravo
mais c'était si peu de chose comparé aux macros plus compliquées que tu écris ...
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xkristi Messages postés 4264 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 19 août 2022 564
29 oct. 2007 à 13:07
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
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
xkristi Messages postés 4264 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 19 août 2022 564
29 oct. 2007 à 14:55
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
atonservice
29 oct. 2007 à 15:16
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
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
atonservice
30 oct. 2007 à 09:55
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
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
atonservice
30 oct. 2007 à 12:05
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
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
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
atonservice
30 oct. 2007 à 13:47
ça sent le tableau croisé dynamique...

tu sais ce que c?
0
pas vraiment... snifff
0
atonservice
30 oct. 2007 à 14:38
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
noublie pasde cloturer le sujet SVP...
0
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
avotreservice Messages postés 5 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 7 novembre 2007
7 nov. 2007 à 10:39
eske la solution 18 te convient?
0