IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mise en page avant impression sur toutes les feuilles du classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Points : 11
    Points
    11
    Par défaut Mise en page avant impression sur toutes les feuilles du classeur
    Bonjour !
    J'ai un souci : j'ai créé une macro qui me permet de sélectionner toutes les pages en même temps, de mettre en format le tableau (quasiment identique, à part les données, sur toutes les feuilles) et qui devrait me faire une mise en page avant impression pour tous ces tableaux. Seulement, la mise en forme du tableau est parfaite pour tous, mais la mise en page ne s'éxécute que sur la première feuille ! Comment faire ?

  2. #2
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    bonjour,

    on pourrai voir ton code ?
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    J'ai fait une boucle pour que la mise en page s'applique à tout, et ça marche, mais ça charge longtemps alors dès qu'il y a beaucoup d'onglets....bonjour le temps passé !
    Je vous envoie mon bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    Sub forme()
     
    'boucle pour sélectionner toutes les feuilles
     
    Dim TableDesFeuilles() As String
    Dim i As Integer
    Dim S As Worksheet
     
    i = 0
     
    For Each S In ActiveWorkbook.Sheets
    ReDim Preserve TableDesFeuilles(i)
    TableDesFeuilles(i) = S.Name
    i = i + 1
    Next
     
    ActiveWorkbook.Sheets(TableDesFeuilles).Select
     
    'mise en page
     
    ActiveWindow.Zoom = 60
     
        Range("B3:L3").Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .ShrinkToFit = False
            .MergeCells = False
        End With
     
    Cells.Select
        Selection.ColumnWidth = 16
        Selection.RowHeight = 22
        Columns("B:B").Select
        Selection.ColumnWidth = 69
        Columns("H:H").Select
        Selection.ColumnWidth = 74
        Columns("G:G").Select
        Selection.ColumnWidth = 0.5
        Range("31:31").Select
        Selection.RowHeight = 5.25
        Range("4:4").Select
        Selection.RowHeight = 47.25
        Range("32:32").Select
        Selection.RowHeight = 47.25
     
    compt = ThisWorkbook.Sheets.Count
    For Each S In ActiveWorkbook.Sheets
     
        Sheets(compt + 1).Move Before:=Sheets(1)
     
        ActiveSheet.PageSetup.PrintArea = "$B$1:$L$50"
        With ActiveSheet.PageSetup
            .LeftHeader = ""
            .CenterHeader = ""
            .RightHeader = ""
            .LeftFooter = "Le &D"
            .CenterFooter = ""
            .RightFooter = "Direction Financière et du Pilotage de Gestion"
            .LeftMargin = Application.InchesToPoints(0.15748031496063)
            .RightMargin = Application.InchesToPoints(0)
            .TopMargin = Application.InchesToPoints(0)
            .BottomMargin = Application.InchesToPoints(0.31496062992126)
            .HeaderMargin = Application.InchesToPoints(0)
            .FooterMargin = Application.InchesToPoints(0.15748031496063)
            .PrintHeadings = False
            .PrintGridlines = False
            .PrintComments = xlPrintNoComments
            .PrintQuality = 600
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlLandscape
            .Draft = False
            .PaperSize = xlPaperA4
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .BlackAndWhite = False
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
    Range("A1").Select
    Next
     
    End Sub

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Essaie plutôt un truc de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub forme()
     Dim mySheet as Excel.Worksheet
     
    'bloquer l'affichage pour gagner du temps
     
    Application.ScreenUpdating = False
     
    For each mySheet in application.ThisWorkbook.sheets
        'ici tu tiens une instance de feuille, l'une après l'autre. Evite d'utiliser des sélection
        mySheet.Range.Interior ...
       ...
     
    next mySheet
     
    Application.ScreenUpdating = True
    set mySheet = Nothing
    end sub
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Points : 11
    Points
    11
    Par défaut
    Impeccable ce truc de bloquer l'affichage !!!
    Merci beaucoup, c'est très rapide maintenant !!
    Je crois que mon problème est résolu !
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mise en page avant impression avec ShellExecute
    Par adilsoft dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 27/08/2013, 14h28
  2. Ajouter des étiquettes de colonnes sur toutes les feuilles du classeur
    Par Akane69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/07/2013, 09h26
  3. [C#]Mise en page avant impression
    Par actionman18 dans le forum C#
    Réponses: 21
    Dernier message: 30/01/2013, 16h19
  4. [XL-2010] mise en page avant impression macro
    Par yblotiere dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/06/2012, 09h30
  5. mise en page avant impression
    Par mohcultiv dans le forum ASP
    Réponses: 2
    Dernier message: 16/05/2007, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo