Mettons une feuille avec une seule colonne, étroite, mais par exemple
500 lignes.
Je voudrais imprimer de manière à remplir mes pages, donc, si par ex. 40
lignes tiennent en hauteur sur une page, que les lignes 41 à 80 soient à
côté des premières et ainsi de suite. Bref, un truc du genre du "saut de
colonne" dans word.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour,
Copie cette macro dans un module de ton classeur :
Tu peux modifier à volonté la mise en page de la feuille à imprimer Ce n'est qu'un exemple... Si tu veux que la feuille se supprime à la fin, enlève l'apostrophe devant certaines lignes de code vers la fin de la macro.
'------------------------------------------------------ Sub test() Dim Rg As Range, NbLignes As Long Dim Sh As Worksheet
Application.ScreenUpdating = False Application.EnableEvents = False Set Sh = Worksheets.Add Sh.Name = "À imprimer" With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) End With
NbLignes = Rg.Rows.Count
For a = 1 To NbLignes Step 40 b = b + 1 Rg(a, 1).Resize(40).Copy Sh.Cells(1, b) Next Sh.UsedRange.EntireColumn.AutoFit 'Et si tu veux lancer l'impression de la feuille With Sh With .PageSetup .PrintArea = Sh.UsedRange.Address .CenterHorizontally = True .CenterVertically = True .LeftHeader = ThisWorkbook.Path .CenterHeader = ThisWorkbook.Name .RightHeader = Environ("USERNAME") .CenterFooter = Date End With .PrintPreview 'tu changes PrintPreview pour .PrintOut End With ss = Sh.UsedRange.Address 'Pour supprimer la feuille après impression 'Application.DisplayAlerts = False 'Sh.Delete 'Application.DisplayAlerts = True Application.EnableEvents = True Application.ScreenUpdating = True End Sub '------------------------------------------------------
Copie cette macro dans un module de ton classeur :
Tu peux modifier à volonté la mise en page de la feuille à imprimer
Ce n'est qu'un exemple...
Si tu veux que la feuille se supprime à la fin, enlève l'apostrophe
devant certaines lignes de code vers la fin de la macro.
'------------------------------------------------------
Sub test()
Dim Rg As Range, NbLignes As Long
Dim Sh As Worksheet
Application.ScreenUpdating = False
Application.EnableEvents = False
Set Sh = Worksheets.Add
Sh.Name = "À imprimer"
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
NbLignes = Rg.Rows.Count
For a = 1 To NbLignes Step 40
b = b + 1
Rg(a, 1).Resize(40).Copy Sh.Cells(1, b)
Next
Sh.UsedRange.EntireColumn.AutoFit
'Et si tu veux lancer l'impression de la feuille
With Sh
With .PageSetup
.PrintArea = Sh.UsedRange.Address
.CenterHorizontally = True
.CenterVertically = True
.LeftHeader = ThisWorkbook.Path
.CenterHeader = ThisWorkbook.Name
.RightHeader = Environ("USERNAME")
.CenterFooter = Date
End With
.PrintPreview 'tu changes PrintPreview pour .PrintOut
End With
ss = Sh.UsedRange.Address
'Pour supprimer la feuille après impression
'Application.DisplayAlerts = False
'Sh.Delete
'Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'------------------------------------------------------
Copie cette macro dans un module de ton classeur :
Tu peux modifier à volonté la mise en page de la feuille à imprimer Ce n'est qu'un exemple... Si tu veux que la feuille se supprime à la fin, enlève l'apostrophe devant certaines lignes de code vers la fin de la macro.
'------------------------------------------------------ Sub test() Dim Rg As Range, NbLignes As Long Dim Sh As Worksheet
Application.ScreenUpdating = False Application.EnableEvents = False Set Sh = Worksheets.Add Sh.Name = "À imprimer" With Worksheets("Feuil1") Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) End With
NbLignes = Rg.Rows.Count
For a = 1 To NbLignes Step 40 b = b + 1 Rg(a, 1).Resize(40).Copy Sh.Cells(1, b) Next Sh.UsedRange.EntireColumn.AutoFit 'Et si tu veux lancer l'impression de la feuille With Sh With .PageSetup .PrintArea = Sh.UsedRange.Address .CenterHorizontally = True .CenterVertically = True .LeftHeader = ThisWorkbook.Path .CenterHeader = ThisWorkbook.Name .RightHeader = Environ("USERNAME") .CenterFooter = Date End With .PrintPreview 'tu changes PrintPreview pour .PrintOut End With ss = Sh.UsedRange.Address 'Pour supprimer la feuille après impression 'Application.DisplayAlerts = False 'Sh.Delete 'Application.DisplayAlerts = True Application.EnableEvents = True Application.ScreenUpdating = True End Sub '------------------------------------------------------