Ratio Inventaires
Projet Excel/VBA permettant de gérer les inventaires, les articles, les fournisseurs, les factures, le chiffre d’affaires et les ratios de consommation pour plusieurs activités.
Le projet est organisé pour travailler proprement avec PyCharm, Git/Gitea et des scripts de mise en production automatisés.
Objectif du projet
Le projet permet de maintenir plusieurs classeurs Excel métier :
Ratio_Cuisine.xlsmRatio_Restauration.xlsmDémo_Ratio_Cuisine.xlsm
Les fichiers de développement sont conservés dans Excel/dev, puis copiés vers Excel/prod par des scripts de mise en production.
Le numéro de version est géré automatiquement par fichier .txt interne, puis écrit directement dans le classeur Excel livré.
Organisation des dossiers
Ratio_Inventaires/
│
├── Docs/
│
├── Excel/
│ ├── backup/
│ │ └── anciennes versions sauvegardées
│ │
│ ├── dev/
│ │ ├── Ratio_Cuisine_dev.xlsm
│ │ ├── Ratio_Cuisine_VERSION.txt
│ │ ├── Ratio_Restauration_dev.xlsm
│ │ └── Ratio_Restauration_VERSION.txt
│ │
│ └── prod/
│ ├── Démo_Ratio_Cuisine.xlsm
│ ├── Ratio_Cuisine.xlsm
│ └── Ratio_Restauration.xlsm
│
└── Scripts/
├── Maj_prod_Cuisine.bat
├── Maj_prod_Restauration.bat
├── maj_version.py
└── set_cell_silent.vbs
Rôle des dossiers
Excel/dev
Contient les fichiers de travail.
Ratio_Cuisine_dev.xlsm
Ratio_Restauration_dev.xlsm
Ces fichiers sont les fichiers modifiables.
Les fichiers *_VERSION.txt restent uniquement dans dev. Ils servent de compteurs internes pour les scripts de versionnage.
Excel/prod
Contient les fichiers livrables.
Ratio_Cuisine.xlsm
Ratio_Restauration.xlsm
Démo_Ratio_Cuisine.xlsm
Les fichiers de production ne nécessitent plus de fichier .txt à côté. La version est directement écrite dans le classeur Excel.
Excel/backup
Contient les anciennes versions de production sauvegardées automatiquement avant remplacement.
Exemple :
Ratio_Cuisine_Vers1.0.15.xlsm
Ratio_Restauration_Vers2.1.3.xlsm
Le nombre de sauvegardes conservées est limité dans les scripts .bat.
Scripts
Contient les scripts d’automatisation :
Maj_prod_Cuisine.bat
Maj_prod_Restauration.bat
maj_version.py
set_cell_silent.vbs
Versionnage
Le projet utilise deux familles de versions :
Cuisine → 1.x.x
Restauration → 2.x.x
Les fichiers de version à conserver sont uniquement :
Excel/dev/Ratio_Cuisine_VERSION.txt
Excel/dev/Ratio_Restauration_VERSION.txt
Les fichiers .txt de version ne doivent plus être copiés dans Excel/prod.
Fonctionnement du script de version
Le script :
Scripts/maj_version.py
fait les opérations suivantes :
- lit le fichier
*_VERSION.txtdansExcel/dev; - force le numéro majeur selon le classeur ;
- incrémente le patch ;
- réécrit le fichier
.txt; - écrit la version directement dans le classeur Excel de production.
Exemple de version écrite dans Excel :
Version : 1.0.12
Version : 2.1.4
L’écriture dans le classeur Excel est faite par :
Scripts/set_cell_silent.vbs
Ce script ouvre Excel en arrière-plan, modifie la cellule de version, sauvegarde et ferme le classeur.
Cellule de version dans Excel
La version est écrite automatiquement dans la feuille :
Tableau de bord
La cellule utilisée doit être réservée à la version.
Recommandation actuelle :
E1 = Version : x.x.x
Attention : C1 est utilisé par le contexte du site, notamment SiteCanonique, et ne doit donc pas être utilisé pour la version.
Mise en production Cuisine
Depuis le dossier Scripts, lancer :
Maj_prod_Cuisine.bat CUISINE
Le script effectue :
- sauvegarde de l’ancienne version de production ;
- copie de
Excel/dev/Ratio_Cuisine_dev.xlsmversExcel/prod/Ratio_Cuisine.xlsm; - incrément de
Excel/dev/Ratio_Cuisine_VERSION.txt; - écriture de la version dans le classeur de production ;
- nettoyage des anciennes sauvegardes.
Mise en production Restauration
Depuis le dossier Scripts, lancer :
Maj_prod_Restauration.bat RESTAURATION
Le script effectue :
- sauvegarde de l’ancienne version de production ;
- copie de
Excel/dev/Ratio_Restauration_dev.xlsmversExcel/prod/Ratio_Restauration.xlsm; - incrément de
Excel/dev/Ratio_Restauration_VERSION.txt; - écriture de la version dans le classeur de production ;
- nettoyage des anciennes sauvegardes.
Fichier de démonstration
Le fichier :
Excel/prod/Démo_Ratio_Cuisine.xlsm
est destiné à présenter le fonctionnement sans installation réseau obligatoire.
Il peut contenir des données locales dans des feuilles de type :
DATA_Articles
DATA_Fournisseurs
DATA_Factures
DATA_Ca
DATA_Inventaires
La version démo peut fonctionner sans connexion MySQL, sans ODBC et sans fichier .txt distribué.
Recommandations pour la version démo :
- données locales uniquement ;
- pas d’identifiants MySQL ;
- pas de requêtes Power Query actives ;
- pas de fichier de version
.txtlivré ; - limitation volontaire des ajouts pour éviter un usage réel non maîtrisé.
Connexions MySQL et ODBC
Les classeurs de production connectés peuvent utiliser MySQL via ODBC.
La version recommandée du pilote est :
MySQL ODBC 8.3 Unicode Driver
Sur les postes clients connectés, le pilote doit être installé avant utilisation.
La version démo locale, elle, ne doit pas dépendre du pilote ODBC.
Installation du pilote MySQL ODBC 8.3
Télécharger le pilote officiel :
mysql-connector-odbc-8.3.0-winx64.msi
Puis le placer dans :
C:\Installers\
Exemple de script d’installation silencieuse :
@echo off
echo ===============================
echo Installation MySQL ODBC 8.3.0
echo ===============================
set MYPATH=C:\Installers
set INSTALLER=%MYPATH%\mysql-connector-odbc-8.3.0-winx64.msi
if exist "%INSTALLER%" (
echo Démarrage de l'installation silencieuse...
msiexec /i "%INSTALLER%" /qn
echo Installation terminée.
) else (
echo Fichier MSI non trouvé :
echo %INSTALLER%
)
À lancer en administrateur.
Bonnes pratiques Git/Gitea
À versionner :
Excel/dev/Ratio_Cuisine_dev.xlsm
Excel/dev/Ratio_Restauration_dev.xlsm
Excel/dev/*_VERSION.txt
Scripts/*.bat
Scripts/*.py
Scripts/*.vbs
README.md
À ignorer ou éviter de versionner :
Excel/backup/
~$*.xlsm
*.tmp
*.bak
Selon la stratégie choisie, les fichiers de Excel/prod peuvent être versionnés ou non. Dans ce projet, ils servent de fichiers livrables générés par les scripts.
Exemple de .gitignore
# Fichiers temporaires Excel
~$*.xlsm
~$*.xlsx
*.tmp
*.bak
# Sauvegardes générées
Excel/backup/
# Cache Python
__pycache__/
*.pyc
# Environnements virtuels
.venv/
venv/
Checklist avant mise en production
Avant de lancer un script de mise en production :
- fermer le classeur Excel concerné ;
- vérifier qu’aucun fichier
~$Ratio_*.xlsmn’est présent ; - sauvegarder les modifications dans le fichier
dev; - lancer le script
.batcorrespondant ; - vérifier que la version est bien écrite dans le classeur
prod; - faire un commit Git/Gitea.
Commandes utiles
Vérifier l’état Git :
git status
Ajouter les modifications :
git add README_old.md Scripts/ Excel/dev/
Créer un commit :
git commit -m "Normalise versioning and prod deployment scripts"
Envoyer vers Gitea :
git push
Dépannage
Erreur : fichier utilisé par un autre processus
Cause probable : le classeur est encore ouvert dans Excel ou un fichier temporaire existe.
Solution :
taskkill /F /IM excel.exe
Puis vérifier que le fichier temporaire a disparu :
~$Ratio_Cuisine.xlsm
~$Ratio_Restauration.xlsm
Erreur dans set_cell_silent.vbs au moment de fermer Excel
Cause probable : Excel est resté en arrière-plan.
Solution : utiliser la version robuste de set_cell_silent.vbs, qui ferme explicitement le classeur et l’application Excel après sauvegarde.
Auteur
Michel