Optimiser la collaboration avec les équipes métiers
#11 Python pour automatiser la transformation de fichier excel tout en préservant leur formatage
Travailler avec des équipes métiers qui ne sont pas spécialisées dans la gestion de données peut souvent signifier s'adapter à des collègues habitués à utiliser Excel pour leurs tâches quotidiennes. Ces équipes préfèrent généralement des mises en page en format large, plus intuitives et lisibles pour l’œil humain, plutôt qu'un format long et dense.

Il est également fréquent que ces utilisateurs d’Excel emploient des codes couleurs spécifiques pour organiser leurs données, ce qui ajoute un niveau de complexité. Dans les métiers de la data, nous travaillons, avec des bases de données, des parquets, des fichiers csv ou xlsx. Lorsqu'il s'agit de transformer ces derniers, nous (les data guys) les lisons, les transformons puis les sauvegardons en fichiers csv. 😅
Transformer des fichiers xlsx tout en conservant le format et les couleurs des différentes cellules….Ceci ajoute une complexité supplémentaire…
Là s’installe une conversation entre le PME (Partisan du moindre effort) et le DW (Data Worker) qui sont en moi.
Moi PME: Autant le faire manuellement après avoir transformé le fichier en csv?
Moi DW: Non! Pas d’opérations manuelles, pas de tâches répétitives!
Moi: Comment faire?
Python est toujours la solution pour automatiser un processus.
Pour ce genre de transformation, je recommande l'utilisation du package openpyxl
. Ce package permet de manipuler des fichiers Excel (.xlsx ou .xls) tout en préservant les formats originaux, les styles et les couleurs.
Pour te montrer comment tirer parti de ce package, j'ai préparé une démonstration où un menu déroulant est crée grâce à Python tout en conservant le format des cellules du fichier original.
Il est possible d'aller plus loin que cet exemple, en automatisant la transformation de colonnes puis en ajoutant un codes couleurs en fonction du résultat ou utiliser d’autres outils visuels afin de mettre en avant des informations aux utilisateurs de ce fichier.
Le code utilisé pour créer le menu déroulant est le suivant:
# importer les modules
from openpyxl import load_workbook
from openpyxl.worksheet.datavalidation import DataValidation
# Le nom du fichier
path_input = "path"
path_output = "path"
# Charger le fichier excel
workbook = load_workbook(filename=path_input)
# Choisi "Sheet1"
ws = workbook["Sheet1"]
# Créer le menu déroulant prenant la valeur Oui ou Non
dv = DataValidation(type="list", formula1='"Oui,Non"',
allow_blank=False, showDropDown = False)
# Ajouter la possibilité d'utiliser le menu déroulant sur ws
# qui représente "Sheet1"
ws.add_data_validation(dv)
dv.add(ws["C2"])
dv.add(ws["C3"])
# Sauvegarder le fichier
workbook.save(filename=path_output)
Si tu es intéressé par davantage de méthodes pour automatiser des tâches répétitives en Python, je te conseille vivement le livre : “Automate the boring stuff with Python“ de Al Sweigart. il est disponible gratuitement en ligne.

Merci d’avoir lu.
C’est tout pour cette semaine :)
Je connais cette bibliothèque mais jamais utilisé, c’est interessant, I will try it😉