Impression automatique d'un tableau excel avec choix de l'imprimante

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 396 fois - Téléchargée 21 fois

Contenu du snippet

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 / Exemple :


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

A voir également

Ajouter un commentaire

Commentaires

Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
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...)
tubafat
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007
-
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!
Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
il t'est toujours possible de mettre a jour ta source

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.