# 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.xlsm` - `Ratio_Restauration.xlsm` - `Dé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 ```text 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. ```text 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. ```text 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 : ```text 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 : ```text Maj_prod_Cuisine.bat Maj_prod_Restauration.bat maj_version.py set_cell_silent.vbs ``` --- ## Versionnage Le projet utilise deux familles de versions : ```text Cuisine → 1.x.x Restauration → 2.x.x ``` Les fichiers de version à conserver sont uniquement : ```text 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 : ```text Scripts/maj_version.py ``` fait les opérations suivantes : 1. lit le fichier `*_VERSION.txt` dans `Excel/dev` ; 2. force le numéro majeur selon le classeur ; 3. incrémente le patch ; 4. réécrit le fichier `.txt` ; 5. écrit la version directement dans le classeur Excel de production. Exemple de version écrite dans Excel : ```text Version : 1.0.12 Version : 2.1.4 ``` L’écriture dans le classeur Excel est faite par : ```text 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 : ```text Tableau de bord ``` La cellule utilisée doit être réservée à la version. Recommandation actuelle : ```text 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 : ```bat Maj_prod_Cuisine.bat CUISINE ``` Le script effectue : 1. sauvegarde de l’ancienne version de production ; 2. copie de `Excel/dev/Ratio_Cuisine_dev.xlsm` vers `Excel/prod/Ratio_Cuisine.xlsm` ; 3. incrément de `Excel/dev/Ratio_Cuisine_VERSION.txt` ; 4. écriture de la version dans le classeur de production ; 5. nettoyage des anciennes sauvegardes. --- ## Mise en production Restauration Depuis le dossier `Scripts`, lancer : ```bat Maj_prod_Restauration.bat RESTAURATION ``` Le script effectue : 1. sauvegarde de l’ancienne version de production ; 2. copie de `Excel/dev/Ratio_Restauration_dev.xlsm` vers `Excel/prod/Ratio_Restauration.xlsm` ; 3. incrément de `Excel/dev/Ratio_Restauration_VERSION.txt` ; 4. écriture de la version dans le classeur de production ; 5. nettoyage des anciennes sauvegardes. --- ## Fichier de démonstration Le fichier : ```text 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 : ```text 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 `.txt` livré ; - 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 : ```text 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 : ```text mysql-connector-odbc-8.3.0-winx64.msi ``` Puis le placer dans : ```text C:\Installers\ ``` Exemple de script d’installation silencieuse : ```bat @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 : ```text 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 : ```text 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` ```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 : 1. fermer le classeur Excel concerné ; 2. vérifier qu’aucun fichier `~$Ratio_*.xlsm` n’est présent ; 3. sauvegarder les modifications dans le fichier `dev` ; 4. lancer le script `.bat` correspondant ; 5. vérifier que la version est bien écrite dans le classeur `prod` ; 6. faire un commit Git/Gitea. --- ## Commandes utiles Vérifier l’état Git : ```bash git status ``` Ajouter les modifications : ```bash git add README_old.md Scripts/ Excel/dev/ ``` Créer un commit : ```bash git commit -m "Normalise versioning and prod deployment scripts" ``` Envoyer vers Gitea : ```bash 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 : ```bat taskkill /F /IM excel.exe ``` Puis vérifier que le fichier temporaire a disparu : ```text ~$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