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 :

Impression d'une zone définie en pdf


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut Impression d'une zone définie en pdf
    Bonjour à tous,
    Voici mon problème :
    Je dois imprimer en pdf une feuille Excel et adapter la zone d'impression en fonction de son contenu.
    Pour definir ma zone j'ai utilisé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TUK.PageSetup.PrintArea = "$A$1:$N$" & j
    Pour l'enregistrer au format pdf j'utilise ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TUK.PageSetup.PrintArea.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                Folder_Name & Application.PathSeparator & Interface_Name.pdf
    Lorsque je teste le code j'obtiens un message "Compile error : invalid qualifier" sur l'expression de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TUK.PageSetup.PrintArea.ExportAsFixedFormat Type:=xlTypePDF,
    Quel commande puis-je utiliser à la place?
    Question subsidiaire : comment optimiser la mise en page? (J'ai essayé de m'en sortir avec l'enregistreur de macro mais ca n'a rien donné)
    Merci pour votre aide et vos conseils
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, ceci fonctionne, donc à adapter à ton contexte ( obtenu bestialement via l'enregistreur de macros puis optimisé à la main )
    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
    Option Explicit
     
    Sub Tst()
    Dim sFichier As String
    Dim i As Long
     
        i = Feuil1.Range("J1")
        Feuil1.PageSetup.PrintArea = "$A$1:$D$" & i
     
        sFichier = "C:\Essais\Test.pdf"
     
        Feuil1.ExportAsFixedFormat Type:=xlTypePDF, _
                                   Filename:=sFichier, _
                                   Quality:=xlQualityStandard, _
                                   IncludeDocProperties:=True, _
                                   IgnorePrintAreas:=False, _
                                   OpenAfterPublish:=False
     
    End Sub

  3. #3
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Kiki,
    Merci,
    en plus j’étais tombé dessus lors de mes recherche mais pas testé

    L'enregistrement fonctionne très bien,j'ai essayé d'optimiser ma mise en page mais le résultat donne l'impression que ma zone sélectionnée s'étends sur les colonnes suivantes
    et ce malgre un essai avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     TUK.PageSetup.Orientation = xlPortrait
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     TUK.PageSetup.Orientation = xlLandscape
    Nom : Mise en Page.jpg
Affichages : 2827
Taille : 43,1 Ko
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Fais ta mise en page avec l'enregistreur de macros et tu auras des tas d'options en plus à nettoyer à la main ( marges, centrage, nb de pages, zoom etc )
    .....
    .PrintHeadings = True
    .CenterHorizontally = True
    .CenterVertically = False
    .Orientation = xlPortrait
    .Zoom = 150
    .FitToPagesWide = 1
    .FitToPagesTall = 2
    .....

  5. #5
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour Kiki,
    Voici ce que j'ai ajouté pour avoir une zone d'impression un peu plus acceptable mais comme cette zone d'impression est variable je ne sais pas si cela sera suffisant.
    En effet ma feuille est composée de 20 zones de commentaires (Cellules fusionnées ce qui n'arrange rien)et comme la longueur des commentaires peut être importante la hauteur de ma ligne est aléatoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      TUK.PageSetup.PrintArea = "$A$1:$M$" & j + 39
            TUK.PageSetup.Orientation = xlPortrait
            TUK.PageSetup.Zoom = 70
    Je pense à ce que je viens d’écrire , si j'arrive à obtenir la hauteur de mes lignes je pourrais déterminer à quel endroit je dois placer un Saut de Page.
    Je vais chercher dans ce sens mais il te vient une autre idée je suis preneur
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, en partant de qqch comme ceci ? Sachant qu'une feuille vierge avec les mêmes marges a une hauteur h .....
    La colonne A n'est là qu'à titre indicatif.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Tst()
    Dim LastRow As Long
        LastRow = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
        Debug.Print Feuil1.Rows("1:" & LastRow).Height
    End Sub
    Il y a aussi Feuil1.UsedRange.Height mais pose qqs problèmes de "rafraichissement" quand il y a eu des modifs, mais à voir quand même.

Discussions similaires

  1. Impression d'une zone de texte
    Par amtdev dans le forum Word
    Réponses: 1
    Dernier message: 22/11/2007, 21h54
  2. Réponses: 3
    Dernier message: 04/10/2007, 19h06
  3. Charger du texte dans une zone définie (css? php? html?)
    Par dahu17 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 29/08/2007, 13h14
  4. afficher du powerpoint dans une zone définie
    Par Into7 dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/07/2007, 14h33
  5. [vb]position du curseur dans une zone définie
    Par maxdwarf dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/02/2007, 06h54

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