{"id":9564,"date":"2021-03-29T00:03:52","date_gmt":"2021-03-28T22:03:52","guid":{"rendered":"https:\/\/www.auditsi.eu\/?p=9564"},"modified":"2021-03-29T16:57:15","modified_gmt":"2021-03-29T14:57:15","slug":"powerpoint","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=9564","title":{"rendered":"Powerpoint : automatiser l&#8217;exportation d&#8217;une s\u00e9lection de vignettes en PDF avec conservation des liens hypertexte"},"content":{"rendered":"<p style=\"text-align: justify;\">La diffusion de pr\u00e9sentations Powerpoint passe g\u00e9n\u00e9ralement par une conversion en un fichier PDF pour les rendre inalt\u00e9rables.<\/p>\n<p style=\"text-align: justify;\">Afin de conserver les liens hypertexte fonctionnels (ce qu&#8217;une simple impression au format PDF ne permet pas), il faut exporter la pr\u00e9sentation en passant par le menu Fichier, Exporter puis Cr\u00e9er un document PDF\/XPS. Cette exportation gagne \u00e0 \u00eatre automatis\u00e9e si elle doit \u00eatre r\u00e9alis\u00e9e r\u00e9guli\u00e8rement ou porte sur des plages de vignettes (ou <em>slides<\/em>) importantes ou disjointes.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9566 size-full\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/03\/Powerpoint-liens-hypertexte.png\" alt=\"Powerpoint liens hypertexte\" width=\"968\" height=\"596\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/03\/Powerpoint-liens-hypertexte.png 968w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/03\/Powerpoint-liens-hypertexte-300x185.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/03\/Powerpoint-liens-hypertexte-768x473.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2021\/03\/Powerpoint-liens-hypertexte-730x449.png 730w\" sizes=\"auto, (max-width: 968px) 100vw, 968px\" \/><\/p>\n<p style=\"text-align: justify;\">Le langage VBA comporte tous les outils n\u00e9cessaires \u00e0 cette automatisation. La s\u00e9lection des vignettes est r\u00e9alis\u00e9e \u00e0 l&#8217;aide de la commande <a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/vba\/api\/PowerPoint.Slides.Range\" target=\"_blank\" rel=\"noopener\">.Slides.Range<\/a> et l&#8217;exportation au format PDF avec la commande <a href=\"https:\/\/docs.microsoft.com\/fr-fr\/office\/vba\/api\/powerpoint.presentation.exportasfixedformat\" target=\"_blank\" rel=\"noopener\">.ExportAsFixedFormat<\/a>.<\/p>\n<p style=\"text-align: justify;\">Le code VBA ci-apr\u00e8s r\u00e9alise cette t\u00e2che \u00e0 merveille.<\/p>\n<p style=\"text-align: justify;\">A noter, la ligne <em>Tableau_String = Split(Transforme_Plage(&#8220;1-27;29-45;100;105-111; 114-116;118-119;206;300-325; 330;342-346;352-355;359-360;368&#8221;), &#8220;,&#8221;)<\/em> permet d&#8217;indiquer le num\u00e9ro des vignettes \u00e0 exporter.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">'Macro export Powerpoint vers fichier PDF avec conservation des liens hypertexte\r\n'B. RIVIERE, 03\/2021\r\n\r\nOption Explicit\r\n\r\nSub Export_PDF()\r\n'Export d'une s\u00e9lection de vignettes Powerpoint en PDF avec conservation des liens hypertexte\r\n    \r\n    'D\u00e9finition des variables\r\n    '---La variable tableau Tableau_String stocke la s\u00e9lection de vignettes \u00e0 exporter au format cha\u00eene de caract\u00e8res (String)\r\n    Dim Tableau_String() As String\r\n    '---La variable tableau Tableau_Integer stocke la s\u00e9lection de vignettes \u00e0 exporter sous forme de nombres entiers (Integer)\r\n    Dim Tableau_Integer() As Integer\r\n    '---Utilis\u00e9e pour la boucle compteur (For... To)\r\n    Dim i As Integer\r\n    \r\n    'D\u00e9finition de la s\u00e9lection des vignettes \u00e0 exporter en PDF\r\n    '---La fonction Split convertit la cha\u00eene de caract\u00e8res contenant la s\u00e9lection de vignettes en une variable tableau de type cha\u00eene de caract\u00e8res\r\n    Tableau_String = Split(Transforme_Plage(\"1-27;29-45;100;105-111;114-116;118-119;206;300-325;330;342-346;352-355;359-360;368\"), \",\")\r\n    '---Redimensionne la variable tableau Tableau_Integer en fonction de la taille de Tableau_String\r\n    ReDim Tableau_Integer(UBound(Tableau_String))\r\n    '---Boucle de conversion des donn\u00e9es String en Integer\r\n    For i = LBound(Tableau_String) To UBound(Tableau_String)\r\n        Tableau_Integer(i) = CInt(Tableau_String(i))\r\n    Next i\r\n    \r\n    'S\u00e9lection des vignettes (slides) \u00e0 exporter\r\n    '     Plus d'infos : https:\/\/docs.microsoft.com\/fr-fr\/office\/vba\/api\/powerpoint.presentation.exportasfixedformat\r\n    '     Plage d\u00e9finie manuellement (vignettes 1 et 2) : ActivePresentation.Slides.Range(Array(1, 2)).Select\r\n    ActivePresentation.Slides.Range(Tableau_Integer()).Select\r\n    \r\n    'Exportation des vignettes s\u00e9lectionn\u00e9es vers un fichier PDF\r\n    ActivePresentation.ExportAsFixedFormat Path:=\"C:\\Users\\COLDIR01\\Desktop\\DOSSIERS BR\\EXPORT POWERPOINT.pdf\", _\r\n        FixedFormatType:=ppFixedFormatTypePDF, _\r\n        Intent:=ppFixedFormatIntentPrint, _\r\n        OutputType:=ppPrintOutputSlides, _\r\n        RangeType:=ppPrintSelection\r\nEnd Sub\r\n\r\n\r\nFunction Transforme_Plage(Plage As String)\r\n'Cette fonction transforme une plage au format \"1-3;7\" en une liste de vignettes (Array) \"1,2,3,7\"\r\n    Dim Plage_A_Traiter As String 'Plage restant \u00e0 traiter\r\n    Dim Plage_En_Cours As String  'Plage en cours de traitement\r\n    Dim Retour As String          'Plage convertie retourn\u00e9e par la fonction\r\n    Dim i As Integer\r\n    Dim Pos As Integer\r\n\r\n    Plage_A_Traiter = Plage\r\n    Retour = \"\"\r\n    Do\r\n        'Recherche le s\u00e9parateur de plages ;\r\n        If InStr(1, Plage_A_Traiter, \";\") = 0 Then\r\n            'En absence de s\u00e9parateur de plage\r\n            Plage_En_Cours = Plage_A_Traiter\r\n            Plage_A_Traiter = \"\"\r\n        Else:\r\n            'En pr\u00e9sence de s\u00e9parateur de plages\r\n            Plage_En_Cours = Left(Plage_A_Traiter, InStr(1, Plage_A_Traiter, \";\") - 1)\r\n            Plage_A_Traiter = Right(Plage_A_Traiter, Len(Plage_A_Traiter) - InStr(1, Plage_A_Traiter, \";\"))\r\n        End If\r\n        'Position du s\u00e9prateur d'extr\u00e9mit\u00e9 de plage\r\n        Pos = InStr(1, Plage_En_Cours, \"-\")\r\n        If Len(Retour) &gt; 0 Then Retour = Retour &amp; \",\"\r\n        Select Case Pos\r\n            Case 0:\r\n                Retour = Retour &amp; Plage_En_Cours\r\n            Case Else\r\n                For i = Val(Left(Plage_En_Cours, Pos - 1)) To Val(Right(Plage_En_Cours, Len(Plage_En_Cours) - Pos))\r\n                    If i &gt; Val(Left(Plage_En_Cours, Pos - 1)) And Len(Retour) &gt; 0 Then Retour = Retour &amp; \",\"\r\n                    Retour = Retour &amp; Trim(Str(i))\r\n                Next i\r\n        End Select\r\n    Loop While InStr(1, Plage_A_Traiter, \";\") &gt; 0  'Ex\u00e9cuter la boucle tant qu'un s\u00e9parateur de plages est pr\u00e9sent\r\n    Transforme_Plage = Retour\r\nEnd Function<\/pre>\n<p style=\"text-align: justify;\">___<\/p>\n<p style=\"text-align: justify;\">Pour aller plus loin : <a href=\"https:\/\/silkyroad.developpez.com\/VBA\/ManipulerChainesCaracteres\/\" target=\"_blank\" rel=\"noopener\">manipulation de cha\u00eenes de caract\u00e8res<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?p=6638\">fonction Split et variables tableau<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?cat=1569\">programmer en VBA<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img decoding=\"async\" src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"Powerpoint%20%3A%20automatiser%20l%27exportation%20d%27une%20s%C3%A9lection%20de%20vignettes%20en%20PDF%20avec%20conservation%20des%20liens%20hypertexte\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>La diffusion de pr\u00e9sentations Powerpoint passe g\u00e9n\u00e9ralement par une conversion en un fichier PDF pour les rendre inalt\u00e9rables. Afin de conserver les liens hypertexte fonctionnels (ce qu&#8217;une simple impression au format PDF ne permet pas), il faut exporter la pr\u00e9sentation en passant par le menu Fichier, Exporter puis Cr\u00e9er un document PDF\/XPS. Cette exportation gagne &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=9564\" class=\"more-link\">Continue reading &lsquo;Powerpoint : automatiser l&#8217;exportation d&#8217;une s\u00e9lection de vignettes en PDF avec conservation des liens hypertexte&rsquo; &raquo;<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"Powerpoint%20%3A%20automatiser%20l%27exportation%20d%27une%20s%C3%A9lection%20de%20vignettes%20en%20PDF%20avec%20conservation%20des%20liens%20hypertexte\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[215],"tags":[2455,2454,308,365,307,387,231,386,1594,2453,1746,385,2058,1133],"class_list":["post-9564","post","type-post","status-publish","format-standard","hentry","category-vba","tag-exportasfixedformat","tag-slides-range","tag-conversion-de-fichier","tag-do-loop-while","tag-fichier-pdf","tag-for-to-next","tag-instr","tag-integer","tag-lien-hypertexte","tag-powerpoint","tag-split","tag-string","tag-transtypage","tag-variable-tableau"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/9564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9564"}],"version-history":[{"count":5,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/9564\/revisions"}],"predecessor-version":[{"id":9570,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/9564\/revisions\/9570"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}