XL 2019 Impression automatique en vba

michelf

XLDnaute Junior
Bonjour, je suis en phase finale de la création d'un bulletin scolaire.
J'ai une macro qui me permet de les générer tous en format pdf.
Je voudrais, à la place (ou en plus) pouvoir les imprimer tous... Je pensais utiliser .printout mais je ne sais pas comment l'intégrer dans (ou en +) de la macro ci-dessous.
Quelqu'un peut-il m'aider, merci d'avance


Sub ImpressionDesBulletins()
Dim c As Range
For Each c In Worksheets("Elèves").Range("A3:A24")
Worksheets("Bull").Cells(1, 8).Value = c.Value
' ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=
Worksheets("Bull").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Temp\" & c.Value & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

Next

End Sub
 

Etoto

XLDnaute Barbatruc
Bonjour, je suis en phase finale de la création d'un bulletin scolaire.
J'ai une macro qui me permet de les générer tous en format pdf.
Je voudrais, à la place (ou en plus) pouvoir les imprimer tous... Je pensais utiliser .printout mais je ne sais pas comment l'intégrer dans (ou en +) de la macro ci-dessous.
Quelqu'un peut-il m'aider, merci d'avance


Sub ImpressionDesBulletins()
Dim c As Range
For Each c In Worksheets("Elèves").Range("A3:A24")
Worksheets("Bull").Cells(1, 8).Value = c.Value
' ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=
Worksheets("Bull").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Temp\" & c.Value & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

Next

End Sub
Hello,

Pourquoi transformer en PDF pour après l'imprimer, est-ce pas mieux d'imprimer le fichier Excel et si tu en as besoin, le transformer en fichier PDF ?
 

Etoto

XLDnaute Barbatruc
je vais essayer, je dois "supprimer" la partie "pdf" alors ?? ou ajouter cette commande quelque part ??
Cela dépend si tu as besoin du PDF. Si tu veux garder la transformation PDF, tu peux placer ce code au dessus du reste. Si tu ne veux pas du PDF tu remplace le code.

Voici le code pour imprimer le fichier entier :

VB:
ActiveWorkbook.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

Et si tu veux imprimer par exemple que les 20 premières pages :

Code:
ActiveWorkbook.PrintOut From:=1, To:=20 Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
 

Etoto

XLDnaute Barbatruc
De rien. Et si tu veux optimiser l'impression tu peux faire

VB:
Sub imprimer()

NBcopies = [B1]
Page_départ = [B2]
Page_fin = [B3]

ActiveWorkbook.PrintOut From:= Page_départ, To:= Page_fin Copies:= NBcopies, Collate:=True, _
        IgnorePrintAreas:=False

End Sub

Comme ça tu précise dans la cellule B1 le nombres de copies, en B2 page de début et B3 page de fin.
Mais si tu veux vraiment tout imprimer tu peux simplement faire :

VB:
NBcopies = [B1]

ActiveWorkbook.PrintOut Copies:= Nbcopies, Collate:=True, _
        IgnorePrintAreas:=False

Cordialement
 

michelf

XLDnaute Junior
Salut
Je reviens sur cette macro qui marche très bien après les améliorations qui m'ont été proposées.
Je voudrais cependant encore l'améliorer; en effet chaque année en fonction du nombre d'élèves je dois aller modifier ma macro dans la ligne : "For Each c In Worksheets("Elèves").Range("A3:A24")"
Il me semble qu'il est possible de "dire" à ma boucle de s'arrêter quand elle trouve une ligne vide. Hélas je ne sais pas comment l'écrire.
La liste des élèves se trouve donc dans l'onglet "Elèves" sur 3 colonnes 1) la référence 2) le prénom 3) le nom

Re voici ma macro actuelle
Merci d'avance

Sub ImpressionDesBulletins()
Dim c As Range
For Each c In Worksheets("Elèves").Range("A3:A24")
Worksheets("Bull").Cells(1, 8).Value = c.Value
' ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=
Worksheets("Bull").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Temp\" & c.Value & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
 

Discussions similaires

Statistiques des forums

Discussions
312 023
Messages
2 084 715
Membres
102 637
dernier inscrit
TOTO33000