VBA - Endregistrement classeur excel au même emplacement en pdf

Résolu
safrancq Messages postés 1 Statut Membre -  
 boban90 -
Bonjour,

J'aimerais créer une macro pour enregistrer le classeur excel ouvert - quel qu'il soit- sous format pdf à l'emplacement de ce même classeur excel et avec ce même nom
mais je n'y connais rien en macro sauf enregistrer un macro dans l'onglet affichage.

Quelqu'un peut-il m'aider?

Merci bcp.
Safrancq

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Vous dites :
    enregistrer un macro dans l'onglet affichage.
    j'en déduis dons que votre version d'excel est supérieure ou égale à 2007...

    Donc.
    Vous souhaitez :
    enregistrer le classeur excel ouvert - quel qu'il soit- sous format pdf

    Question 1 :
    - le classeur entier (toutes les feuilles du classeur) ?
    - juste la feuille active ?

    Pour trouver :
    1- l'emplacement du classeur ouvert (s'il a été préalablement enregistré...) :
    il faut utiliser :
    ThisWorkbook.Path

    2- le nom du fichier ouvert :
    il faut utiliser :
    ThisWorkbook.Name

    Lors de l'enregistrement de la feuille active au format pdf, l'enregistreur de macro nous donne le code suivant :
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "C:\Users\franck\Desktop\Classeur1.pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            False 

    Si nous utilisons les propriétés path et name de ThisWorkbook citées plus haut, le code devient :

    Dim Chemin As String, NomFic As String, extens As String, nbcarExt As Byte
    Chemin = ThisWorkbook.Path
    'extension du fichier :
    extens = Split(ThisWorkbook.Name, ".")(1)
    'nombre de caractères contenus dans l'extension du fichier :
    nbcarExt = Len(extens)
    'extraction du nom du fichier, sans l'extension, mais avec le point :
    NomFic = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - nbcarExt)
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            Chemin & "\"  & NomFic & "pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            False


    Ensuite, pour rendre ce code accessible depuis n'importe quel classeur, regarde ce tuto "Dans le classeur de macros personnelles PERSO.XLS"

    Bon courage

    Cordialement,
    Franck
    2
  2. D-H Messages postés 1 Statut Membre
     
    Merci beaucoup pijaku !

    Fonctionne super rien à redire ;)

    Bonne fin de journée.
    0
  3. xuorel Messages postés 253 Date d'inscription   Statut Membre Dernière intervention  
     
    bonjour,

    pourriez-vous m'expliquer comment fonctionne la fonction split ? Par ailleurs à quoi sert le (1) en bout de ligne ?

    Merci
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,

      Split(chaine, séparateur) scinde une chaine de caractères en fonction d'un séparateur. Le résultat est obtenu sous forme de tableau.

      Exemple :
      La chaine
      "Bonjour,comment,allez,vous"
      scindée avec le séparateur "," donnera :
      Split("Bonjour,comment,allez,vous", ",")(0) => Bonjour
      Split("Bonjour,comment,allez,vous", ",")(1) => comment
      Split("Bonjour,comment,allez,vous", ",")(2) => allez
      Split("Bonjour,comment,allez,vous", ",")(3) => vous
      0
    2. boban90
       
      Bonjour,

      Je tombe sur ce sujet un an plus tard, mais il est très intéressant, à l'image de la solution proposée par pijaku!

      J'ai une petite question liée à ce sujet : par quoi faut-il modifier NomFic dans la macro pour enregistrer le pdf non plus selon le nom du fichier excel mais selon le nom de l'onglet?

      J'ai fait plusieurs tentatives avec ActiveSheets.name mais ai visiblement un problème de syntaxe :-)
      0
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > boban90
         
        Bonjour boban90,

        Peut être que :
        NomFic = ActiveSheet.Name


        Mais attention :
        1- aux caractères spéciaux pouvant composer le nom d'une feuille mais étant exclus par Windows dans un nom de fichier,
        2- à ne pas avoir déjà un fichier du même nom.
        0
    3. boban90
       
      Merci beaucoup, quelle réactivité!

      En effet c'est très efficace, merci beaucoup pijaku :-)
      Aucun problème pour le fichier du même nom, je souhaitais justement écraser les anciens pdf archivés avec le même nom
      0