Impression VBA, CenterFooter = "Page &P de &N"
Bonjour,
J'essaie d'automatiser un format d'impression pour un fichier, les feuilles peuvent contenir un nombre conséquent de données, et Excel ne retrouve pas le numéro de la feuille imprimé sur le nombre de feuilles. Je m'explique. J'ai utilisé l'enregistreur de macro, lorsque j'utilise la macro les feuilles ressortent avec dans la marge de Bas de Feuille : Page
Manuellement (sans macro, en passant par le menu impression) j'ai : Page de 1 à 3
Si je ne dis pas de bétises c'est cette ligne de code qui est censé l'afficher :
.CenterFooter = "Page &P de &N"
Les Paramètres que j'utilise pour l'impression sont :
- >Imprimer les feuilles actives Imprimer uniquement les feuilles activesPages : "" à ""
- >Impression recto verso
- >Assemblé
- >Orientation Paysage
- >A4(210*297mm)
- >Marges personnalisées (voir code pour dimensions)
- >Ajuster toutes les colonnes à une Page Réduire l'impression pour faire une page en largeur.
Mise en Page ->Feuille -> Lignes à répéter en Haut : $1:$4
Voilà ce que j'obtiens avec l'enregistreur et un peu de bidouillage.
Sub Imprimer()
'
' Imprimer Macro
'
'
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$4"
.PrintTitleColumns = ""
End With
Application.PrintCommunication = True
ActiveSheet.PageSetup.PrintArea = ""
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = "Page &P de &N"
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.31496062992126)
.RightMargin = Application.InchesToPoints(0.31496062992126)
.TopMargin = Application.InchesToPoints(0.5)
.BottomMargin = Application.InchesToPoints(0.5)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End Sub
Du coup je ne vois pas trop ce qui empèche Excel de retrouver le numéro des pages qu'il imprime.
Si quelqu'un voit de quelle ligne de code cela pourrait venir ou s'il manque une commande.
Merci à tous.
Bonjour Timothe URVOY,
J'ai déjà eu le problème et cela vient de l'instruction que l'enregistreur de macro met,
mais qu'il ne faut surtout pas utiliser
Application.PrintCommunication = False
Application.PrintCommunication = true
Enlève ces 2 instructions et tu n'auras plus de soucis
A+
Après essai ça fonctionne. Merci Bruno.
Dommage que la fonction bruit strident ne marche plus sur les modèles récents, sinon j'aurais passer 20 bonnes minutes à rester appuyer sur plusieurs touches du clavier pour me donner l'illusion de faire souffrir l'ordinateur ^^.