Macro pour imprimer plusieur zone d'impression en une fois
J'ai constaté que l'effet sur les sauts de page (horizontaux) n'était provoqué que par FitToPagesTall (définition en hauteur).
[Je suppose que FitToPagesWide fait la même chose avec les sauts de page verticaux...]
Mais on peut donc garder la largeur à 1 et ne plus définir la hauteur. Les essais antérieurs ont montré que la largeur une fois définie, on avait de la marge en hauteur. On peut donc réintroduire les sauts de page !
Je suis donc revenu à la 1re version, réaménagée avec sauts de page pour l'année (et ton option CenterFooter).
Merci MFerrand,
Tout marche comme il faut surtout la mise en page, j'ai enfin fini cet USF impression grâce à toi donc une fois encore Merci, 98 % fini
Si je peux encore abuse de ta disponibilité je viens de modifier ton exemple afin d'avoir ce que je cherche à savoir.
Avoir une option qui demande Aperçu Oui ou Non afin d'avoir un aperçu ou imprimer directement via la macro dans le module1 ou Un bouton Aperçu et un bouton Imprimer et qui appelle la même macro mais suivant le bouton elle exécute un aperçu ou elle exécute impression.
Si elle exécuter l'impression alors un USf est appelle qui demande combien copie, une fois mis le nombre l'impression s’exécute et un USf s'affiche qui dit combien exemplaire sont en cours d'impression puis en out de 5 secondes il se ferme.
Ce qui ne marche pas, je ne sait pas comment faire pour faire un aperçu ou imprimer avec même code. Ce que je sais de faire un copie colle mais cela fait bcp plus de ligne et donc mémoire excel.
Puis mon message s'affiche mais pas combien exemplaire au total puis le message ne se ferme pas automatiquement.
Puis si on met 0 comme nombre de copie j'ai erreur donc i on met 0 alors annuler l’exécution du code.
J'ai mis le fichier afin de voir résultat et ce que j'ai mis.
Merci pour l'aide
Si tu veux rajouter un bouton pour imprimer directement, parallètement à l'aperçu, il faut le mettre en place, de même que le userform demandant le nombre de copies. On fera pointer sur la même procédure à l'intérieur de laquelle on identifiera les options.
La variable recueillant le nombre de copies pourrait d'ailleurs être utilisée pour distinguer Impression directe et Aperçu.
Bonjour, dans le fichier exemple que j'ai mis dans le post précédant, j'ai oublier de mettre le bouton Imprimer en plus de Aperçu donc dans voilà le fichier corriger.
En ce qui concerne j'ai créer USF qui demande nombre de copie ainsi que USF qui affiche que l'impression est lancé.
Voici le code pour USF nombre de copie
Private Sub cmdok_Click()
ActiveWindow.SelectedSheets.PrintOut Copies:=1 * TextBox1, Collate:=True
'MsgBox "Les documents sont en cours d'impression.", vbInformation ==> C'est USF ImpressionEncours qui affiche message car avec msg box je n'arrive pas à fermer automatiquement
CombienCopie.Hide
ImpressionEncours.Show
End Sub
Code de ImpressionEncours
Private Sub UserForm_Activate()
ImpressionEncours.Show 0
NextTime = Now + TimeValue("00:00:01")
Application.OnTime NextTime, "FermerUSF"
Me.LImpressionEnCours.Caption = "Vos documents sont en cours d'impression en X exemplaire."
End Sub
Merci pour et avec ton aide j'arrive à pige de plus en plus code VBA, j'ai même change tri d'année afin d'avoir 2013,2014,2015 et lieu de 2015,2014,2013
Par contre mon code pour impression n'imprimer pas ce qui faut car il n'est pas lier à la macro
j'ai même change tri d'année afin d'avoir 2013,2014,2015 et lieu de 2015,2014,2013
Aah !
Tu m'accorderas bien un peu de repos cette soirée !
Joyeuses Pâques comme le veut la tradition... (si elle recommandait l'inverse, je ne suivrais pas !)
MFerrand a écrit :j'ai même change tri d'année afin d'avoir 2013,2014,2015 et lieu de 2015,2014,2013
Aah !
J'avais cru que le plus récent pouvait intéresser en premier...
Tu m'accorderas bien un peu de repos cette soirée !
Joyeuses Pâques comme le veut la tradition... (si elle recommandait l'inverse, je ne suivrais pas !)
Joyeuses Pâques et bonne chasse
Bon repos et moi de mon côte je vais essaye d'y trouve moi même mais je n'y promets rien.
J'ai ajusté l'introduction des copies... Si on met 0 ou si on annule, cela basculera sur l'aperçu.
Merci MFerrand,
Cela marche impeccable par contre comment je puisse quand j'affiche USF ImpressionEncours que dans cet USF ,j'ai le nombre de copies que je suis en train d'imprime ?
Pour lancer mon USF, j'ai mis ceci
On Error GoTo 0
If cpImpr > 0 Then
.PrintOut copies:=cpImpr
ImpressionEncours.Show
Else
Ceci m'appelle bien mon USF mais il n'affiche pas le total de copie que je suis en train de faire.
Dans le code de mon USf j'ai cela :
Private Sub UserForm_Activate()
Dim cpImpr%, NextTime
ImpressionEncours.Show 0
NextTime = Now + TimeValue("00:00:01")
Application.OnTime NextTime, "FermerUSF_ImpressionEncours"
Me.LImpressionEnCours.Caption = "Vos documents sont en cours d'impression en cpImpr% exemplaire"
End Sub
et le code pour FermerUSF_ImpressionEncours, j'ai mis dans un module avec ce code :
Sub FermerUSF_ImpressionEncours()
ImpressionEncours.Hide
End Sub
En clair comment je puisse récupérer la variable cplmpr défini dans USF CombienCopie via la macro ImpressionAnnéeMois afin de l'afficher dans USF ImpressionEncours ?
Pour avoir ceci : "Vos documents sont en cours d'impression en cpImpr exemplaire" où cplmpr est défini par
If IsNumeric(CombienCopie.TextBox1.Value) Then
cpImpr = CInt(CombienCopie.TextBox1.Value)
Else
dans la function qui permet impression ou aperçu
Pas fait attention à ça ! tu es sûr que tu en as besoin !
Tu peux faire :
On Error GoTo 0
If cpImpr > 0 Then
.PrintOut copies:=cpImpr
Load ImpressionEncours
ImpressionEncours.LImpressionEnCours.Caption = "Vos documents sont en cours d'impression en " _
& cpImpr & " exemplaires."
ImpressionEncours.Show
Tu le charges, initialise l'étiquette et l'ouvre. Pour l'ouvrir en non modal, tu peux le fixer dans la fenêtre de propriété (ShowModal à définir une fois pour toutes).
A l'activation, il te reste :
Private Sub UserForm_Activate()
NextTime = Now + TimeValue("00:00:05")
Application.OnTime NextTime, "FermerUSF"
End Sub
Si tu ne mets qu'une seconde, c'est un peu court. Inutile de l'ouvrir une 2e fois, si activate intervient c'est qu'il est ouvert.
Pour fermer, tu peux passer directement à : Unload ImpressionEnCours
Ou bien tu supprimes Activate et Fermer et tu mets une procédure de fermeture au Click sur le Userform (ou l'étiquette si celle-ci occupe toute la surface). Dans ce cas rajouter une étiquette pour dire Cliquer pour fermer.
Ouf! Tu as du goût pour les noms longs...
Pas fait attention à ça ! tu es sûr que tu en as besoin !
Oui en cas ou on met un gros nombre sans savoir et avec ce USF on peut le voir et aller annuler l'impression s'il faut
Ouf! Tu as du goût pour les noms longs...
Tout marche comme il faut à 99.99 %
ImpressionEncours.LImpressionEnCours.Caption = "Vos documents sont en cours d'impression en " _
& cpImpr & " exemplaires."
Parce qu'il m'affiche Vos documents sont en cours d'impression en 1
et donc exemplaires. ne s'affiche pas.
Mais merci bcp pour ton aide et ta disponibilité parce que mon USF pour l'impression est fini enfin presque il lui manque 0.01 %
Bonne pâques et j’espère que la chasse aux œufs était bonne
Faut l'agrandire. C'est qu'elle est pas assez grande pout tout contenir.
Les oeufs ! J'avais liquidé la nuit dernière.
MFerrand a écrit :Les oeufs ! J'avais liquidé la nuit dernière.
Donc au mois la chasse était bonne la nuit dernière.
J'ai bien agrandi mon USF ImpressionEncours, je lui est mis d'abord
Width = 700 puis Width = 1020,75 dans les propriétés de USF mais toujours même erreur cad qu'il me manque mot exemplaires. après la variable & cpImpr &
Dans USF j'ai ceci : Vos documents sont en cours d'impression en X où X représente nombre de copies.
Agrandir le Userform, OK ! Mais c'est aussi et surtout l'étiquette qu'il faut agrandir !
MFerrand a écrit :Agrandir le Userform, OK ! Mais c'est aussi et surtout l'étiquette qu'il faut agrandir !
Yep je n'avais plus mes yeux devant
Merci et encore et Bravo
Bonjour à tous je viens exposer mon projet un similaire au sujet
je disqpose dans mon classeur deux feuille que je voudrais imprimer en une seule. Pour ce faire j'ai nommer des zone d'impression
zone d'impression 1 nommée "METEO"
je voudrais l’imprimer en pdf en en portrait
Zone d'impression 2 nommée "Analyse"
cette zone est en effet un tableau que je voudrais imprimer à la suite de la première zone d'impression en PDF mais en "Paysage". Aussi le tableau étant petit serait t'il possible qu'il prennent tout les bord de la feuille en Paysage (c'est à dire zoomer au maximum sur la page) pour une meilleure lecture.
Je travaillais sur le code ci dessous
Sub Print_Janvier()
ActiveSheet.PageSetup.PrintArea = "METEO" 'comment ajouter la seconde zone apres la première ici?
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