{"id":10246,"date":"2022-06-19T22:02:08","date_gmt":"2022-06-19T20:02:08","guid":{"rendered":"https:\/\/www.auditsi.eu\/?p=10246"},"modified":"2022-06-19T23:16:57","modified_gmt":"2022-06-19T21:16:57","slug":"vba-decompresser-en-masse-les-fichiers-zip-dun-dossier","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=10246","title":{"rendered":"VBA : D\u00e9compresser en masse des fichiers Zip"},"content":{"rendered":"<p style=\"text-align: justify;\">Un <strong>fichier ZIP<\/strong> est un fichier qui contient un ou plusieurs fichiers compress\u00e9s ; la compression de fichiers permettant de r\u00e9duire le volume des donn\u00e9es avant leur transmission ou stockage. La d\u00e9compression des fichiers ZIP est l&#8217;\u00e9tape indispensable pour retrouver les fichiers dans leur forme originelle avant de pouvoir les exploiter.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10248\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/DCSnet-FEC-ZIP.png\" alt=\"DCSnet FEC ZIP\" width=\"1048\" height=\"335\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/DCSnet-FEC-ZIP.png 1048w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/DCSnet-FEC-ZIP-300x96.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/DCSnet-FEC-ZIP-1024x327.png 1024w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/DCSnet-FEC-ZIP-768x245.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/DCSnet-FEC-ZIP-730x233.png 730w\" sizes=\"auto, (max-width: 1048px) 100vw, 1048px\" \/><\/p>\n<p style=\"text-align: justify;\">En pr\u00e9sence de <strong>nombreux fichiers ZIP<\/strong> (\u00e0 l&#8217;image des FEC extraits \u00e0 partir de la nouvelle version de <a href=\"https:\/\/www.auditsi.eu\/?p=7615\">DCSnet<\/a>), leur <strong>d\u00e9compression gagne \u00e0 \u00eatre automatis\u00e9e<\/strong>. C&#8217;est ce que proposent les deux macros VBA ci-apr\u00e8s. Le classeur Excel comprenant les deux macros est t\u00e9l\u00e9chargeable en bas de cet article.<\/p>\n<p style=\"text-align: justify;\">Le <strong>premi\u00e8re macro<\/strong> passe en revue tous les fichiers (\u00e0 l&#8217;aide de la boucle <em>Do While&#8230; Loop<\/em>) d&#8217;un dossier (d\u00e9sign\u00e9 par la variable <em>Dossier_Source<\/em> renvoyant ici vers le dossier <em>Z:\\ZIP FEC<\/em>). D\u00e8s lors qu&#8217;un fichier ZIP est trouv\u00e9 (identifi\u00e9 par le test conditionnel (<em>If FSO.GetExtensionName(Dossier_Source &amp; &#8220;\\&#8221; &amp; NomFichierZIP) = &#8220;ZIP&#8221; Then<\/em>), il est d\u00e9compress\u00e9 gr\u00e2ce \u00e0 la m\u00e9thode <em>.CopyHere<\/em> de l&#8217;objet <em>Namespace<\/em> vers le dossier indiqu\u00e9 par la variable <em>Dossier_Cible<\/em> (ici : <em>Z:\\FEC<\/em>).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">Option Explicit\r\n\r\n\r\nSub Unzip()\r\n    'D\u00e9finition des variables\r\n    Dim FSO As Object\r\n    Dim ShApp As Object\r\n    '---Chemin du dossier contenant les fichiers ZIP\r\n    Dim Dossier_Source As Variant\r\n    '---Chemin du dossier o\u00f9 transf\u00e9rer les fichiers d\u00e9zipp\u00e9s\r\n    Dim Dossier_Cible As Variant\r\n    '---Nom du fichier ZIP\r\n    Dim NomFichierZIP As Variant\r\n\r\n    Set ShApp = CreateObject(\"shell.application\")\r\n    Set FSO = CreateObject(\"scripting.filesystemobject\")\r\n    \r\n    'D\u00e9finition du dossier contenant des fichiers ZIP\r\n    Dossier_Source = \"Z:\\ZIP FEC\"\r\n    \r\n    'D\u00e9finition du dossier destination\r\n    Dossier_Cible = \"Z:\\FEC\"\r\n    \r\n    NomFichierZIP = Dir(Dossier_Source &amp; \"\\\")\r\n    Do While NomFichierZIP &lt;&gt; \"\"\r\n        If FSO.GetExtensionName(Dossier_Source &amp; \"\\\" &amp; NomFichierZIP) = \"ZIP\" Then\r\n            ShApp.Namespace(Dossier_Cible &amp; \"\\\").CopyHere ShApp.Namespace(Dossier_Source &amp; \"\\\" &amp; NomFichierZIP).Items\r\n        End If\r\n        NomFichierZIP = Dir\r\n    Loop\r\nEnd Sub<\/pre>\n<p style=\"text-align: justify;\">Cette <strong>deuxi\u00e8me macro<\/strong> remplit la m\u00eame fonction que la pr\u00e9c\u00e9dente \u00e0 la diff\u00e9rence pr\u00e8s que le contenu des variables <em>Dossier_Source<\/em> et <em>Dossier_Cible<\/em> est d\u00e9fini en dur dans le code source de la premi\u00e8re (<em>Dossier_Source<\/em> = &#8220;..&#8221;) et sur s\u00e9lection de l&#8217;utilisateur dans la seconde.<\/p>\n<p style=\"text-align: justify;\">Dans ce deuxi\u00e8me code source, la d\u00e9finition des sources et cibles s&#8217;op\u00e8re avec la <strong>commande <em>FileDialog<\/em><\/strong>. Celle-ci s&#8217;utilise en deux temps :<\/p>\n<ul>\n<li style=\"text-align: justify;\">Cr\u00e9ation de l&#8217;objet FDialog (nom au choix du programmeur) : <em>Set FDialog = Application.FileDialog(msoFileDialogFolderPicker)<\/em><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Le param\u00e8tre de <em>FileDialog<\/em>, ici <em>msoFileDialogFolderPicker<\/em> indique que l&#8217;utilisateur doit s\u00e9lectionner un dossier (<em>Folder<\/em> en anglais). La valeur <em>msoFileDialogFilePicker<\/em> demanderait \u00e0 l&#8217;utilisateur de s\u00e9lectionner un fichier (<em>File<\/em>).<\/p>\n<ul>\n<li style=\"text-align: justify;\"><em>Dossier_Source = FDialog.SelectedItems<\/em>.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">La variable <em>Dossier_Source<\/em> prend la valeur du dossier s\u00e9lectionn\u00e9 par l&#8217;utilisateur.<\/p>\n<p style=\"text-align: justify;\">La commande <em>FileDialog<\/em> ouvre la fen\u00eatre suivante :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10249\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/FileDialog.png\" alt=\"Fen\u00eatre FileDialog\" width=\"780\" height=\"457\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/FileDialog.png 780w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/FileDialog-300x176.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/FileDialog-768x450.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2022\/06\/FileDialog-730x428.png 730w\" sizes=\"auto, (max-width: 780px) 100vw, 780px\" \/><\/p>\n<p style=\"text-align: justify;\">La fen\u00eatre de dialogue est personnalisable. Exemples de personnalisation :<\/p>\n<ul>\n<li style=\"text-align: justify;\"><em>FDialog.InitialFileName = &#8220;C:\\&#8221;<\/em> : le dossier par d\u00e9faut est C:\\<\/li>\n<li style=\"text-align: justify;\"><em>FDialog.Title = &#8220;S\u00e9lectionnez le dossier cible o\u00f9 extraire le contenu du(des) fichier(s) ZIP&#8221;<\/em> : d\u00e9finit le titre de la fen\u00eatre de dialogue.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Code source :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">Sub Unzip_FileDialog()\r\n    'D\u00e9finition des variables\r\n    Dim FDialog As FileDialog\r\n    Dim FSO As Object\r\n    Dim ShApp As Object\r\n    '---Chemin du dossier contenant les fichiers ZIP\r\n    Dim Dossier_Source As Variant\r\n    '---Chemin du dossier o\u00f9 transf\u00e9rer les fichiers d\u00e9zipp\u00e9s\r\n    Dim Dossier_Cible As Variant\r\n    '---Nom du fichier ZIP\r\n    Dim NomFichierZIP As Variant\r\n\r\n    Set ShApp = CreateObject(\"shell.application\")\r\n    Set FSO = CreateObject(\"scripting.filesystemobject\")\r\n    \r\n    Set FDialog = Application.FileDialog(msoFileDialogFolderPicker)\r\n  \r\n    'D\u00e9finition du dossier contenant des fichiers ZIP\r\n    With FDialog\r\n        FDialog.InitialFileName = \"C:\\\"\r\n        FDialog.Title = \"S\u00e9lectionnez le dossier source contenant le(s) fichier(s) ZIP\"\r\n        If FDialog.Show Then\r\n          Dossier_Source = FDialog.SelectedItems(1)\r\n        Else\r\n          Exit Sub\r\n        End If\r\n    End With\r\n    \r\n    'D\u00e9finition du dossier destination\r\n    With FDialog\r\n        FDialog.InitialFileName = \"C:\\\"\r\n        FDialog.Title = \"S\u00e9lectionnez le dossier cible o\u00f9 extraire le contenu du(des) fichier(s) ZIP\"\r\n        If FDialog.Show Then\r\n          Dossier_Cible = FDialog.SelectedItems(1)\r\n        Else\r\n          Exit Sub\r\n        End If\r\n    End With\r\n    \r\n    NomFichierZIP = Dir(Dossier_Source &amp; \"\\\")\r\n    Do While NomFichierZIP &lt;&gt; \"\"\r\n        If FSO.GetExtensionName(Dossier_Source &amp; \"\\\" &amp; NomFichierZIP) = \"ZIP\" Then\r\n            ShApp.Namespace(Dossier_Cible &amp; \"\\\").CopyHere ShApp.Namespace(Dossier_Source &amp; \"\\\" &amp; NomFichierZIP).Items\r\n        End If\r\n        NomFichierZIP = Dir\r\n    Loop\r\nEnd Sub<\/pre>\n<p style=\"text-align: justify;\">___<\/p>\n<p style=\"text-align: justify;\">Pour approfondir le sujet :&nbsp;<a href=\"https:\/\/www.auditsi.eu\/?tag=analyse-de-donnees\">Analyse de donn\u00e9es<\/a>&nbsp;\/&nbsp;<a href=\"https:\/\/www.auditsi.eu\/?tag=automatisation\">Automatisation<\/a> &amp; <a href=\"https:\/\/www.auditsi.eu\/?tag=productivite\">productivit\u00e9<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?cat=215\">VBA<\/a><\/p>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\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=\"VBA%20%3A%20D%C3%A9compresser%20en%20masse%20des%20fichiers%20Zip\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Un fichier ZIP est un fichier qui contient un ou plusieurs fichiers compress\u00e9s ; la compression de fichiers permettant de r\u00e9duire le volume des donn\u00e9es avant leur transmission ou stockage. La d\u00e9compression des fichiers ZIP est l&#8217;\u00e9tape indispensable pour retrouver les fichiers dans leur forme originelle avant de pouvoir les exploiter. En pr\u00e9sence de nombreux &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=10246\" class=\"more-link\">Continue reading &lsquo;VBA : D\u00e9compresser en masse des fichiers Zip&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=\"VBA%20%3A%20D%C3%A9compresser%20en%20masse%20des%20fichiers%20Zip\";<\/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":[1569,215],"tags":[2674,2679,273,2625,1789,2671,2672,2676,2673,2678,2677,2675,723,1641,2670],"class_list":["post-10246","post","type-post","status-publish","format-standard","hentry","category-programmer-en-vba","category-vba","tag-copyhere","tag-initialfilename","tag-boucles","tag-compression","tag-dcsnet","tag-decompression","tag-do-while-loop","tag-filedialog","tag-fso-getextensionname","tag-msofiledialogfilepicker","tag-msofiledialogfolderpicker","tag-namespace","tag-productivite","tag-vba","tag-zip"],"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\/10246","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=10246"}],"version-history":[{"count":7,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/10246\/revisions"}],"predecessor-version":[{"id":10252,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/10246\/revisions\/10252"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}