XL 2016 Mise en page automatique de tous les onglets du classeur

JUMJ

XLDnaute Junior
Bonjour,

En recherchant sur le forum j'ai réussi à créer une macro me permettant d'ajuster automatiquement la mise en page d'un onglet mais cela fonctionne uniquement pour l'onglet actif. Je souhaiterai modifier ma macro pour qu'elle le fasse pour tous les onglets du classeur.
Voici ma macro :
Sub mise_en_page_automatique()
Dim DLCA&, DC&
'dernière ligne non vide en colonne A
DLCA = Cells(Rows.Count, 1).End(xlUp).Row
'Dernière cellule non vide sur la dernière ligne
DC = Cells(DLCA, Columns.Count).End(xlToLeft).Column
'Définition de la zone d'impression
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(DLCA, DC)).Address
End Sub

Merci pour votre aide
 

Dranreb

XLDnaute Barbatruc
Bonjour.
La traduction pour toutes les feuilles serait celle ci :
VB:
Sub MiseEnPageAutomatique()
Dim F As Worksheet, DLCA&, DC&
For Each F In ThisWorkbook.Worksheets
   DLCA = F.Cells(F.Rows.Count, 1).End(xlUp).Row
   'Dernière cellule non vide sur la dernière ligne
   DC = F.Cells(DLCA, F.Columns.Count).End(xlToLeft).Column
   'Définition de la zone d'impression
   F.PageSetup.PrintArea = F.Range(F.Cells(1, 1), F.Cells(DLCA, DC)).Address
   Next F
End Sub
Mais il me semble que comme ça ça devrait avoir le même résultat.
VB:
Sub MiseEnPageAutomatique()
Dim F As Worksheet
For Each F In ThisWorkbook.Worksheets
   F.PageSetup.PrintArea = F.UsedRange
   Next F
End Sub
 
Dernière édition:

JUMJ

XLDnaute Junior
Merci pour la réponse,
La première macro fonctionne parfaitement, en revanche pour la seconde j'ai le message Erreur d'exécution '13': incompatibilité de type, et le code F.PageSetup.PrintArea = F.UsedRange est surligné en jaune.
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 970
Membres
103 072
dernier inscrit
Remithesix