Sauvegarder PDF par macro

Résolu
RobiQc -  
RobiQc Messages postés 23 Statut Membre -
Bonjour
J'importe des données dans un modèle EXCEL, lequel je sauvegarde sous un nom de classeur, disons GESTION. Ce classeur possède 3 onglets: TRAVAIL, RAPPORT PAGE 1, et RAPPORT PAGE 2. Seulement les 2 pages de RAPPORT doivent être sauvegardées en PDF

J'ai créé une macro pour créer un fichier PDF qui va sauvegarder ce PDF sur le bureau, sous le nom de fichier GESTION que je viens de nommer.

Cela fonctionne. Mais lorsque je veux réouvrir mon modèle pour importer d'autres données et créer un autre nom de fichier, cela ne fonctionne pas, en ce sens qu'il fait le travail, mais conserve l'ancien nom de classeur (STATISTIQUES FORMATIONS) dans le cas présent).
Je voudrais qu'il prenne toujours le nom du classeur que je sauvegarde à chaque opération au lieu de prendre STATISTIQUES FORMATIONS par défaut.

À la rigueur, il pourrait prendre le référence de cellule G2 de l'onglet TRAVAIL

Voici mes données:

Sheets(Array("RAPPORT PAGE 1", "RAPPORT PAGE 2")).Select
Sheets("RAPPORT PAGE 1").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Ordi8\Desktop\STATISTIQUES FORMATIONS.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Sheets("RAPPORT PAGE 2").Select
ChDir "C:\Users\Ordi8\Desktop"

Merci beaucoup de votre aide

43 réponses

  • 1
  • 2
  • 3
Résumé de la discussion

Problème central : lors de l'import de données dans un modèle Excel, l'export des pages RAPPORT PAGE 1 et RAPPORT PAGE 2 en PDF conserve l'ancien nom 'STATISTIQUES FORMATIONS' au lieu du nom courant.
Parmi les solutions proposées, il est suggéré d'utiliser le nom du classeur actif ou une valeur de cellule (G2) pour générer dynamiquement le nom du PDF, et de spécifier le chemin d'enregistrement.
Il est aussi recommandé de vérifier l'existence du répertoire de destination et de le créer si nécessaire pour éviter l'enregistrement dans le répertoire par défaut.
D'autres propositions évoquent l'utilisation d'un fichier modèle sauvegardé sous un autre nom et l'adaptation du code pour empêcher que le nom précédent ne persiste durablement.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Eh bien si c'est pas bon pour le PDF il en va de même pour le classeur Excel.
    Voici ma proposition: https://www.cjoint.com/c/LCmkS344min
    1
  2. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Merci, content pour vous.
    Pensez de marquer comme résolu si c'est le cas.
    1
  3. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    J'ai réalisé un test selon vos informations en utilisant le code fourni.
    Une feuille PDF est bien enregistrée sur le bureau, mais pas la deuxième... !
    Votre classeur de sauvegarde (ou modèle) reste bien enregistrer avec son nom GESTION....
    Alors ou est votre problème. ?

    0
  4. RobiQc
     
    Bonjour Le Pingou et merci beaucoup pour ta réponse rapide.
    Je m'aperçois que ma question n'était pas très claire. Et je comprends ta réponse en relation avec ce que tu as probablement compris.

    Voici donc quelques autres informations.
    - J'ouvre mon fichier modèle vide
    - J'y importe les données venant d'un autre fichier dans mon modèle vide (mon classeur de travail)
    - La cellule F2 de mon classeur contient la date du travail, et la cellule G2 contient le titre de la formation
    - Je sauvegarde immédiatement ce fichier selon les informations contenues dans lesdites cellules, sous le format "20220221 Pouvoirs"
    - À chaque nouveau fichier, ce nom change selon le contenu de F2 et G2.
    - Ensuite, j'ai une macro qui vient compléter les informations manquantes dans mon classeur.
    - Puis, j'ai alors créé une macro pour PDF

    MACRO CRÉER PDF

    La macro sauvegardée lors de la construction du fichier modèle vide contient nécessairement le nom d'un fichier (F2 et G2).

    Je crois que mon problème se situe là: lors de la construction de la macro, j'ai demandé d'aller chercher le nom du fichier que j'avais sauvegardé. Il garde donc ce nom en mémoire dans son instruction de macro (voir mon énoncé ci-haut, ou le nom STATISTIQUES FORMATION était le nom du fichier utilisé pour la génération de la macro)

    Voici ma ligne de code que je voudrais modifier:

    "C:\Users\Ordi8\Desktop\STATISTIQUES FORMATIONS.pdf",

    Ma question serait donc plutôt: quelle instruction dois-je donner dans cette ligne pour que STATISTIQUES FORMATIONS.pdf soit plutôt remplacé par le nom du fichier que je viens de sauvegarder.

    Il me semble avoir vu un VBA quelque part qui allait soit chercher le nom d'un classeur pour l'insérer dans une vba, ou chercher un adresse de cellule au lieu d'une réponse tapée au clavier.

    J'espère être un peu plus clair. Merci encore et bonne journée.

    RobiQc
    0
    1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      Bonjour,
      Donc à la place de : "C:\Users\Ordi8\Desktop\STATISTIQUES FORMATIONS.pdf"

      vous voulez: "C:\Users\Ordi8\Desktop\20220221 Pouvoirs.pdf"
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Petit oubli, ou se trouve votre macro ( ou les deux!) , dans quel classeur ?
    Et si possible le code complet!
    Merci

    0
  7. RobiQc Messages postés 23 Statut Membre
     
    Bonjour et merci Le Pivert.
    Mon fichier modèle se trouve dans le répertoire des modèles personnalisés sous le nom "ModèleStatsFormation", accessible via un raccourci sur le Bureau
    Mon fichier contient 4 onglets: DIRECTIVES, TRAVAIL, RAPPORT PAGE 1 et RAPPORT PAGE 2.
    La macro est initiée par un bouton qui se trouve dans RAPPORT PAGE 2, dans le répertoire des macros, pour"Tous les classeurs ouverts".
    Le code complet de cette macro se trouve tout en haut de ce message.
    Merci
    0
    1. RobiQc Messages postés 23 Statut Membre
       
      ReBonjour
      Lorsque j'ai créé la macro, elle a pris le nom du fichier ouvert qui était STATISTIQUES FORMATIONS. Ce nom s'est enregistré dans la macro lorsque j'ai sauvegardé le fichier.
      Maintenant, il me ramène toujours ce nom lorsque je réactive la macro. Mais le nom du fichier n'est plus STATISTIQUES FORMATIONS, mais bien autre chose. Je veux dire que le nom du fichier change à chaque fois que je réactive la macro car les données ne sont pas les mêmes mais la macro doit générer le pdf avec les données du classeur que je viens d'ouvrir et qui porte nécessairement un nouveau nom. Par exemple, un fichier s'appellera 220228 Gestion, alors que lors de l'ouverture du modèle la prochaine fois, le fichier devra se nommer par exemple 220304 Pouvoirs, et ainsi de suite.
      Je veux donc, à l'intérieur de la macro, demander au système de récupérer le nom du classeur, pour qu'il sauvegarde le PDF sous le nom de ce classeur
      Merci encore. Mes connaissances en VBA et macros sont quelque peu limitées. Merci de votre patience !
      0
  8. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voici ma ligne de code que je voudrais modifier:

    "C:\Users\Ordi8\Desktop\STATISTIQUES FORMATIONS.pdf"


    mettre le nom du fichier dans une cellule comme ceci:

    "C:\Users\Ordi8\Desktop\" & Range("A1") & ".pdf"

    0
  9. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Modifier votre code comme suit:
    Sheets("RAPPORT PAGE 1").Activate
    NomFiche = Format(Sheets("TRAVAIL").Range("F2"), "ddmmyyyy") & " " & Sheets("TRAVAIL").Range("G2")
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\Ordi8\Desktop\" & NomFiche & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True


    Salutations.
    Le Pingou
    0
  10. RobiQc Messages postés 23 Statut Membre
     
    Bonjour et merci pour votre réponse
    J'ai un message qui me dit que la macro ne fonctionne pas car le fichier n'a pas été sauvegardé. Vous serait-il possible de créer une nouvelle macro pour sauvegarder le fichier selon les directives ci-haut. Merci beaucoup encore une fois.
    RobiQc
    0
  11. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Quelle est le message exact ....?
    Je viens de faire un test sur mon fichier d'essai et tout fonctionne correctement, le fichier en PDF est bien enregistré avec le nom correct.
    Avec votre fichier modèle se serait plus profitable pour vous donnez la bonne réponse..
    Merci de le mettre sur https://www.cjoint.com/ et poster le lien!

    0
  12. RobiQc Messages postés 23 Statut Membre
     
    Bonjour et merci
    Malheureusement, je n'ai pas réussi à placer le fichier sur CJoint.com
    Désolé.
    0
  13. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Ci dessous la marche à suivre de Raymond Pentier (salutations)
     1) Aller dans https://www.cjoint.com/ 
    2) Cliquer sur [Parcourir] pour sélectionner le fichier (15 Mo maxi)
    3) Défiler vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
    4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; faire un clic-droit dessus et choisir "Copier le lien"
    5) Revenir dans la discussion sur CCM, et dans votre message faire "Coller".
    =>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers

    0
  14. RobiQc Messages postés 23 Statut Membre
     
    Bonjour et merci pour votre attention.
    Voici le fichier joint. Enfin !!!
    Petite remarque: "Copier le lien" est plutôt "Copier l'adresse du lien"

    https://cjoint.com/c/LCcoHF8Jb4o

    J'attends vos commentaires et merci encore!
    RobiQc
    0
  15. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonsoir,
    Votre fichier modèle (ModeleStatsFormation1.xltm) avec la macro (ancienne sous (Sub CréerPDF_OLD())
    Le fichier: https://www.cjoint.com/c/LCcvNIkLQun
    0
  16. RobiQc Messages postés 23 Statut Membre
     
    Bonjour et merci beaucoup ! Tout a marché, excepté la sauvegarde à la fin: ce fichier doit se sauvegarder sous le format Classeur excel prenant en charge les macros. j'ai eu un message d'erreur disant que le fichier de sauvegarde n'avait pas la bonne extension.

    Copie message erreur envoyé dans Cjoint
    Merci
    RobiQc
    0
  17. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    D'après l'image le problème est avec le fichier pdf.... est-ce que lien est correct pour vous
    C:\Users\Ordi8\Documents\
    (pour moi tout fonctionne)
    Note le classeur vient sauvegarder après.

    0
  18. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonsoir,
    Suite à une petite recherche sur le code d'erreur qui ressort du poste 17 c’est bien le lien
    C:\Users\Ordi8\Documents\
    qui n'est pas correcte

    0
  19. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour RobiQc,
    J’ai relu les directives pour l’utilisation du modèle et j’ai adapté la macro en conséquence voir module (lepingou).
    Votre fichier : https://www.cjoint.com/c/LCeiXjyN3gn

    0
  • 1
  • 2
  • 3