Ajuster zone d'impression
Résolu
a51432
Messages postés
39
Statut
Membre
-
a51432 Messages postés 39 Statut Membre -
a51432 Messages postés 39 Statut Membre -
Bonjour,
Je dispose d'un fichier dont le nombre de lignes et de colonnes est variable. Je souhaite trouver un code VBA qui me permette de faire en sorte d'ajuster la zone d'impression de manière à ce que toutes les données soient prises en compte pour impression et surtout que toutes les colonnes en largeur soient comprises sur 1 page.
Je vous remercie par avance de votre aide.
Je dispose d'un fichier dont le nombre de lignes et de colonnes est variable. Je souhaite trouver un code VBA qui me permette de faire en sorte d'ajuster la zone d'impression de manière à ce que toutes les données soient prises en compte pour impression et surtout que toutes les colonnes en largeur soient comprises sur 1 page.
Je vous remercie par avance de votre aide.
A voir également:
- Ajuster zone d'impression
- Spouleur d'impression - Guide
- Alternative zone telechargement - Accueil - Outils
- Impression livret a5 - Guide
- Impression ecran samsung - Guide
- Carrefour impression documents - Forum Imprimante
3 réponses
Bonjour
En Supposant que le tableau commence en A1
Enlevez la coche de la dernière ligne si vous voulez lancer directement l'impression, n'ayant pas d'imprimante pour tester, je n'ai pas pu le vérifier
Cdlt
En Supposant que le tableau commence en A1
Sub ZoneImpression() Application.ScreenUpdating = False DerLig = [A10000].End(xlUp).Row DerCol = [Xfd1].End(xlToLeft).Column Tableau = Cells(1, 1).Address & ":" & Cells(DerLig, DerCol).Address Range(Tableau).Select ActiveSheet.PageSetup.PrintArea = Tableau ActiveWindow.View = xlPageBreakPreview NbPage = ActiveSheet.HPageBreaks.Count + 1 ActiveWindow.View = xlNormalView 'Formatage avant impression With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0) .RightMargin = Application.InchesToPoints(0) .TopMargin = Application.InchesToPoints(0) .BottomMargin = Application.InchesToPoints(0) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .CenterHorizontally = False .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperLetter .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = NbPage .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 'ExecuteExcel4Macro "PRINT(1,,,1,,TRUE,,,,,,1,,,TRUE,,FALSE)" End Sub
Enlevez la coche de la dernière ligne si vous voulez lancer directement l'impression, n'ayant pas d'imprimante pour tester, je n'ai pas pu le vérifier
Cdlt
a51432
Messages postés
39
Statut
Membre
1
merci beaucoup ca fonctionne parfaitement !
Après plusieurs essais je constate que mon problème est toujours là. En effet, quand j'utilise le bouton "appercu des sauts de page", je constate que toutes les colonnes de mon tableau en largeur ne sont pas sur 1 seule page.
Auriez-vous une solution pour que le tableau tienne sur une seule page en largeur ? Merci
Auriez-vous une solution pour que le tableau tienne sur une seule page en largeur ? Merci
Bonjour
j'utilise le bouton "aperçu des sauts de page", je constate que toutes les colonnes de mon tableau en largeur ne sont pas sur 1 seule page.
L'aperçu, vous le faites après avoir lancer la macro ou bien avant?
Voici un fichier avec 88 colonnes sur plus de 2000 lignes, pour bien vérifier que cela fonctionne, j'ai colorer la dernière colonne en jaune pour m'assurer qu'elle tient bien sur une seule feuille en largeur
https://www.cjoint.com/c/EGpoPDMENcw
Quand vous lancez le programme et que vous voulez voir l'aperçu avant impression, quand s'ouvre la fenêtre"Imprimer", n'oubliez pas de cocher "Sélection" dans le pavé "Impression", vous verrez que la bande jaune est bien dans la feuille.
faite le test.
cdlt
j'utilise le bouton "aperçu des sauts de page", je constate que toutes les colonnes de mon tableau en largeur ne sont pas sur 1 seule page.
L'aperçu, vous le faites après avoir lancer la macro ou bien avant?
Voici un fichier avec 88 colonnes sur plus de 2000 lignes, pour bien vérifier que cela fonctionne, j'ai colorer la dernière colonne en jaune pour m'assurer qu'elle tient bien sur une seule feuille en largeur
https://www.cjoint.com/c/EGpoPDMENcw
Quand vous lancez le programme et que vous voulez voir l'aperçu avant impression, quand s'ouvre la fenêtre"Imprimer", n'oubliez pas de cocher "Sélection" dans le pavé "Impression", vous verrez que la bande jaune est bien dans la feuille.
faite le test.
cdlt
Je crois que j'ai compris, dans mon programme, je recherche la dernière colonne remplie sur la ligne 1 (généralement la ligne des entêtes), il y a de fortes chances que le N° de la dernière colonne de ligne 1 soit inférieur au numéro de la colonne qui contient la ligne la plus chargée. Si c'est le cas, 2 solutions: soit vous complétez la ligne de titres de telle manière à couvrir toutes les colonnes remplies, sinon remplacez la ligne suivante
DerCol = [Xfd1].End(xlToLeft).Column
par
DerCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Si c'est ce que je pense, ça devrait marcher.
cdlt
DerCol = [Xfd1].End(xlToLeft).Column
par
DerCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Si c'est ce que je pense, ça devrait marcher.
cdlt
Dim Feuille As Worksheet
Dim derLigImp As Long
Dim derColImp As Long
For Each Feuille In ActiveWorkbook.Worksheets
If Feuille.Cells(15, 1) = "" Then
derColImp = Cells(17, Cells.Columns.Count).End(xlToLeft).Column
Else
derColImp = Cells(15, Cells.Columns.Count).End(xlToLeft).Column
End If
derLigImp = Range("A" & Rows.Count).End(xlUp).Row
Tableau = Cells(1, 1).Address & ":" & Cells(derLigImp, derColImp).Address
Range(Tableau).Select
ActiveSheet.PageSetup.PrintArea = Tableau
ActiveWindow.View = xlPageBreakPreview
NbPage = ActiveSheet.HPageBreaks.Count + 1
ActiveWindow.View = xlNormalView
J'avais modifié le code de cette manière pour aller chercher la dernière colonne sur la bonne ligne mais cela ne fonctionne tout de même pas.
Bonsoir
Le problème, c'est que si vous aviez suivi le code que je vous ai fourni, il y a avait un élément qui limitait le nombre de feuille en largeur, chose qui n'apparait pas dans votre code.
la ligne en question:
A corriger
cdlt
Le problème, c'est que si vous aviez suivi le code que je vous ai fourni, il y a avait un élément qui limitait le nombre de feuille en largeur, chose qui n'apparait pas dans votre code.
la ligne en question:
.FitToPagesWide = 1
A corriger
cdlt
Pour la page avec laquelle ça ne fonctionne pas, la ligne en question est la 15 et la dernière colonne sur cette ligne est la M. Hors sur l'aperçu avant impression, il ne prend que jusqu'à la D. En regardant avec le bouton "Aperçu des sauts de page", je constate qu'il prend bien toute la zone (jusqu'à la colonne M) mais il y a plusieurs pages en largeur séparées par des pointillés.
Bonjour,
La macro ajuste la page active.
Est-ce que vous appelez la macro pour chaque page ?
Si la ligne de référence pour le nombre de colonne change est différente d'un onglet à un autre alors je crois qu'il y a un problème.
A moins de copier la macro pour chaque onglet et ajuster la ligne de référence dans chaque copie.
Si ce n'est pas aucune de ces deux pistes. alors il y a un détail qui nous échappe. Il est très difficile de trouver sans avoir le fichier pour tester.
S'il est possible de mettre à disposition votre fichier excel (exempt de données confidentielle) via un site comme www.cjoint.com, alors il sera beaucoup plus facile pour les membres du forum de trouver le problème.
La macro ajuste la page active.
Est-ce que vous appelez la macro pour chaque page ?
Si la ligne de référence pour le nombre de colonne change est différente d'un onglet à un autre alors je crois qu'il y a un problème.
A moins de copier la macro pour chaque onglet et ajuster la ligne de référence dans chaque copie.
Si ce n'est pas aucune de ces deux pistes. alors il y a un détail qui nous échappe. Il est très difficile de trouver sans avoir le fichier pour tester.
S'il est possible de mettre à disposition votre fichier excel (exempt de données confidentielle) via un site comme www.cjoint.com, alors il sera beaucoup plus facile pour les membres du forum de trouver le problème.