Impression d'une page en VBA

Mister Binaire

XLDnaute Occasionnel
Bonjour à Toutes & Tous,

Qui peut me donner le code en VBA pour imprimer une feuille dans un classeur excel.

Vous remerciant par avance..


Mister Binaire
 

Roland_M

XLDnaute Barbatruc
Re : Impression d'une page en VBA

bonjour,

Code:
'initiatiser les var suivantes avant appel:
'------------------------------------------
'Feuil$ = nom de la feuille
'MsgEntete$ si nécessaire !?
'ZoneImpression$ = Range(Adresse)
'OrientationPage = xlPortrait ou xlLandscape
'LPTSautDePage =0(sans) ou =1(avec)

Public Sub ImprimerCetteFeuil(Feuil$, MsgEntete$, ZoneImpression$, OrientationPage, SautDePage)
Application.ScreenUpdating = False
On Error GoTo ErrLPT: Err.Clear

'----- mise en page -----------
Sheets(Feuil$).Select
With ActiveSheet.PageSetup
    .Zoom = False 'pas true sinon FitToPagesTall invalide
  If SautDePage Then
    .FitToPagesTall = False 'permet le saut de page si trop haut
  Else
    .FitToPagesTall = 1 'impose sur la hauteur de la page
  End If
    .FitToPagesWide = 1 'impose sur la largeur de la page(toujours)
  If OrientationPage Then .Orientation = OrientationPage Else .Orientation = xlPortrait
    .CenterHorizontally = False
    .CenterVertically = False
  If ZoneImpression$ > "" Then .PrintArea = ZoneImpression$ 'sinon page entière
    .LeftHeader = MsgEntete$: .CenterHeader = "": .RightHeader = ""
    .LeftFooter = "": .CenterFooter = "": .RightFooter = ""
  If MsgEntete$ > "" Then .TopMargin = Application.CentimetersToPoints(0.75) Else .TopMargin = 0
    .LeftMargin = 0: .RightMargin = 0: .HeaderMargin = 0: .BottomMargin = 0: .FooterMargin = 0
End With

'--- appel boîte DialogPrint ----
Application.ScreenUpdating = True
Application.Dialogs(xlDialogPrint).Show
On Error GoTo 0: Err.Clear: Exit Sub

ErrLPT: 'traitement erreur ------
Application.ScreenUpdating = True
Msg$ = "Erreur " & Err.Source & "  No " & Err.Number & vbLf & vbLf & Err.Description
MsgBox Msg$, vbCritical, "", Err.HelpFile, Err.HelpContext
On Error GoTo 0: Err.Clear: Exit Sub
End Sub
 

Excel-lent

XLDnaute Barbatruc
Re : Impression d'une page en VBA

Bonjour,

Mister Binaire à dit:
Il faut créer un "Sub" ???

Oui

Mister Binaire à dit:
le code je dois le mettre dans un module ??

C'est possible, mais tu peux également la mettre dans l'onglet voulu

Bref :
-> cliquer sur "ALT" + "F11"
-> dans l'arborescence de gauche, faire un clic sur ton onglet (ou créer un nouveau module mais plus long)
-> une fois l'onglet ainsi sélectionner, écrire dans la zone de droite :

Sub MacroPourImprimer()

Sheets("Nom de ton onglet").PrintOut

End Sub

Fermer la fenêtre : "éditeur VBA" pour retourner sur ta feuille excel

Mettre dessus ton fameux dessin d'imprimante

Une fois fais, faire UN clic GAUCHE dessus (le dessin, pour le sélectionner)
Puis faire UN clic DROIT
Puis dans le menu contextuel qui apparaît à côté de ton curseur, sélectionner : "affecter une macro"
Une fenêtre s'ouvre, avec la liste de tes macros, il te suffit de sélectionner la macro : "MacroPourImprimer"
Puis valider

Et voilà! C'est fini! Maintenant, chaque fois que tu plassera ton curseur au dessus du dessin, au lieu d'avoir une flèche, tu aura un doigt. Et si tu clic sur le dessin, la macro se lancera AUTOMATIQUEMENT.

Bonne après midi
 

Papou-net

XLDnaute Barbatruc
Re : Impression d'une page en VBA

Bonjour à tous,

@ Mister Binaire,

Une autre approche du problème : as-tu pensé à lancer l'enregistreur de macro pour faire tes réglages et ton impression ?

Cette macro se placera d'elle-même dans un module et, en la déroulant pas-à-pas (touche F8 dans l'éditeur VB), tu en apprendras sûrement beaucoup sur les lignes de code.

Et, en persévérant, un jour sûrement tu seras obligé de transformer ton pseudo en "Sir Binaire". En tout cas, c'est ce que je te souhaite.

Cordialement.

PS : salutations Excel-lent, Roland_M
 

Mister Binaire

XLDnaute Occasionnel
Re : Impression d'une page en VBA

Merci à vous tous les champions du VBA !!
Dès lundi je vais me remettre au boulot avec vos codes.
Papou net tu me parles de lancer l'enregistreur de macro ??? c'est quoi et comment faire.

Si ma mise en page pour l' impression est effectuée via excel après avoir déterminé mon champs d'impression etc etc ... La macro Excel-Lent imprimera ma feuille comme déterminée via excel ??

Bonne soirée ces messieurs et merci encore de votre aide bien précieuse !!

MB
 

Papou-net

XLDnaute Barbatruc
Re : Impression d'une page en VBA

Re :

Papou net tu me parles de lancer l'enregistreur de macro ??? c'est quoi et comment faire

Pour lancer l'enregistreur de macro, tu fais un clic gauche sur l'icône à droite de Prêt, dans la barre d'état d'Excel. Cette icône se transforme en carré plein.

Tu fais toutes tes manipulations voulues et, lorsque tu as terminé, tu refais un clic gauche sur la même icône ce qui met fin à l'enregistrement.

Pour voir la macro, tu tapes ALT + F11 et, dans la fenêtre de gauche tu développes Modules et tu double-cliques sur Module1. Le code s'affiche alors dans la fenêtre principale (Sub Macro1()...End Sub).

Tu peux aussi activer l'onglet Développeur dans le ruban et cliquer sur la première icône de gauche (Visual Basic).

Espérant avoir répondu.

Cordialement.
 

Pièces jointes

  • MB1.jpg
    MB1.jpg
    44.3 KB · Affichages: 114
  • MB2.jpg
    MB2.jpg
    33.8 KB · Affichages: 101
  • MB3.jpg
    MB3.jpg
    57.7 KB · Affichages: 91

Mister Binaire

XLDnaute Occasionnel
Re : Impression d'une page en VBA

Merci à toi Papou-Net c'est super cet enregistreur de macro, ce la va me permettre désormais de mieux comprendre le code.

Papou-Net j'ai encore un service à te demander stp.

J'ai construits un fichier au travail pour notre métrologue pour le suivi des appareils de mesures de la société.
Sur le dernier onglet apparaît toute la synthèse du mois avec le pourcentage d'étalonnage réalisé par atelier.
Il faudrait que ce dernier onglet soit transmis à la responsable hiérarchique du métrologue.
Existe t'il une macro qui permettrait d'envoyer chaque mois cet onglet dans un autre classeur ou serait cumulé ainsi toutes les synthèses des mois. Ainsi la Responsable aurait une visue sur toutes les synthèses mensuel dans un classeur qui lui serait propre.

Espérant avoir été clair !!!

Te remerciant par avance...

Cordialement,
MB
 

Papou-net

XLDnaute Barbatruc
Re : Impression d'une page en VBA

Bonjour MB,

Tout d'abord, si ta feuille à envoyer contient des liaisons avec d'autres feuilles du même classeur, ou d'un autre, le mieux est de copier cette feuille dans ton classeur actif, de l'envoyer par mail et enfin de la supprimer.

C'est cette logique que déroule la macro ci-dessous :

Code:
Sub EnvoiFeuille()
'Ajoute une feuille après la dernière
Sheets.Add After:=Sheets(Sheets.Count)
'Copie la feuille concernée qui est maintenant l'avant-dernière
Sheets(Sheets.Count - 1).Cells.Copy
'Colle les valeurs et les formats sur la nouvelle feuille
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
  , SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
'Désactive l'affichage des messages système
Application.DisplayAlerts = False
  
' ---------- Ici le code pour envoi de la feuille -----------
  
'Efface la feuille temporaire
ActiveSheet.Delete
'Réactive l'affichage des messages système
Application.DisplayAlerts = True
End Sub
N'étant pas en mesure de tester l'envoi par mail, je te laisse compléter la macro en lieu et place de la ligne Ici le code ...

Tu peux donc utiliser l'enregistreur de macro pour simuler l'envoi, puis récupérer le code pour l'insérer dans EnvoiFeuille.

Sinon, une recherche sur la toile te fournira moult explications concernant cette opération.

Espérant avoir pu t'aider.

Bonne journée.

Cordialement.
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : Impression d'une page en VBA

Bonjour Mister Binaire, tout le monde,

Mister Binaire à dit:
Si ma mise en page pour l' impression est effectuée via excel après avoir déterminé mon champs d'impression etc etc ... La macro Excel-Lent imprimera ma feuille comme déterminée via excel ??

La macro que je t'ai indiqué plus haut :
-> imprime la feuille sélectionnée selon la mise en page effectué au préalable sur ta page. C'est à dire qu'il imprime ta feuille en respectant :
-----> la zone défini (si tu as défini une zone)
-----> la mise en page (si tu l'as défini : marge, taille du papier, ligne à répéter en haut, colonne à répéter à gauche, en-tête, pied de page, ... bref tout)

-> elle imprime la feuille en un exemplaire
-> la feuille sortira sur l'imprimante par défaut (à condition qu'il reste du papier lol)

Espérant avoir répondu à tes questions

Bonne journée
 

Mister Binaire

XLDnaute Occasionnel
Re : Impression d'une page en VBA

Merci Excel- Lent l'impression marche à merveille !!

Cependant je voudrais maintenant envoyer l'onglet de synthèse du mois à la responsable.
Papou-Net m'avait déjà donné une partie du code pour copier la feuille.
Mais c'est pour l'envoi que j'ai du mal car la messagerie du boulôt c'est Gmail alors comment faire ???

Merci à tout ceux et toutes celles qui pourront m'aider !!!

En PJ mon fichier.

Amicalement,
MB
 

Pièces jointes

  • Planning Mois Prévision Avancement .xls
    812.5 KB · Affichages: 80

Mister Binaire

XLDnaute Occasionnel
Re : Impression d'une page en VBA

Bonjour à Toutes & Tous ,

Personne ne peut m'aider concernant ma nouvelle demande ??
1) copier dans un nouveau classeur uniquement l'onglet synthèse (il manque les formules dans cet onglet mais c'est pas grave)
2) l'envoyer en PJ à l'adresse de la Responsable mais dans une messagerie Gmail !!
3) conserver à l'identique le classeur initiale car j'ai remarqué que lors de la copie dans un autre classeur de l'onglet synthèse les formules ont disparues sur cet onglet ????

Merci de votre aide...

Amicalement,
MB
 

Discussions similaires

Réponses
45
Affichages
918
Réponses
2
Affichages
132