Magazine Informatique

Excel: Sauvegarder des onglets dans un fichier PDF

Publié le 26 septembre 2016 par Sopmar01 @mon_cher_watson

Il y a quelque temps, je publiais un article donnant une procédure afin de faire la liste des onglets d’un fichier Excel et, par la suite, d’en imprimer une sélection. Cela se faisait à l’aide de macros VBA. Voir à ce sujet les articles  Excel: Créer automatiquement la liste des noms d’onglets d’un fichier et Excel: Imprimer une sélection d’onglets dans un fichier.

À la suite de commentaires d’utilisateurs, force est de constater qu’il y a également un besoin afin de sauvegarder les onglets sélectionnés en fichier PDF, au lieu de simplement les imprimer.

Les mêmes commentaires font mention de la possibilité de définir une imprimante qui est en fait un pilote de création de fichiers PDF. Toutefois, ce moyen est complexe alors que, depuis Excel 2007, il est possible de sauvegarder directement les onglets désirés d’un fichier Excel en format PDF.

Nous allons donc reprendre la procédure déjà décrite dans Excel: Imprimer une sélection d’onglets dans un fichier et la modifier afin de sauvegarder ces onglets dans un fichier PDF.

Étapes afin de modifier la macro

Les étapes 1 à 3 sont les mêmes, soit de mettre en page les onglets comme pour l’impression, de s’assurer que tous les onglets soient bien nommés (sinon, faire rouler la macro de Excel: Créer automatiquement la liste des noms d’onglets d’un fichier et mettez des 1 vis-à-vis des onglets que vous voulez sauvegarder en PDF, tel que montré ci-bas:

ecransauverpdf

Comme dans l’article précédent, le nom des onglets doit commencer à la cellule B5 et la sélection 1 ou 0, à la cellule C5.

Une fois le tout bien configuré, la procédure suivante va créer un fichier PDF, choisi par l’usager, en fonction des onglets qu’il a décidé de sauvegarder. Il est à noter ici que la sauvegarde des onglets se fait selon la mise en page pour impression de ces dits onglets. Ce paramètre peut être modifié et sera expliqué plus bas.

La procédure en VBA

Sub SauverEnPDF()

' Un exemple de sauvegarde des onglets sélectionnés en PDF

Dim vararray() As String ' Afin de conserver les noms des onglets sélectionnés
Dim csname As Integer ' Colonne où se trouve le nom des onglets
Dim c As Integer ' Colonne où se trouve les choix 1 ou 0
Dim countarr As Integer ' Pour compter le nombre d'onglets sélectionnés
Dim r As Integer ' Pour compter à travers tous les onglets
Dim sname As Worksheet ' Nom de l'onglet de départ, pour y revenir à la fin
Dim strFileName As String ' Nom du fichier à sauvegarder

'set up location and counter variables
   csname = Range("B5").Column
   c = Range("C5").Column
   Set sname = ActiveSheet
   r = Range("C5").Row
   countarr = 0

' Boucle dans la iste des onglets tant qu'il y a un nom d'onglet
   While sname.Cells(r, csname) <> ""

' Ajouter le nom de l'onglet à la liste si le choix est 1
      If sname.Cells(r, c) = 1 Then
         ReDim Preserve vararray(countarr)
         ' Un ReDim Preserve permet d'augmenter la taille de la variable tout en préservant son contenu
         vararray(countarr) = sname.Cells(r, csname).Value
         countarr = countarr + 1
      End If
   r = r + 1
   Wend

' On sélection ensuite le groupe d'onglets sélectionnés
   Sheets(vararray).Select

   strFileName = Application.GetSaveAsFilename(filefilter:="PDF Files (*.pdf), *.pdf", Title:="Entrez le nom du fichier")

' Il faut s'assurer que l'usager a bel et bien fait un choix.
' Sinon, le nom du fichier sera false ou faux, si Excel français

   If strFileName <> "False" And strFileName <> "Faux" Then

      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName _
       , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
       :=False, OpenAfterPublish:=False

' Ici, on va sauvegarder en fonction de la mise en page pour impression

   End If

' On sort en revenant à l'onglet de départ

   sname.Select

   set sname = Nothing

End Sub

Petits points à noter

  1. Si le fichier PDF choisi existe déjà, il sera tout bonnement remplacé.
  2. Si le fichier PDF est ouvert, il y aura une erreur d’exécution.
  3. Le paramètre du ExportAsFixedFormat nommé IgnorePrintAreas est configuré à False. Donc, le PDF va suivre la mise en page. Si on ne veut pas cela, on va plutôt allouer la valeur True à ce paramètre.
  4. Il est également possible de forcer l’ouverture du fichier PDF. Il s’agit du paramètre OpenAfterPublish. C’est à vous de voir.
  5. Finalement, on utilise l’application GetSaveAsFilename de MS Office. On peut passer un filtre de fichier et le titre de la fenêtre (Title). Voyez plutôt:
entreznompdf

Je vous invite à tester le tout et à nous laisser vos commentaires ci-bas.


NOTRE OFFRE DE FORMATIONS


Microsoft Most Valuable Professional

Le CFO masqué vous offre un vaste choix de formations Excel, notamment en tableaux de bord et en modélisation financière, ainsi qu’une série de formations en BI libre-service. Ces formations sont offertes en classe, en entreprise et en ligne. Nos formateurs sont des experts dans leur domaine et ils sont accrédités par Emploi-Québec et vous remettent un certificat, à la fin de chaque formation, que vous pouvez notamment utiliser pour faire reconnaître des heures de formation continue auprès de votre ordre professionnel.

Découvrez quelles formations vous conviennent

Pour info: 514-605-7112 ou [email protected]


Retour à La Une de Logo Paperblog

A propos de l’auteur


Sopmar01 3934 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte