La création d’une arborescence de dossiers peut s’avérer fastidieuse mais heureusement cette tâche est facilement automatisable.
Le présent article s’attachera à présenter une méthodologie permettant d’obtenir une arborescence de dossiers composée systématiquement de la même manière. Par exemple, un service comptable souhaite classer ses dossiers de révision par entité juridique puis par cycle de révision. Pour vingt entités composées chacune de onze cycles, cela fait 220 dossiers à ouvrir…
La création manuelle de tous ces dossiers est une tâche particulièrement rébarbative qu’une macro VBA ou un batch DOS automatise aisément. L’article ci-après fournit un exemple de batch DOS (pour des exemples de traitements de fichiers à l’aide de macros VBA, consulter les articles suivants : copier, renommer et supprimer de grandes quantités de fichiers et décompresser en masse des fichiers Zip).
Introduction :
Un batch (fournée en anglais) est un script comprenant un ensemble de commandes qui une fois lancé automatise l’exécution de tâches préprogrammées. Ce langage de script, spécialisé sur la gestion de fichiers, est une survivance du système d’exploitation MS/DOS peu à peu remplacé par Windows dès la fin des années 90. L’acronyme MS/DOS signifie Microsoft Disk Operating System, littéralement système d’exploitation du disque (édité par Microsoft).
Le batch se matérialise par un fichier texte (extension *.bat) éditable à l’aide d’un simple éditeur de texte à l’image de Bloc-note (notepad). Il se lance d’un simple double clic et s’exécute à l’ancienne, en mode console.
IMPORTANT : L’attention de l’utilisateur est attirée sur le fait qu’il n’est pas possible d’annuler les actions réalisées par un batch. Les conséquences en cas d’erreur de programmation peuvent être aussi dévastatrices (déplacement, renommage ou, pire, suppression de fichiers non désirés, sans parler du formatage de disque dur…) que les effets causés par un code malveillant (virus…). Il est donc important de comprendre la portée de chaque commande insérée dans un script et de tester ses batchs dans un environnement test (notamment sur des fichiers sauvegardés en amont). Aucune garantie de bon fonctionnement ne peut être apportée par l’auteur de cet article y compris sur l’usage des batchs fournis sur ce blog. En exécutant ces codes, le lecteur accepte de prendre le risque de perte de fichiers à son propre compte.
Pour réaliser ce projet, deux étapes essentielles :
- Modéliser l’arborescence de dossiers ;
- Coder le script de création de l’arborescence.
Modélisation de l’arborescence :
Avant de passer à la phase de rédaction du script, il est nécessaire de poser sur “papier” (ou modéliser) l’arborescence à obtenir. Dans le cas présent, l’arborescence à obtenir comprend en premier niveau l’identifiant de l’entité juridique et en second niveau les cycles de révision comptable.
La liste des entités juridiques et celle des cycles comptables seront stockées dans des variables tableau ; le script puisera les données de ces variables. Les variables tableaux sont une catégorie de variables qui permettent de stocker non pas une seule donnée comme une simple variable (pour mémoire, une variable est un espace mémoire accessible par un programme à l’aide d’un nom ; selon son type, une variable peut stocker une donnée : une chaîne de caractères, un montant chiffré…) mais une des séries de données sur une ou plusieurs dimensions. Plus d’infos sur les variables tableau : https://www.auditsi.eu/?p=5678.
Pour faciliter la création des deux variables tableau, l’utilisateur saisit le nom ou le code des entités ainsi que les cycles de révision dans le classeur Excel fourni ci-après.
Une formule de calcul Excel crée les deux variables tableau à insérer dans le batch à partir des données saisies.
Copie écran des codes entité saisis dans le tableau Excel :
La cellule de couleur bleue représente la définition de la variable table “tableau_entites” qui sera reprise dans le batch.
Copie écran des cycles de révision saisis dans le tableau Excel :
La cellule de couleur bleue représente la définition de la variable table “tableau_cycles” à reprendre dans le script.
Les deux cellules en bleu contiennent la définition des deux variables tableau à insérer dans le script (cf étape suivante) :
- set tableau_entites=(“AMC” “AOA” “AOL” “APA14” “BCO” “DAC” “FFM” “FMD” “GIEMS” “HFM” “IPCO” “KTM” “LEM” “LOGAUT” “MAB” “MAC” “MACH” “MACN” “MACS” “MAD”)
- set tableau_cycles=(“A-REGULARITE FORMELLE” “B-VENTES – CLIENTS” “C-STOCKS ET ENCOURS” “D-IMMOBILISATIONS” “E-DISPONIBILITES – PLACEMENTS – FINANCEMENT” “G-ACHATS – FOURNISSEURS” “H-SOCIAL” “J-FONDS PROPRES – PROVISIONS” “L-FISCAL” “M-AUTRES COMPTES” “Z-INTERCOMPAGNIES”)
Code du script de création de l’arborescence :
Le script est édité avec un éditeur de texte basique tel le Bloc-note (notepad) de Windows :
Quelques explications sur le code source du script fourni plus bas :
La commande “rem” (diminutif de remark en anglais) est suivi de commentaires. Ils ont vocation à documenter le code. Ils ne sont donc pas exécutés.
L’assignation de données à une variable est introduite par le mot clef “set” ; exemple :
set chemin=C:\TESTS\DOSSIERS DE REVISION\2023-12-31
Ici, la variable “chemin” prend la valeur “C:\TESTS\DOSSIERS DE REVISION\2023-12-31” à l’aide du signe égal (=).
L’assignation de valeurs à une variable tableau reprend un fonctionnement similaire à une variable classique. Les valeurs sont séparées les unes des autres par un espace :
set tableau_entites=(“AMC” “AOA” “AOL” “APA14” “BCO” “DAC” “FFM” “FMD” “GIEMS” “HFM” “IPCO” “KTM” “LEM” “LOGAUT” “MAB” “MAC” “MACH” “MACN” “MACS” “MAD”)
C’est à cet endroit du code qu’il convient de reprendre les deux variables tableau générées avec Excel à l’aide d’un Copier / Collage spécial Valeurs.
La ligne “chcp 65001 > nul” active le codage UTF-8 afin d’afficher correctement les caractères spéciaux, y compris les accents français.
Deux boucles compteurs for… in… do (…) imbriquées l’une dans l’autre parcourent les deux variables tableau tableaux Tableau_Entites et Tableau_Cycles et constituent progressivement l’arborescence de dossiers. L’entité et le cycle en cours sont stockés provisoirement dans les variables entite et cycle. A chaque itération des boucles compteur, la commande mkdir (ou md) crée le dossier correspondant dans l’arborescence en utilisant les noms de la société et du cycle de l’occurrence en cours. Une boucle est une structure de programmation qui permet de répéter un ensemble d’instructions un certain nombre de fois. Il existe plusieurs types de boucles dont les boucles compteur. Plus d’informations sur les boucles compteur : https://www.auditsi.eu/?p=1696.
Si une erreur est identifiée (structure conditionnelle If… (…) Else (…)) lors de la création du dossier par mkdir (errorlevel 1), un message est affiché à l’aide de la commande echo. Dans le cas contraire, un message “Dossier créé avec succès” apparaît dans la console.
L’instruction “pause” commande à la console d’attendre que l’utilisateur appuie la touche Entrée avant de continuer l’exécution du batch. Dans le cas présent, cela laisse le temps à l’utilisateur de lire les messages d’exécution ; en effet dès que l’exécution du batch est terminée (ici le temps d’exécution est de quelques secondes), la console se referme sans laisser le temps à l’utilisateur de prendre connaissance des messages.
Exécution du batch :
Pour déclencher l’exécution d’un batch, double-cliquer sur le fichier batch à partir du gestionnaire de fichiers Windows ou en tapant non nom (ici MKDIR REVISION.BAT) dans la fenêtre de l’invite de commandes (console DOS). Cette exécution est du ressort de l’invite de commande (console DOS dépourvue d’interface graphique).
La console est une survivance des années 80 qui peut rendre encore de nombreux services. Par exemple en matière d’automatisation de manipulation de fichiers : copie, création, déplacement… Cette console est dotée d’un langage de script qui offre un large panel de commandes.
Affichage du suivi de la création des dossiers dans la console DOS, un franc succès :
Appuyer sur la touche Entrée. La console se referme. L’exécution du batch est à présent terminée. Il ne reste plus qu’à contempler l’effet produit dans l’explorateur de fichiers et à se satisfaire du temps économisé ! Ca mérite bien une petite pause café ! 😉
Le code source du batch est fourni ci-après. Le classeur Excel de création des variables tableau et le fichier batch (*.bat) sont téléchargeables en pied d’article.
Code-source du batch :
rem ----------------------------------------------------------------------- rem | Batch de création d'arborescence de dossier de révision comptable | rem | | rem | v1.0 06/2023 | rem | Plus d'infos : www.auditsi.eu | rem ----------------------------------------------------------------------- rem ----------------------------------------------------------------------- rem Déclaration des variables rem ---Chemin d'accès où créer l'arborescence set chemin=C:\TESTS\DOSSIERS DE REVISION\2023-12-31 rem ---Liste des entités (1er niveau de sous-dossiers) set tableau_entites=("AMC" "AOA" "AOL" "APA14" "BCO" "DAC" "FFM" "FMD" "GIEMS" "HFM" "IPCO" "KTM" "LEM" "LOGAUT" "MAB" "MAC" "MACH" "MACN" "MACS" "MAD") rem ---Liste des cycles comptables (2ème niveau de sous-dossiers) set tableau_cycles=("A-REGULARITE FORMELLE" "B-VENTES - CLIENTS" "C-STOCKS ET ENCOURS" "D-IMMOBILISATIONS" "E-DISPONIBILITES - PLACEMENTS - FINANCEMENT" "G-ACHATS - FOURNISSEURS" "H-SOCIAL" "J-FONDS PROPRES - PROVISIONS" "L-FISCAL" "M-AUTRES COMPTES" "Z-INTERCOMPAGNIES") rem Autorise l'affichage des accents chcp 65001 > nul rem Désactive l'affichage des fonctions en cours d'exéction @echo off rem Efface le contenu de l'écran cls echo -------------------------------------------------------------- echo Création de l'arborescence des dossiers de révision comptable echo -------------------------------------------------------------- echo. rem Boucles compteur de création de l'arborescence rem ---la 1ère boucle crée les sous-dossiers entités for %%s in %tableau_entites% do ( rem la 2ème boucle crée les sous-dossiers cycles for %%c in %tableau_cycles% do ( setlocal enabledelayedexpansion set "entite=%%~s" set "cycle=%%~c" rem mkdir ou md : crée un dossier ; 2>nul -> désactive l'affichage des messages d'erreur (STDERR = 2 Error text output) mkdir "%chemin%\!entite!\!cycle!" 2>nul rem Affichage d'un message personnalisé en cas d'erreur if errorlevel 1 ( echo Erreur lors de la création du dossier "%chemin%\!entite!\!cycle!". ) else ( echo Dossier "%chemin%\!entite!\!cycle!" créé avec succès. ) endlocal ) ) echo Opérations terminées pause
Autres articles en rapport avec le sujet de l’automatisation de la gestion de fichiers :
- copier, renommer et supprimer de grandes quantités de fichiers
- décompresser en masse des fichiers Zip
Sur ce projet, ChatGPT m’a bien rendu service notamment sur le traitement des variables tableau dont la syntaxe version batch n’est pas des plus simples à comprendre. Pour intégrer ChatGPT dans vos processus de création, consulter l’article : ChatGPT et consorts : pour quoi faire ? (>>> tous les articles en rapport avec l’intelligence artificielle, ChatGPT).
Retrouvez le sujet de l’automatisation et bien d’autres dans la formation à l’analyse de données et l’automatisation des tâches
___
Pour approfondir le sujet : Automatisation / Batch DOS / VBA
Derniers articles parBenoît RIVIERE (voir tous)
- Lancer l’exécution d’un script Python à partir d’une macro VBA - lundi 9 septembre 2024
- Open Data : quoi de neuf ? - lundi 2 septembre 2024
- Auditsi cité dans le podcast Marketing du cabinet comptable - mercredi 21 août 2024
- IA générative : aide à la rédaction de prompts efficaces - samedi 17 août 2024
- S’initier à l’analyse de données et l’automatisation des tâches - dimanche 11 août 2024