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 auto en fonction des chapitres et des tailles de cellules


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut Mise en page auto en fonction des chapitres et des tailles de cellules
    Bonjour le Forum,
    Je reviens vers vous (nouveau post) pour un problème professionnel de mise en page auto sous excel, sur le fichier joint.

    Je m'explique :
    Ce fichier est une note de synthèse que doivent remplir mes collègues de travail.

    Cette note de synthèse de décompose comme un livre avec des chapitres et des sous-partie.

    Ils remplissent les cellules de texte pour obtenir la note générale.

    C'est là ou se pose le problème.

    En fonction du remplissage des cellules (longueur de texte variable) les cellules doivent s'ajuster à la taille du texte.


    Pour une mise en page jolie, je souhaiterais que les parties/sous-parties ne commencent pas en bas de page pour qq mots mais plutôt en début de page suivant si c'est le cas.

    Paramètre supplémentaire, :
    - La .PrintArea = "A138:T185" doit être en mode paysage.
    - La .PrintArea = "A186:H309" doit être en mode portrait et tenir sur une seule page obligatoirement.



    Et que le tout génère un fichier pdf dans le dossier où se trouve le fichier excel .....



    Le code en place (précédent post sur ce forum) est celui-ci pour l'instant mais je n'arrive pas à générer un fichier pdf avec toute les pages ajustées, seule la .PrintArea = "A138:T185" apparaît en pdf



    QQn aurait une idée ?

    Faut-il mettre des balises ?

    quelle est la solution la plus simple ?


    Bonne aprem
    Seb



    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
    Sub MEP_Cliquer()
        ActiveSheet.ResetAllPageBreaks
     
        With ActiveSheet.PageSetup
            .PrintArea = "A1:H30"
            .Orientation = xlPortrait
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
         '   ActiveSheet.PrintPreview
     
            .PrintArea = "A31:H137"
            .Orientation = xlPortrait
            .FitToPagesWide = 1
            .FitToPagesTall = False
            CheckPage "A31:H137"        'Vérifier la structure de la page
          '  ActiveSheet.PrintPreview
     
            .PrintArea = "A186:H309"
            .Orientation = xlPortrait
            CheckPage "A186:H309"        'Vérifier la structure de la page
           ' ActiveSheet.PrintPreview
            .PrintArea = "A310:H322"
            .Orientation = xlPortrait
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        '    ActiveSheet.PrintPreview
            .PrintArea = "A138:T185"
            .Orientation = xlLandscape
           ' ActiveSheet.PrintPreview
        End With
     
    ' Imprimer en PDF (version 2007 et + seulement)
    ' Ref: http://msdn.microsoft.com/en-us/library/office/bb238907(v=office.12).aspx
     
     
     
        sRep = "T:\test"      'Répertoire de sauvegarde (si non spécifié, répertoire actif par défaut)
        sFilename = ThisWorkbook.Name       'Nom du fichier
        sFilename = Left(sFilename, InStr(1, sFilename, ".")) & "pdf"
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & sFilename, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=False
     
     
    End Sub
     
    Sub CheckPage(Plage)
        Dim I As Long
        Dim nbLignes As Long
     
        nbLignes = Range(Plage).Row + Range(Plage).Rows.Count - 1
        For I = Range(Plage).Row + 1 To nbLignes
            If Rows(I).PageBreak = xlPageBreakAutomatic Then
                FixPageBreak I, Range(Plage).Row
            End If
        Next
     
    End Sub
     
    Sub FixPageBreak(Ligne As Long, Debut As Long)
        Dim I As Long
     
        For I = Ligne To Debut Step -1
            If Left(Range("A" & I), 3) Like "#.#" Or Left(Range("A" & I), 5) = "Cycle" Then
                ActiveSheet.HPageBreaks.Add before:=Range("A" & I)
                Exit For
            End If
        Next
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Comme tu refais le PrintArea à chaque section, seule la dernière plage est sélectionnée.
    Il faudrait que tu puisses ajouter chaque plage une à la suite des autres dans le PDF, mais je ne pense pas que ça puisse se faire sans une version payante, et même pas certain (?)

    Peut-être pourrais-tu créer des images de ces plages pour les transférer dans un PDF.
    J'ai fait quelque chose d'un peu tordu qui prend des images collées dans des feuilles, les transfère dans un graphique, les transfère dans des "slides" de PowerPoint, puis finalement sauvegarde en PDF.
    Ce serait peut-être une possibilité si personne n'a de réponse...

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par GADENSEB Voir le message
    Bonjour le Forum,

    quelle est la solution la plus simple ?

    Arrêter de prendre Excel pour un traitement de texte et utiliser Word.

    Tu te crées manuellement un (vrai) modèle spécifique pour Word (extension dotm ou dotx, selon qu'il contient des macros ou non), avec la bonne mise en page et des liaisons avec ton modèle Excel

    Ensuite tu crées dans ton modèle Excel, une macro pour piloter Word par automation et créer un nouveau document Word basé sur ton modèle spécifique au lieu de Normal.dotx ou Normal.dotm

    Puisque ton modèle Word et ton modèle Excel sont liés, le remplissage devrait être automatique. Au pire, tu mets l'instruction pour mettre les liaisons à jour, soit dans ta macro Excel, soit dans le document_open de ton modèle Word.

    Ensuite, soit que tu enregistres ton document en PDF par automation à partir d'Excel, soit à partir de Word.

    Ensuite et seulement après le transfert et, par prudence, l'enregistrement en PDF dans Word, tu enregistres ton classeur Excel sous un autre nom. Si tu enregistres to classeur Excel avant le transfert, tu perds tes liaisons.

  4. #4
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    Bonjour Le forum, parmi, clementmarcotte


    Je me pause beaucoup de questions concernant ce projet

    Le but est de rassemblé plusieurs documents (note (ce post) + contrat + convention) sous word
    Mes collègues me demande de rassembler ces 3 documents en créant des liaisons entre certaines zones qui se répetent à plusieurs endroits dans les documents.
    + plus la mise en page auto
    + sauvegarde des différentes versions
    + génération de pdf

    Ne connaissant pas très bien word (et ses vba) je me suis rabattu sous excel

    Mais du coup ne vaut-il pas mieux rester sous word et utiliser les références

    au besoin je peux fournir les fichiers word

    Merci de m'éclairer, je suis un peu perdu sur ce projet sniff


    Bon we

    seb

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

Discussions similaires

  1. [Toutes versions] mise en page auto
    Par doz61 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/11/2012, 08h52
  2. Mise en page avec la fonction Sweave
    Par alexirom dans le forum Mise en forme
    Réponses: 3
    Dernier message: 13/10/2011, 11h43
  3. Problème de design/mise en page auto
    Par zax-tfh dans le forum Silverlight
    Réponses: 2
    Dernier message: 08/02/2010, 23h01
  4. [fncychap] mise en page du texte excepté les chapitres
    Par manupro dans le forum Mise en forme
    Réponses: 9
    Dernier message: 21/08/2009, 02h34
  5. Réponses: 3
    Dernier message: 23/01/2007, 08h14

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