Modification du versionnage auto

This commit is contained in:
2026-05-10 16:12:23 +02:00
parent 703d2ecda3
commit c2b75076d0
57 changed files with 827 additions and 313 deletions

537
README.md
View File

@@ -1,203 +1,428 @@
# Inventaire-Gestion
# Ratio Inventaires
Ce projet permet de gérer les inventaires et les ratios de plusieurs sites à partir dun fichier Excel central et dune base MySQL.
Projet Excel/VBA permettant de gérer les inventaires, les articles, les fournisseurs, les factures, le chiffre daffaires et les ratios de consommation pour plusieurs activités.
## Fonctionnalités
* Mise à jour du pilote ODBC sur machine client
* Authentification par site
* Lecture automatique du fichier `ratio.xlsm`
* Insertion des données dans la base correspondante
* Gestion des articles et inventaire par code barres
* Affichage dans Streamlit (à venir)
# 🚀 Installation du pilote MySQL ODBC 8.3
## ✅ Objectif
Assurer une compatibilité totale entre les fichiers Excel connectés à MySQL et le pilote ODBC, en uniformisant tous les postes avec la **version 8.3.0 du connecteur MySQL ODBC**.
Le projet est organisé pour travailler proprement avec PyCharm, Git/Gitea et des scripts de mise en production automatisés.
---
## 📥 Étapes d'installation
## Objectif du projet
1. Télécharger le fichier `mysql-connector-odbc-8.3.0-winx64.msi` depuis le site officiel :
Le projet permet de maintenir plusieurs classeurs Excel métier :
👉 [https://dev.mysql.com/downloads/connector/odbc/](https://dev.mysql.com/downloads/connector/odbc/)
- `Ratio_Cuisine.xlsm`
- `Ratio_Restauration.xlsm`
- `Démo_Ratio_Cuisine.xlsm`
2. Copier le fichier dans ce dossier sur chaque poste cible :
Les fichiers de développement sont conservés dans `Excel/dev`, puis copiés vers `Excel/prod` par des scripts de mise en production.
```
C:\Installers\
```
3. Créer un fichier `Installer_ODBC_93.bat` contenant :
```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 avec succès.
pause
) ELSE (
echo >> Fichier MSI non trouvé :
echo >> %INSTALLER%
pause
)
```
4. Lancer le script :
* clic droit sur `Installer_ODBC_83.bat`
* puis **"Exécuter en tant quadministrateur"**
Le numéro de version est géré automatiquement par fichier `.txt` interne, puis écrit directement dans le classeur Excel livré.
---
## 🔁 (Optionnel) Désinstallation d'une version précédente
## Organisation des dossiers
Pour supprimer proprement une version antérieure (ex : 8.2), vous pouvez ajouter :
```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 dautomatisation :
```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
msiexec /x {GUID-DE-LA-VERSION-8.2} /qn
Maj_prod_Cuisine.bat CUISINE
```
*(à compléter avec l'identifiant de produit si nécessaire)*
Le script effectue :
1. sauvegarde de lancienne 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.
---
## 🧩 Conseils
## Mise en production Restauration
* Intégrez ces fichiers dans votre dépôt (ex : dossier `Installers/`)
* Versionnez votre script dans Git (Gitea) pour faciliter le déploiement sur tous les sites
* Utilisez RustDesk ou accès direct pour l'installation sur les PC distants
Depuis le dossier `Scripts`, lancer :
# 🔧 Gestion et distribution du fichier Excel `Ratio_prod.xlsm`
Ce document décrit le fonctionnement mis en place pour garantir une version stable et toujours à jour du fichier Excel `Ratio_prod.xlsm`, utilisé dans le cadre du projet **Ratio & Inventaires**.
---
## 🗃️ Organisation des fichiers
### Structure dans le projet (Git)
/Excel/
├── dev/
│ └── Ratio\_dev.xlsm ← Fichier de travail
├── prod/
│ └── Ratio\_prod.xlsm ← Fichier de production (non suivi par Git)
* `Ratio_dev.xlsm` : version de développement modifiable, suivie par Git.
* `Ratio_prod.xlsm` : version validée, protégée (ajoutée au `.gitignore` pour éviter tout push accidentel).
---
## 🖥️ Synchronisation automatique avec le NAS Synology
Le fichier `Ratio_prod.xlsm` est copié automatiquement sur le NAS Synology, dans un dossier partagé :
### ⚙️ Configuration
* **Synology Drive Server** est activé sur le NAS.
* **Synology Drive Client** est installé sur le poste de travail.
* Dossier synchronisé : `Partage_Ratio`
* Mode de synchronisation recommandé : `Téléchargement uniquement`.
---
## 🔌 Copie automatique vers clé USB (via NAS)
### Prérequis
* Application **USB Copy** installée et activée sur le NAS.
### Fonctionnement
1. Brancher une clé USB sur le port en façade du NAS.
2. Le NAS copie automatiquement `Ratio_prod.xlsm` sur la clé USB si une version plus récente est disponible.
3. Le fichier est copié dans le dossier racine de la clé, ou dans un dossier `Ratio/`.
### Avantages
* Pas besoin dordinateur pour copier à la main.
* Copie toujours à jour dès que la clé est branchée.
---
## 🛠️ Installation manuelle depuis une clé USB
Contenu du dossier USB :
```
INSTALL_RATIO/
├── Ratio_prod.xlsm
└── Installer_Prod.bat
```bat
Maj_prod_Restauration.bat RESTAURATION
```
### Étapes :
Le script effectue :
1. Brancher la clé USB sur le poste utilisateur.
2. Lancer `Installer_Prod.bat` **en tant quadministrateur**.
3. Le fichier sera copié dans :
```
C:\Program Files\Ratio\Ratio.xlsm
```
et protégé en lecture seule.
1. sauvegarde de lancienne 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.
---
## ♻️ Restaurer la version de production dans le projet (dev)
## Fichier de démonstration
Si la version de travail (`dev`) a été corrompue ou modifiée par erreur :
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 didentifiants 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 dinstallation 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 quaucun fichier `~$Ratio_*.xlsm` nest 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
cp Excel/prod/Ratio_Cuisine.xlsm Excel/dev/Ratio_Cuisine_dev_old.xlsm
git status
```
Ou sous Windows :
Ajouter les modifications :
```powershell
Copy-Item -Path "Excel\prod\Ratio_prod.xlsm" -Destination "Excel\dev\Ratio_dev.xlsm" -Force
```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
```
---
## 🧾 Notes complémentaires
## Dépannage
* Le fichier `Ratio_prod.xlsm` nest **pas suivi par Git**, car exclu via `.gitignore`.
* Il est **protégé en lecture seule** sur le poste utilisateur.
* Une sauvegarde automatique est possible via **Hyper Backup** ou les **snapshots** du NAS.
### 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
```
---
# 📋 Checklist Release DEV → PROD
### Erreur dans `set_cell_silent.vbs` au moment de fermer Excel
Pour garantir que DEV reste ouvert et que PROD soit protégé :
Cause probable : Excel est resté en arrière-plan.
1. **Travailler dans DEV** : `Excel/dev/Ratio_dev.xlsm` (projet VBA non verrouillé).
2. **Lancer le script batch** (`build_prod.bat`).
* Copie DEV → PROD
* Application des protections (feuilles, structure, horodatage)
* Vérification/verrouillage du projet VBA PROD (manuel si nécessaire)
3. **Vérifier PROD** :
* Feuilles protégées
* Structure du classeur protégée
* Projet VBA verrouillé (mot de passe, déjà posé une fois)
4. **Distribuer PROD** : via NAS, USB ou dossier client.
👉 DEV reste toujours libre, PROD reste verrouillé et sûr.
Solution : utiliser la version robuste de `set_cell_silent.vbs`, qui ferme explicitement le classeur et lapplication Excel après sauvegarde.
---