Macro pour imprimer plusieur zone d'impression en une fois

bonjour,

Comment on puisse faire un code pour imprimer plusieurs zone d'impressions en une seule fois sachent que chaque zone d'impression doit être sur une page.

Donc voici mon code pour imprimer une zone d'impression :

Sub Print_Janvier()
    ActiveSheet.PageSetup.PrintArea = "ImpressionJanvier"
    With ActiveSheet.PageSetup
        .FitToPagesWide = 1
        .FitToPagesTall = False
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = "&8&P/&N" '<-- numéro de page / nombre de pages (taille 8)
        .LeftMargin = Application.InchesToPoints(0.393700787401575)
        .RightMargin = Application.InchesToPoints(0.393700787401575)
        .TopMargin = Application.InchesToPoints(0.393700787401575)
        .BottomMargin = Application.InchesToPoints(0.393700787401575)
        .HeaderMargin = Application.InchesToPoints(0.511811023622047)
        .FooterMargin = Application.InchesToPoints(0.511811023622047)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA3
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
       'trouver comment faire si on choisir oui dans USF que cela imprime ren couleur sinon en noir
        .BlackAndWhite = False
        .Zoom = 73
    End With
    ActiveWindow.SelectedSheets.PrintPreview
End Sub

Donc ensuite j'ai même code pour le mois de Février sauf que je change la zone d'impression en ImpressionFévrier

Par contre comment je puis assembler ces zone en un seul code et que chaque zone d'impression soit sur une page

Que je doit ajouter ici ActiveSheet.PageSetup.PrintArea = "ImpressionJanvier" pour que je puisse ajouter ImpressionFévrier et qu'entre ces deux sone uil y un saut de page

Merci pour votre aide

Bonjour,

Ton code un peu allégé...

Sub Print_Janvier()
    ActiveSheet.PageSetup.PrintArea = "ImpressionJanvier" '???
    With ActiveSheet.PageSetup
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .RightFooter = "&8&P/&N" '<-- numéro de page / nombre de pages (taille 8)
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlLandscape
        .PaperSize = xlPaperA3
        .Zoom = False
    End With
    ActiveWindow.SelectedSheets.PrintPreview
End Sub

L'enregistreur te renvoie toutes les propriétés par défaut dès que tu enrregistres un élément du setup. Les seuls qui comptent sont ceux dont tu as modifié les valeurs... J'ai ajusté si tu veux que l'impression occupe une seule page : FitToPageTall doit être mis à 1 aussi et Zoom à False.

Est-ce que "ImpressionJanvier" est un nom de plage ?

Là tu n'imprimes pas, tu affiches seulement un aperçu avant impression ?

Maintenant il te reste à intégrer ça dans une boucle, si tes réglages sont les mêmes, rien à changer sauf la définition de la zone d'impression.

A suivre si tu fournis les éléments.

Merci pour la réponse et oui zone d'impression sont bien les nom de plage et oui les réglage sont les mêmes sauf qu'il y a la zone d'impression qui change donc les noms des plage (impressionJanvier)

Puis dans un autre sujet que j'ai mis en ce qui concerne mon USF dans lequel je demande si on veux en couleur ou noir, en a3 ou a4, recto ou recto-verso.

Donc je cherche aussi comment faire pour que la page setup change en function de la réponse.

J'espère que j'ai fourni assez éléments

PS sur un USF je fait faire afficher que mes onglet numérique (si j'arrive) et ensuite des qu'on sélection les onglets la macro imprimer onglet1 puis onglet2

Mais cela c'est une histoire d'abord macro pour imprimer une année avec plusieurs zone d'impression (12) en une seule fois puis oui j'affiche d'abord aperçu avant impression

Merci pour l'aide

Mon autre sujet https://forum.excel-pratique.com/excel/usf-impression-et-imprimante-disponible-t75494.html

Là il te faut créer des variables pour recueillir les réponses et les passer à la macro...

Si tu as un Userform destiné à lancer l'impression, il ne fallait pas éclater le sujet.

MFerrand a écrit :

Là il te faut créer des variables pour recueillir les réponses et les passer à la macro...

Si tu as un Userform destiné à lancer l'impression, il ne fallait pas éclater le sujet.

Merci et oups désole pour éclatement de sujet mais c'est que mon USF marche mais que j'essaye de le rendre mieux c'est pour cela que j'ai fait deux sujet par contre comment on déclare les variable pour pouvoir imprimer plusieurs zone d'impression en une seule fois mais que chaque zone d'impression soit sur une page

Merci pour aide

Il s'agit simplement de bâtir une procédure qui va réaliser l'impression en incorporant les éléments de mise en page ou lancer une procédure d'impression en lui fournissant les paramètres, quantité de solutions équivalentes sont possibles... il faut d'abord savoir à partir d'où tu vas lancer l'impression.

Je n'ai pas vu ton fichier mais si tu dis que tu as mis en place un Userform pour que l'utilisateur exprime ses choix en la matière, les 2 possibilités immédiates, c'est un bouton du Userform dont la procédure associée lancera l'impression, ou laissera la main à la procédure qui a appelé le Userform pour le faire.

Avant de la lancer, il faut déjà savoir où se trouveront les réponses de l'utilisateur, qu'il faut bien conserver pour pouvoir les utiliser !

Donc premier maillon : qu'est-ce qui lance ton Userform et comment sont recueillies les réponses de l'utilisateur, tout le reste va en découler.

Cordialement.

Bonjour,

Merci pour la réponse, je viens de joint image de mon USF et donc c'est utilisateur qui lance USF via image print qui lance ensuite mon USF quand on est sur onglet numérique on a que des choix par mois ou l'année entière (je n'est pas encore mis le bouton car pas encore le code) par contre si on est sur onglet ACCEUIL alors on a que des choix année (pas encore code) ou choix plusieurs année

Les réponses sont recueillies par des zone de liste où on as des mois, couleur, A3 ou A4, recto ou recto-verso

Puis je cherche comment afficher dans USF imprimante disponible dans la zone Imprimante affichage automatique des imprimante disponible sans pourvoir cliquer sur bouton voir les imprimantes

usf print

Une image ne m'informe pas sur les procédures utilisées...

Et une précision : je suis intervenu sur la mise en page pour impression, et par extension le raccordement au lancement de l'impression pour plusieurs feuilles. Je n'interviens pas sur le choix d'imprimante.

MFerrand a écrit :

Une image ne m'informe pas sur les procédures utilisées...

Et une précision : je suis intervenu sur la mise en page pour impression, et par extension le raccordement au lancement de l'impression pour plusieurs feuilles. Je n'interviens pas sur le choix d'imprimante.

Merci et oui je sais puis le choix d'imprimante marche j'ai trouve comment faire en bidouillant le code, désole pour l'erreur

C'est quoi la procédure ?

J'ai un module où j'ai mon code pour la mise en page et aperçu de chaque mois, ce que vous m'avez déjà aider, merci où j'ai cela en début de module

Declare PtrSafe Function GetProfileString Lib "Kernel32" _
Alias "GetProfileStringA" (ByVal lpAppName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Integer) As Integer
Public CBCouleur As Boolean  ==>c'est pour la couleur dans USF
Public CBRecto As Boolean ==> c'est pour recto verso dans USF
Public CBA3 As Boolean ==> c'est pour le format de papier dans USF
Option Explicit

ou je dois mettre DIM CBRecto dans USF où il se trouve afin que je puisse l'avoir dans le module où se trouve la fonction qui lance aperçu de chaque mois ?

Puis dans USF j'ai ce code quand on clique sur aperçu pour chaque mois j'ai ceci qui s’exécuter

 If CBImpressionMois = "Février " & ActiveSheet.Name Then
       Unload ImpressionMois
       Print_Janvier
    End If

donc si je met Print Janvier Print Mars comme faire que Print Janvier sois sur une page et ensuite Print Mars sur une autre page, mais avec votre aide et mes bêtise j’apprends et je suis presque en bout

Le Print_Janvier devra être modifié pour imprimer plusieurs feuilles...

Est-ce que l'utilisateur choisit les feuilles à imprimer ?

Il faut que tu mettes un fichier pour qu'on avance, allégé si important : il faut le Userform et voir comment il est lancé, présence de feuilles pour qu'on puisse articuler l'impression mais tu peux alléger le contenu...

Ok merci je vais fait cela avec 3 onglets en total ACCEUIL et 2013 2014

sachant que dans onglet 2013 il y a 12 mois donc 12 zone d'impression et ensuite en 2014

Sur onglet 2013 quand on lance USF on peux choisir chaque mois ou l'année entier et en 2014 la même chose

Sur onglet ACCUEIL le même USF se lance mais on peux choisir une année ou plusieurs années mais ce sera un autre sujet plus tard quand j'aurai su comment faire pour afficher que des onglet alphanumérique uniquement dans un textbox.

Je vais joint le fichier d'ici 10 minutes une fois j’allège avec tous les formule mathématique et autres onglets qui ne servant à rien pour ce sujet.

Merci

Voici le fichier alleger où il y a juste 2 onglets 1 texte et 1 alphanumérique

dans vba 2 modules et un USF

sachent que dans le vrai fichier il y a quelques onglets texte puis onglet numérique

Merci

73testmiseenpage.xlsm (248.07 Ko)

Si je vois bien, les feuilles sont annuelles et tous les mois sont sur la même feuille ?


Je vois ça dès que possible, des variables sont déclarées mais l'affectation de valeurs à partir du Userform n'est pas faite.

Il y a une ambiguïté de choix aussi : on oblige à choisir un mois d'un côté et on demande si on veut l'année de l'autre. Il faut coupler ça :

  • soit on choisit l'année et => impression des 12 mois
  • soit on choisit un mois et => impression du mois

Il n'y a pas la possibilité de choisir plusieurs mois.

Utilisateur peux choisir un mois uniquement ou les 12 mois annee quand on est sur 2012

Puis quand on est sur accueil on peut imprimer année 2012 ou des année 2013, 2014 2015 en une fois

Je ne sais pas si je ne suis pas bien exprimer mais merci pour l'aide

Tes mois occupent 45 lignes sauf 1 (février).

Il faudrait rectifier cette anomalie, et ensuite que tu m'assures que ce sont bien les mêmes qui occupent exactement les mêmes plages pour chaque année.

Merci pour la réponse et oui chaque mois comporte 45 lignes sauf février cause que le dimanche doit toujours tombe sur la même ligne dans chaque mois. ==> c'est pour cela cette anomalie. Architecture de chaque onglet pour chaque année ne change pas c'est à dire que chaque mois à toujours le même nombre de lignes.

Exemple pour le mois de décembre qui a 31 jours si je le met sur 31 ligne, le dimanche ne vas jamais tombé sur la même ligne suivant l'année donc j'ai fait 45 lignes afin que le dimanche tombe chaque fois sur la même ligne.

Sur chaque année la plage pour chaque mois est identique exemple pour le mois de novembre le premier jour tombe sur ligne 145 pour année 2014 alors que pour 2017 il tombe sur 143.

Donc pour résumer je confirme que la plage pour chaque mois est identique sur chaque onglets (année )

Merci encore une fois de donner de ton temps afin d'aider puis avec tes commentaires ensuite dans le code je pourrais comprendre comme cela marche.

Peu importe le nombre de lignes du moment que c'est le même nombre !

Tu n'expliques pas pourquoi février devrait faire exception !!

En ce qui concerne mois de février qui a 28 jours sauf tous les 4 ans ou il y a 29 jours donc j'ai fait plusieurs essai afin de voir ou tombe dimanche et j'ai trouvé ce nombre de lignes comme optimiser afin de ne pas avoir bcp de lignes vide.

Mais je n'est pas essayer avec le même nombre de lignes comme les autres ou si c'était il y a déjà plusieurs années.

J'espère que les explications pour le mois de février sont clair pourquoi mois février est différent des autres mois.

Si tu as un problème de longueur, rien ne t'empêche de masquer des lignes.

Mais je ne vois pas de justification que pour 2 malheureuses lignes on ne puisse mettre en place une définition de plages mensuelles par décalage.

Merci pour l'aide et je vais essayer de mettre la même plage pour le mois de février comme pour les autres mois en espérant que cela ne vas pas casser routes mes formule car au mois de janvier j'ai la formule qui vas chercher les infos sur le mois de décembre de l'année - 1.

Je sais pourquoi j'ai mis une plage différent pour le mois de février c'est pour que la dernier ligne du mois de février soit 29 suivant l'année

Mais je vais écouter ton conseil et essayer de mettre la même plage puis modifier les formule dans le mois de février pour prendre en compte cette nouvelle plage sur les lignes où se trouvent les dimanches.

Des que je corrige cette plage, en espérant que cela ne vas pas prendre bcp du temps je reviens

Merci pour l'aide

PS : cacher des lignes cela ne sert à rien vu que dans chaque mois il y a des lignes vides qui ne sont pas les mêmes suivant les années. Une fois ce sont les premières lignes qui sont vide et une vois les derniers lignes qui sont vide.

Rechercher des sujets similaires à "macro imprimer zone impression fois"