Mission 1 : Automatisation de fichiers Excel
Contexte :
L’entreprise possède plusieurs clients souhaitant la fusion de plusieurs de leurs fichiers .csv. Parmi ces fichiers, on distingue des fichiers dont le nom contient MVTPTF, DATAPTF ou SIGPTF. Dans certains cas, il est possible que le nom comporte à la place TRANSATION, INSTRUCTION ou POSITION.
Le soucis est que ces fusions sont faites manuellement sur Excel et demandent beaucoup de temps.
L’objectif de cette mission est à l’aide de Python et pour tous les clients demandés, de fusionner le fichiers SIGPTF avec DATAPTF et MVTPTF, et/ou les fichiers INSTRUCTION avec le fichiers TRANSACTION et POSITION.
Ce qu’il faut savoir :
– Chaque client possède peut posséder plusieurs fichiers DATAPTF, MVTPTF et SIGPTF ou INSTRUCTION, TRANSACTION et POSITION.
– La fusion de fichiers diffère en fonction des clients, le filtrage des données n’est pas le même.
– Chaque client correspondra donc à un script Python. Ces scripts seront utilisés pour créer une application pour les employés utilisant ces fichiers.
– Il est possible qu’un client possède plusieurs dossiers contenant les fichiers à fusionner. La manière de fusionner peut-être différente.
– Les fichiers de sorties possèdes les mêmes colonnes que les fichiers d’entrées. Cependant, les colonne sont placées de façon différente.
Mission :
Dans un premier temps, il faut créer un dossier input, où les fichiers devront être mis afin de les fusionner. Pour faciliter les employers utilisant l’application, il sera possible d’importer directement le dossier du client. Dans l’exemple qui suit, le client possède plusieurs dossiers : Candriam et Belfius. Dans la démonstration, on utilisera Belfius.
Le dossier combined sera le dossier où les fichiers fusionnés seront placés.
Voici ce que peut comporter un fichier Excel :
Pour des raisons de confidentialités, certaines informations ont été cachées.
Ici, Security Identifier Code est un code unique. Ce code est aussi présent dans les fichiers SIGPTF et MVTPTF. Ainsi, à l’aide de celui ci, il sera possible de fusionner les lignes comportant le même code.
Le script :
Cette foncton va être la fonction appelée et qui va lancer tout le script. Elle prend en paramètre le chemin du dossier client dans le dossier put the folders.
On parcourt tous les sous-dossiers et on recherche le nom de Belfius et Candriam. Ainsi, les deux sous-dossiers pourront être traités séparement avec l’appel des fonctions combined_belfius_files et combined_candria_files.
La fonction combined_belfius_files prend en paramètre le chemin du dossier Belfius.
Dans cette procédure, On va combiner les données des fichiers DATAPTF, SIGPTF et MVTPTF dans 3 tableaux distincts. Dans chaque fichiers Excel, la première ligne est le titre de chaque colonne. Mais dans certains cas, il est possible que des commentaires aient été mis dans les fichiers input.
Afin de détecter cette première ligne du fichier Excel, il suffit de récupérer le titre de la première colonne et de repéré son index (la ligne où se situe les titres). Ici, on prend comme référence Client Source Code. On récupère la ligne des titres uniquement pour le premier fichier, ainsi, on vérifié en amont que notre tableau est bien vide. Si ce tableau n’est pas vide, alors des données ont déjà été insérées, il suffira de récupérer les données des autres fichiers sans la ligne des titres.
Cette action est répétée pour les 3 types de fichiers : DATAPTF, SIGPTF et MVTPTF. D’où la répétition du code.
Ce qu’il faut savoir :
Chacun de ces 3 tableaux sont en fait des tableaux de tableaux. Une ligne d’un fichier .csv équivaut à un tableau. Par exemple, la donnée de la colonne 4 et de la ligne 5 du fichier DATAPTF est finalement DATAPTF[5][4].
Ensuite, on vérifie si il existe un dossier combined. Si il n’existe pas, on le créer dans le dossier client. On créé une variable qui va être le chemin avec le nom du fichier de sortie (fichier combiné). Enfin, on vérifie que données nécéssaires ne sont pas vide pour pouvoir lancer la fonction qui va combiner les données SIGPTF avec DATAPTF et dans une autre fonction SIGPTF avec MVTPTF.
Dans l’exemple qui suit, nous utiliseront la procédure combined_with_DATAPTF_belfius.
La procédure combined_with_DATAPTF_belfius prend en paramètre le tableau de tableaux SIGPTF (SIGPTF_data) et DATAPTF (OTHR_data) et le chemin du fichier de sortie (fichier_sortie).
Pour les fichiers .csv, il faut ouvrir le fichier de sortie qui sera créé automatiquement avec la commande open().
Afin de réordonner les colonnes pour le fichier de sortie, il faut récupérer les indices des colonnes qui seront utilisées. find_index est une fonction qui retourne l’indice d’un champ entré en paramètre dans un tableau.
Ensuite on remplace la ligne des titres de DATAPTF par la ligne des titres réordonnée et boucler sur toutes les données de SIGPTF (l) et DATAPTF (k) en utilisant 2 boucles (et en excluant la ligne des titres) pour combiner les données. Pour se faire, il faudra vérifier l’égalitée entre le Security Identifier Code de chaque ligne de DATAPTF (k) avec ceux de SIGPTF (l) afin d’identifier les lignes correspondantes. Car comme expliqué précédément, les Security Identifier Code sont des codes uniques. Si l’égalité est verifiée on modifie la ligne de DATAPTF en cours (k) en ajoutant les données de SIGPTF (l) et réordonnant les données de cette ligne k.
Une fois cette étape terminée, toutes les données du fichier de sortie sont présentes dans le tableau de DATAPTF (OTHR_data). Il faut ensuite écrire toutes les données dans le fichier de sortie.
Enfin on ferme le fichier de sortie et on l’ouvre automatiquement dans Excel.
Ainsi s’achève ma mission sur l’automatisation de fichiers Excel.