Imprimer un classeur (vba-excel) - VB/VBA/VBS - Programmation
Marsh Posté le 07-06-2007 à 18:59:13
par défaut, le printpreview te montre la page en cours de la feuille encours... tu veux voir la feuille 2 en printpreview ?
Marsh Posté le 07-06-2007 à 19:17:28
oui en fait je veux voir toutes les feuilles d'un seul coup en printpreview
il me semble que c'est faisable avec la commande printout mais je gère pas bien la syntaxe
Marsh Posté le 07-06-2007 à 20:48:45
c'est bon j'ai fini par trouver la syntaxe :
Code :
|
En revanche si quelqu'un sait comment imprimer seulement les 2 premières pages...
Merci d'avance
Marsh Posté le 08-06-2007 à 12:47:34
cad... Le macro recorder c'est un outils de VBStudio ? Perso je développe simplement un macro excel ! Donc pas moyen autrement ?
Marsh Posté le 07-06-2007 à 15:12:47
Salut la compagnie !
Je cherche à faire le truc le plus bête du monde à savoir imprimer la totalité d'un classeur qui contient 2 pages (en fait je voudrais l'aperçu avant impression).
Or la commande suivante ne donne pas le résultat voulu : Workbooks(1).PrintPreview. En fait cette commande me donne l'aperçu de la première page.
Le résultat est identique en avec activeworkbook ou thisworkbook.
D'où ma question : comment faire ?!
Je met la source entière pour voir si ça vient d'un truc que j'aurais dit au dessus.
Merci de votre aide.
++
Private Sub Imprimer_Click()
UF_Main.Hide
Dim i As Integer, page As Integer
i = 1
For page = 1 To 2
worksheets(page).Activate
'cache les colonnes inutiles
Columns("C" ).Hidden = True
Columns("E:H" ).Hidden = True
'largeur de colonne auto
Columns("A:D" ).AutoFit
'mise en page
With worksheets(page).PageSetup
.Orientation = xlLandscape
.LeftFooter = "&D &T"
.CenterHeader = "&B&18&A"
.RightFooter = "&P/&N"
End With
'définie la zone d'impression
Cells(1, 1).Activate
worksheets(page).PageSetup.PrintArea = _
ActiveCell.CurrentRegion.Address
'annule tous les sauts de page
Do
i = i + 1
Rows(i).PageBreak = xlPageBreakNone
Loop While Cells(i, 1).Value <> "POUSSINS"
i = 1
'insère un saut de page entre les catégories
Do
i = i + 1
If Cells(i, 1).Value = "0" Then
i = i + 1
Rows(i).PageBreak = xlPageBreakManual
i = i + 2
Else: i = i + 1
End If
Loop Until IsEmpty(Cells(i, 1)) = True
'reinitialise i
i = 1
Next page
worksheets(1).Activate
'aperçu avant impression du classeur
ActiveWorkbook.PrintPreview
End Sub
Message édité par binoua le 07-06-2007 à 15:17:15