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 :

Enregistrement au format PDF avec page variable en fonction d'une cellule [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Par défaut Enregistrement au format PDF avec page variable en fonction d'une cellule
    Bonjour à tous,
    je suis nouveau sur le forum, donc j'espère enfreindre aucune règle. J'ai cherché dans les sujets précédents et je n'ai pas trouvé la réponse à ma question, d'où l'ouverture d'un nouveau sujet.
    Je suis vraiment novice en macro et je m'étais fixé comme objectif de m'y mettre en 2018, alors j'essaie, je vous remercie par avance de m'accepter dans votre communauté.

    J'ai un classeur excel qui reprend les données de manière résumé en fonction d'un numéro de production. En fonction de la journée de production le résumé tient sur une, deux ou trois pages maximum.
    Dans mon fichier excel, j'ai ajouté une formule, qui permet de déterminer le nombre de pages nécessaires. Cette formule est placée en cellule O14.

    Ce que je souhaite, c'est qu'une fois que l'utilisateur à affiché les données de production, il déclenche la macro et que cela enregistre l'onglet actif au format pdf, à l'endroit où le fichier excel initial est enregistré avec comme nom de fichier : la date (renseignée en cellule 09 au bon format et le nom de l'usine (qui ne bouge pas)

    Sur cette partie avec l'aide des forums, j'ai pu me débrouiller.
    En revanche là où je bloque, c'est pour faire le test suivant :
    si ma cellule 014 = 1, alors enregistrer seulement la page 1,
    si 014 = 2, alors enregistrer de la page 1 à 2,
    si O14 = 3 ,alors imprimer de 1 à 3

    => je n'arrive pas à traduire ces conditions en vba.

    Le code que j'ai actuellement mais qui enregistre les 3 pages, indépendamment de la cellule O14, ma zone d'impression étant délimité sur la zone des 3 pages.
    Zone page 1 = ("$A$1:$L$53") :
    Zone 1 à page 2 = ("$A$1:$L$106")
    zone page 1 à 3 = ("$A$1:$L$158")


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Enregistrer_Au_Format_PDF()
     
    ChDir ThisWorkbook.Path
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "DIAPAGA-" & Range("O9").Value & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=Fals, OpenAfterPublish:= _
    True
    MsgBox ("La fiche de marquage de la journée a été sauvegardée au format pdf dans le dossier de ce fichier Excel")
     
    End Sub

    Je vous remercie par avance pour votre précieuse aide.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Déjà, il est peu probable que ton code ait pu s'exécuter avec IgnorePrintAreas:=Fals,
    Citation Envoyé par chialouse Voir le message
    => je n'arrive pas à traduire ces conditions en vba.

    Le code que j'ai actuellement mais qui enregistre les 3 pages, indépendamment de la cellule O14, ma zone d'impression étant délimité sur la zone des 3 pages.
    Zone page 1 = ("$A$1:$L$53") :
    Zone 1 à page 2 = ("$A$1:$L$106")
    zone page 1 à 3 = ("$A$1:$L$158")
    Il suffit, avant de lancer l'export, de définir une zone d'impression adéquate avec un Union.

    https://msdn.microsoft.com/fr-fr/VBA...property-excel
    https://msdn.microsoft.com/fr-fr/VBA...p-object-excel
    https://msdn.microsoft.com/fr-fr/VBA...property-excel

    https://msdn.microsoft.com/library/7...ice.15%29.aspx

    Mais il serait beaucoup plus simple de le faire à la main et de l'enregistrer dans le fichier une fois pour toutes.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Par défaut Merci Menhir
    Merci beaucoup Menhir, pour ton aide.
    Grâce aux pages que tu m'as envoyée, j'ai pu ajouter au précédent code :
    Cela pourra aider d'autres personnes.
    Bonne journée

    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
    Sub Enregistrer_Au_Format_PDF_test_page_variable()
     
    'Test le nombre de pages à enregistrer en fonction du compteur de pages
     
        If Range("O14") = 1 Then ActiveSheet.PageSetup.PrintArea = ("$A$1:$L$53")
        If Range("O14") = 2 Then ActiveSheet.PageSetup.PrintArea = ("$A$1:$L$106")
        If Range("O14") = 3 Then ActiveSheet.PageSetup.PrintArea = ("$A$1:$L$158")
     
     
    'Procède à l'enregistrement au format PDF dans le dossier où est enregistré l'Excel
     
    ChDir ThisWorkbook.Path
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "DIAPAGA-" & Range("O9").Value & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
     
    'Affiche un message à l'utilisateur
     
    MsgBox ("La fiche de marquage de la journée a été sauvegardée au format pdf dans le dossier de ce fichier Excel")
     
    Exit Sub
     
    End Sub

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu devrais intégrer dans ton code une sécurité en gérant le cas où il y a autre chose que 1, 2 ou 3 en O14.
    Et un Select Case serait plus pratique.
    https://msdn.microsoft.com/fr-fr/VBA...case-statement

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Tu devrais intégrer dans ton code une sécurité en gérant le cas où il y a autre chose que 1, 2 ou 3 en O14.
    Et un Select Case serait plus pratique.
    https://msdn.microsoft.com/fr-fr/VBA...case-statement
    Je vais me pencher sur le select.case,
    J'ai déjà sécurisé ma cellule de compteur avec une formule qui ne prévoit que 1,2, 3 et la cellule n'est pas modifiable par l'utilisateur => classeur protégé, mais on est jamais trop prudent.
    Merci pour tes lumières !

  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, voir ici

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

Discussions similaires

  1. [XL-2007] Macro enregistrement fichier excel en pdf avec nom variable
    Par catetesse dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 23/01/2018, 14h03
  2. Macro enregistrement fichier excel en pdf avec nom variable
    Par splog dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/08/2013, 16h08
  3. [FPDF] Envoi d'un mail au format PDF avec PHP
    Par King_T dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 08/05/2006, 19h19
  4. Réponses: 2
    Dernier message: 15/04/2005, 15h51

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