Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

IMPRESSION AUTOMATIQUE D'UN TABLEAU EXCEL AVEC CHOIX DE L'IMPRIMANTE


Information sur la source

Description

Bonjour à tous, je dépose aujourd'hui ma première source. Elle semblera peut-être très simple pour certains, mais j'ai bien galéré pour la réaliser quand même donc si ça peut aider!
Ce bout de code permet d'imprimer un tableau automatiquement en ajustant la taille aux lignes remplies, il permet également de choisir l'imprimante à utiliser pour cette impression.
 

Source

  • Public Sub imprime()
  • Dim i As Integer
  • Dim j As Integer
  • 'Choix de l'imprimante
  • Application.Dialogs(xlDialogPrinterSetup).Show
  • 'Initialisation des variabales (i=9 pour début impression à la ligne 9)
  • i = 9
  • j = 0
  • 'Test cellule vide dans la colonne 2, dernière ligne remplie dans j
  • While ActiveSheet.Cells(i, 2) <> ""
  • i = i + 1
  • j = i - 1
  • Wend
  • 'Définition de la zone d'impression nombre de lignes:j nombre de colonnes:13
  • ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(j, 13)).Address
  • ActiveWindow.SmallScroll Down:=-18
  • 'Impression des lignes 1 à 8 en tête de chaque page
  • With ActiveSheet.PageSetup
  • .PrintTitleRows = "$1:$8"
  • .PrintTitleColumns = ""
  • End With
  • With ActiveSheet.PageSetup
  • 'Afichage du nombre de pages en en-tête
  • .CenterFooter = "&""Arial,Gras""&12Page &P/&N"
  • .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.31496062992126)
  • .CenterHorizontally = True
  • .CenterVertically = False
  • .Orientation = xlLandscape
  • .Draft = False
  • .PaperSize = xlPaperA4
  • .FirstPageNumber = xlAutomatic
  • .Order = xlDownThenOver
  • .BlackAndWhite = False
  • 'affiche le tableau sur une page en largeur.. défini manuellement par test
  • .Zoom = 49
  • .PrintErrors = xlPrintErrorsDisplayed
  • End With
  • 'Impression
  • ActiveSheet.PrintOut
  • 'Positionnement sur la cellule A9
  • Range("A9").Select
  • End Sub
Public Sub imprime()
Dim i As Integer
Dim j As Integer

'Choix de l'imprimante
Application.Dialogs(xlDialogPrinterSetup).Show

'Initialisation des variabales (i=9 pour début impression à la ligne 9)
i = 9
j = 0

'Test cellule vide dans la colonne 2, dernière ligne remplie dans j
While ActiveSheet.Cells(i, 2) <> ""
i = i + 1
j = i - 1
Wend
    
'Définition de la zone d'impression nombre de lignes:j nombre de colonnes:13
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(j, 13)).Address
    ActiveWindow.SmallScroll Down:=-18
'Impression des lignes 1 à 8 en tête de chaque page
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$8"
        .PrintTitleColumns = ""
    End With
    With ActiveSheet.PageSetup
'Afichage du nombre de pages en en-tête
        .CenterFooter = "&""Arial,Gras""&12Page &P/&N"
        .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.31496062992126)
        .CenterHorizontally = True
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
'affiche le tableau sur une page en largeur.. défini manuellement par test
        .Zoom = 49
        .PrintErrors = xlPrintErrorsDisplayed
    End With
'Impression
ActiveSheet.PrintOut
'Positionnement sur la cellule A9
Range("A9").Select

End Sub

Conclusion

J'attends la critique avec un peu d'impatience pour savoir ce que j'aurais pu améliorer là-dedans.
Merci d'avance
 

Commentaires et avis

signaler à un administrateur
Commentaire de Renfield le 27/03/2007 08:33:22 administrateur CS

pourquoi A9 ? (un parametre a ta fonction serait plus judicieux)

interdit d'avoir une cellule vide ?
While ActiveSheet.Cells(i, 2) <> ""
i = i + 1
j = i - 1
Wend

utilises plustot SpecialCells(xlCellTypeLastCell)

pas mal, en somme, mais trop de choses en dur (comme la colonne 13...)

signaler à un administrateur
Commentaire de tubafat le 27/03/2007 15:32:56

Merci pour ce conseil, je ne connaissais pas cette fonction qui a l'air bien pratique et plus complète que "ma boucle".

Quand tu parles de "choses en dur", tu veux dire par là de valeurs définies par la macro et non par des variables?

Pour le A9 c'était propre à la première utilisation que j'ai fait de cette fonction, j'aurais du le changer avant de poster la source!

signaler à un administrateur
Commentaire de Renfield le 27/03/2007 15:35:46 administrateur CS

il t'est toujours possible de mettre a jour ta source

http://www.vbfrance.com/ajoutcode.aspx?ID=41958

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

impression automatique [ par rico2472 ] comment imprimer automatiquement un etat sous microsoft access a une heure precise chaque jour ? Macro excel pour faire un impression automatique [ par trr_labs ] Salut a tous!Est-ce que quelqu'un peut m'aider a faire un programme macro avec excel. Il parait un peu simple mais je ne connait rien sur la programma retour à la ligne automatique avec un textbox [ par fred ] Bonjour,Lorsque j'écris dans mon textbox multiligne, si je ne fais pas de retour à la ligne via la touche entrer, à l'impression ( printer.print txtbo Impression automatique des attachments [ par Neodubois ] Bonjour,J'utilise Office 2003, j'ai la possilité de créer une "rule" qui va selectionner les mails que j'aurai défini, lui applique un script et ensui Imprime écran et impression automatique [ par bo2ni ] Bonjour, J'aimerais développer un script .VBS qui aura pour but de :(1) Faire une copie d'écran de la fenêtre active vers le presse papier ( Bouton d'impression automatique [ par SteelBoy ] Bonjour,Je code en asp.net c# et je voudrais imprimer une vue d'une base de donnée (un DataGrid) avec un simple bouton.Que faire ?Merkiii impression automatique [ par Julvacs ] Bonjour à tous,je cherche actuellement à imprimer un fichier html à partir d'une application en VBA mais je n'ai trouvé aucun moyen de le faire de fac impression automatique [ par Julvacs ] Bonjour à tous,je cherche actuellement à imprimer un fichier html à partir d'une application en VBA mais je n'ai trouvé aucun moyen de le faire de fac Impression d'un programme DOS sous XP pour une imprimante réseau [ par cricri2804 ] L'impression d'un programme DOS sous un environnement XP comportant une imprimante réseau (ou partagée) ne se fait pas. Sous Windows 98, dans les prop Gros bug d'impression VB6, multipages catastrophique [ par Kouran666 ] bonjours à tous, voila mon prob, mon programme sert à établir des devis. Or lorsque je lance l'impression, pour une page pas de prob il me la sort nik


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.