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 automatique feuille Excel en PDF


Sujet :

Macros et VBA Excel

  1. #1
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut Impression automatique feuille Excel en PDF


    Sur Excel 2003, je veu créer un PDF de ma feuille avec le code suivant (qui a l'air de bien marcher) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Sauver_Click()
    ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
    End Sub
    Mais je voudrais que le nom du PDF enregistré ainsi que sa destination soit fait automatiquement.

    Pour le nom, par exemple se serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Nom1 = Sheets("Feuil1").Range("A40").Value
    Nom2 = Sheets("Feuil1").Range("D40").Value
     
    NomPDF = Nom1 & Nom2 & ".pdf"
    et la destination :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Documents and Settings\User\Bureau\

    Mais je sais pas comment faire

    Help SVP

  2. #2
    Membre habitué Avatar de Djohn
    Profil pro
    Inscrit en
    Février 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 308
    Points : 140
    Points
    140
    Par défaut
    hello,
    a vrai dire tu as fait la plus dur, et ta technique d'imprimer en PDF m'interesse bcp

    pour te répondre, je tenterai comme ceci (à tester).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.SaveAs Filename:= _
            "C:\Documents and Settings\User\Bureau\" & NomPDF

  3. #3
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    J'ai pas esseyé mais d'aprés moi, ton code va enregistré le ficher le ficher (dans ce cas précis) ainis :

    C:\Documents and Settings\User\Bureau\NomPDF.pdf avec xls comme extension au fichier


    Pas certain mais je pense

    Je pense que les renseignement sont a donné a PDFCreator lors de son execution

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Un petit tour avec la fonction recherche du forum et voila le résultat

    Si j'ai bien compris c'est ce que tu cherche a faire
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    ne fais pas attention à mes variables mais tu peux t'inspirer de cette fin de code (qui marche chez moi)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
           repert & "\" & nomfichier, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=True
    Bonne fin de journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Merci Krovax mais se n'est pas tout à fait se que je cherche.

    En effet : l'exemple que tu me donne est basé sur un autre logiciel que PDFCreator et mon but est aussi que le nom du fichier soit crée grace au renseignement de certaines cellules du fichier Excel.

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    tu as peut-atre loupé ma propo relis ma réponse
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 388
    Points : 437
    Points
    437
    Par défaut
    Un peu tardivement mais si tu as toujours besoin
    Je suppose que tu souhaites enregistrer la feuille sur laquelle tu travailles et non le classeur entier

    Dans 1 premier temps dans PDFCreator, il faut apporter les réglages suivants :

    Dans les options (2ème icône à gauche),
    Enregistrement automatique
    Cocher la case "Utiliser l'enregistrement automatique"
    Dans le champ "Nom de fichier" tout supprimer
    Dans le champ "Ajouter un suffixe au nom du fichier" sélectionner par la liste déroulante <Title>. Ton fichier PDF sera enregistré ainsi avec le même nom que ton fichier Excel
    Cocher la case "Utiliser ce répertoire pour l'enregistrement automatique" et à partir de la case avec les 3 points parcourir l'arborescence du disque jusqu'à l'endroit voulu
    Cocher éventuellement la case "Ouvrir le document avec l'application par défaut, après l'enregistrement automatique"
    Cliquer sur enregistrer

    Les enregistrements sous PDF seront maintenant automatiques dans le dossier voulu avec le nom du fichier Excel, toutes les boites de dialogues intermédiaires seront supprimées.

    Reste à changer le nom de ton fichier Excel.
    Je propose simplement de faire une copie de ton fichier sous un autre nom, de l'enregistrer ensuite par l'intermédiaire de PDFCreator puis de supprimer la copie que tu viens de créer.

    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
    Sub test()
        Dim a As Worksheet
        Dim sc As Workbook
        Dim nouveauNom
     
        Application.ScreenUpdating = False
     
        Set a = ActiveSheet
        nouveauNom = Range("A10") & " " & Range("D10")
        Set sc = Workbooks.Add(xlWBATWorksheet)
        sc.SaveAs (nouveauNom & ".xls")
        a.Copy Before:=sc.Sheets(1)
        ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
     
        Workbooks(nouveauNom & ".xls").Close savechanges:=False
        Kill nouveauNom & ".xls"
     
        Application.ScreenUpdating = True
     
    End Sub
    Tu gardes ton fichier original et tu as une copie PDF de la feuille sur laquelle tu travailles

    Ça fonctionne avec Excel 2003, merci de me dire si c'est OK

  9. #9
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Merci JPierreM

    je me suis seri de ton code en l'arrangent un peu:

    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
    Private Sub Sauver_Click()
     
        Dim a As Worksheet
        Dim sc As Workbook
        Dim nouveauNom As String
     
        Application.ScreenUpdating = False
     
        Set a = ActiveSheet
        nouveauNom = "DDE" & Range("B40").Value & " " & Range("D40").Value & Range("E40").Value
        Set sc = Workbooks.Add(xlWBATWorksheet)
        sc.SaveAs (nouveauNom & ".xls")
        a.Copy Before:=sc.Sheets(1)
        ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
     
        Workbooks(nouveauNom & ".xls").Close SaveChanges:=False
        Kill nouveauNom & ".xls"
     
        Application.ScreenUpdating = True
     
     
    Application.DisplayAlerts = False
     
        Application.Quit
    End Sub
    Je suis pas certain que les modifs que j'ai fait soit toutes necessaire mais sa marche

    Toutefois j'ai toujours un probléme (C'est pas marrant sinon)

    Pour le nom du document, je me sert de cellules qui sont au format date : 31/03/2009.
    Le probléme est que pour le nom d'un fichier, il n'est pas possible de mettre "/" comme caractére (donc sa plante)

    Donc je voudrais savoir si il y a moyen de rajouter un code au milieu pour que le caractére "/" devienne "_" par exemple.

  10. #10
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim nom as string
    nom= Replace(nom, "/", "_")
    Pour plus d'infos
    http://silkyroad.developpez.com/VBA/...nesCaracteres/
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  11. #11
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Merci Krovax

    Mais je sais pas ni où ni comment mettre ce code

    J'ai esseyée mais sa marche pas

    Il doit y avoir un truc que je fait mal

  12. #12
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     nouveauNom = "DDE" & Range("B40").Value & " " & Range("D40").Value & Range("E40").Value
    'la tu rajoute
    nouveaunom=Replace(nouveauNom , "/", "_")
    Ps : j'aurais sans doute du utiliser tes nom de variable plutot que de copier/coller un de mes fichiers
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  13. #13
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Oui excuse moi Krovax

    Effectivement après mon dernier post, j'ai encore essayé et sa a marche
    J'ai mis le même code que tu viens de me donné sa marche nikel
    Merci


  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 388
    Points : 437
    Points
    437
    Par défaut
    Concernant les / et - Krovax t'a donné la solution par contre je ne comprends pourquoi tu rajoutes Application.DisplayAlerts = False dans ton code et surtout en fin de code. Cela risque d'être source de problème il faut mettre
    Application.DisplayAlerts = true

  15. #15
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Merci JPierreM pour ta remarque

    Mais quel probléme cela peut-il me possé ??

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 388
    Points : 437
    Points
    437
    Par défaut
    Fais un petit tour dans l'aide et tu seras fixé

    Dans ton code sélectionne DisplayAlerts et enfonce la touche F1

    A+ JP

  17. #17
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    En fait (si je comprend bien), cette ligne n'affiche pas la fenetre qui demande une cofirmation d'enregistrement du fichier lors de sa fermeture.

    Mais c'est exactement se que je veu donc je pense que sa devrait aller

    Si je me trompe, fait le moi savoir

    Merci

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 388
    Points : 437
    Points
    437
    Par défaut
    Mille excuses j'étais persuadé que cette propriété gardait la valeur attribuée durant tout le temps que la session Excel était ouverte, en fait non. Elle reprend sa valeur par défaut (true) à la fin de la procédure.
    C'est parfois bien mauvais les certitudes.
    Enfin nous aurons progressé tous les deux, toi en PDF et moi sur DisplayAlert

  19. #19
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Citation Envoyé par JPierreM Voir le message
    nous aurons progressé tous les deux, toi en PDF et moi sur DisplayAlert
    Des fois c'est en ce trompant qu'on apprend

    Merci de ton aide je met mais si tu pense a quelque chose fait le savoir

  20. #20
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut


    Je me permet de revenir vers vous car je vien de m'appersevoir d'un truc :

    Le code precedent qui marche me nomme un document en fonction de la valeur de certaines cellules (au format date)

    Le probleme est que dans cetrains cas, la valeur est decalée de 1 jour :

    Si je tappe 02/05/09 , il va me l'enregistrer sous le nom 01_05_09 (j'ai pas esseyé avec cette date mais sa me le fait avec certaines)

    Je comprend pas et vous ??

Discussions similaires

  1. Impression des feuilles excel en pdf sans boutons
    Par rihab92 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 04/03/2015, 18h18
  2. [XL-2003] impression : recto feuille excel, verso pdf
    Par math8811 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/01/2013, 12h59
  3. [XL-2007] VBA - Numérotation automatique feuille excel
    Par slipk555 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/04/2011, 17h42
  4. Mettre une feuille Excel en pdf
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 10/08/2007, 18h29
  5. Pb passage feuille Excel en PDF
    Par titeelo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2007, 16h14

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