Mise en page paysage dans une macro

macmag

XLDnaute Nouveau
Bonjour à tous,

Soit la macro ci-dessous (merci Job75), dans laquelle je voudrais rajouter que les fichiers créés soient en mise en page "paysage" :


Sub CreationFichier()
Dim n&, chemin$, w As Worksheet, t$, Wb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si un fichier existe déjà
n = Application.SheetsInNewWorkbook 'nombre de feuilles des nouveaux classeurs
Application.SheetsInNewWorkbook = 1
chemin = ThisWorkbook.Path & "\" 'chemin d'accès à adapter
For Each w In Worksheets
t = Mid(w.[C3].Formula, 2)
On Error Resume Next
t = Range(t).Address
If Err = 0 Then
Set Wb = Workbooks.Add 'nouveau document
w.Cells.Copy Wb.Sheets(1).Cells 'copie de la feuille
Wb.Sheets(1).UsedRange = Wb.Sheets(1).UsedRange.Value 'supprime les formules (facultatif)
Wb.Sheets(1).Name = w.Name 'renomme la feuille du nouveau document
Wb.SaveAs chemin & Epure(w.Name) 'crée le fichier sur le disque dur
Wb.Close
End If
Next
Application.SheetsInNewWorkbook = n
End Sub


Merci pour votre aide.
 

JCGL

XLDnaute Barbatruc
Re : Mise en page paysage dans une macro

Bonjour à tous,

Le bout de code à rajouter est :
Code:
ActiveSheet.PageSetup.Orientation = xlLandscape

Mais je ne vois pas où dans ton code : il n'est pas question d'impression.

A+ à tous
 

Etienne2323

XLDnaute Impliqué
Re : Mise en page paysage dans une macro

Salut Macmag,
tu n'as qu'à ajouter la ligne suivante dans ta boucle, avant ton "Next" :

Code:
ActiveSheet.PageSetup.Orientation = xlLandscape

Cordialement,

Étienne

Edit : !!! Trop rapide encore une fois JC !!! Passez une excellente journée :)
 

Etienne2323

XLDnaute Impliqué
Re : Mise en page paysage dans une macro

Salut macmag,
dans ce cas, il faut revoir la zone d'impression.

Voici quelques propriétés sur lesquelles tu pourrais te pencher :

Il te faudra modifier la plage bien entendu.
Code:
'Définir la zone d'impression
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(3, 3)).Address

Ensuite, penser à tout imprimer sur une seule page :

Code:
With ActiveSheet.PageSetup
    .FitToPagesWide = 1
    .FitToPagesTall = 1
    .CenterHorizontally = True
    .CenterVertically = True
    .Zoom = False
End With

À te relire pour plus,

Étienne

Edit : @ JC :) J'ai voyagé sur un vol privé cette fois ci ;)
 

macmag

XLDnaute Nouveau
Re : Mise en page paysage dans une macro

Merci Etienne,

Mais j'ai oublié de te préciser que je n'étais pas du tout habituée aux macros. Donc quand tu me dis de me pencher dessus ....Je n'y comprends pas grand chose pour ne pas dire rien du tout. Je n'ai fait que copier coller ce qu'on avait fait pour moi.
Que dois-je imprimer en une seule page ???

Je voudrais bien t'envoyer le fichier mais il est trop lourd ...
 

Etienne2323

XLDnaute Impliqué
Re : Mise en page paysage dans une macro

Salut macmag, JC :) , le forum,
sans pouvoir tester, j'essaierais quelque chose comme ceci :

VB:
Option Explicit

Sub CreationFichier()
Dim n&, chemin$, w As Worksheet, t$, Wb As Workbook

With Application
    .ScreenUpdating = False
    .DisplayAlerts = False 'si un fichier existe déjà
End With

n = Application.SheetsInNewWorkbook 'nombre de feuilles des nouveaux classeurs
Application.SheetsInNewWorkbook = 1

chemin = ThisWorkbook.Path & "\" 'chemin d'accès à adapter

For Each w In Worksheets
    t = Mid(w.[C3].Formula, 2)
    On Error Resume Next
    t = Range(t).Address
    If Err = 0 Then
        Set Wb = Workbooks.Add 'nouveau document
        w.Cells.Copy Wb.Sheets(1).Cells 'copie de la feuille
        Wb.Sheets(1).UsedRange = Wb.Sheets(1).UsedRange.Value 'supprime les formules (facultatif)
        Wb.Sheets(1).Name = w.Name 'renomme la feuille du nouveau document

        With ActiveSheet.PageSetup
            .PrintArea = Range("$A$1:" & ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address)
            .FitToPagesWide = 1
            .FitToPagesTall = 1
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlLandscape
            .Zoom = False
        End With
        
        Wb.SaveAs chemin & Epure(w.Name) 'crée le fichier sur le disque dur
        Wb.Close
        
    End If
Next

Application.SheetsInNewWorkbook = n

End Sub

Cordialement,

Étienne
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg