Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Mise en page paysage dans une macro

  • Initiateur de la discussion Initiateur de la discussion macmag
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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
 
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 🙂
 
Re : Mise en page paysage dans une macro

Chers tous,

Ca ne fonctionne pas ... Mais je m'aperçois que le seul fait de passer en mode paysage ne sera pas suffisant : le tableau déborde de la zone d'impression
 
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 😉
 
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 ...
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
286
Réponses
5
Affichages
590
Réponses
2
Affichages
1 K
Réponses
2
Affichages
2 K
Réponses
4
Affichages
929
Réponses
0
Affichages
802
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…