Modification du versionnage auto
This commit is contained in:
Binary file not shown.
BIN
Excel/backup/Ratio_Cuisine_Vers4.2.109.xlsm
Normal file
BIN
Excel/backup/Ratio_Cuisine_Vers4.2.109.xlsm
Normal file
Binary file not shown.
BIN
Excel/backup/Ratio_Cuisine_Vers4.2.110.xlsm
Normal file
BIN
Excel/backup/Ratio_Cuisine_Vers4.2.110.xlsm
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Excel/prod/Démo_Ratio_Cuisine.xlsm
Normal file
BIN
Excel/prod/Démo_Ratio_Cuisine.xlsm
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,2 +0,0 @@
|
||||
4.2.109
|
||||
2026-05-08
|
||||
Binary file not shown.
@@ -1,2 +0,0 @@
|
||||
2.1.62
|
||||
2026-05-04
|
||||
537
README.md
537
README.md
@@ -1,203 +1,428 @@
|
||||
# Inventaire-Gestion
|
||||
# Ratio Inventaires
|
||||
|
||||
Ce projet permet de gérer les inventaires et les ratios de plusieurs sites à partir d’un fichier Excel central et d’une base MySQL.
|
||||
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.
|
||||
|
||||
## 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 qu’administrateur"**
|
||||
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 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
|
||||
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 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.
|
||||
|
||||
---
|
||||
|
||||
## 🧩 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 d’ordinateur 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 qu’administrateur**.
|
||||
3. Le fichier sera copié dans :
|
||||
|
||||
```
|
||||
C:\Program Files\Ratio\Ratio.xlsm
|
||||
```
|
||||
|
||||
et protégé en lecture seule.
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
## ♻️ 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 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
|
||||
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` n’est **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 l’application Excel après sauvegarde.
|
||||
|
||||
---
|
||||
|
||||
|
||||
206
README_old.md
Normal file
206
README_old.md
Normal file
@@ -0,0 +1,206 @@
|
||||
# Inventaire-Gestion
|
||||
|
||||
Ce projet permet de gérer les inventaires et les ratios de plusieurs sites à partir d’un fichier Excel central et d’une base MySQL.
|
||||
|
||||
## 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**.
|
||||
|
||||
---
|
||||
|
||||
## 📥 Étapes d'installation
|
||||
|
||||
1. Télécharger le fichier `mysql-connector-odbc-8.3.0-winx64.msi` depuis le site officiel :
|
||||
|
||||
👉 [https://dev.mysql.com/downloads/connector/odbc/](https://dev.mysql.com/downloads/connector/odbc/)
|
||||
|
||||
2. Copier le fichier dans ce dossier sur chaque poste cible :
|
||||
|
||||
```
|
||||
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 qu’administrateur"**
|
||||
|
||||
---
|
||||
|
||||
## 🔁 (Optionnel) Désinstallation d'une version précédente
|
||||
|
||||
Pour supprimer proprement une version antérieure (ex : 8.2), vous pouvez ajouter :
|
||||
|
||||
```bat
|
||||
msiexec /x {GUID-DE-LA-VERSION-8.2} /qn
|
||||
```
|
||||
|
||||
*(à compléter avec l'identifiant de produit si nécessaire)*
|
||||
|
||||
---
|
||||
|
||||
## 🧩 Conseils
|
||||
|
||||
* 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
|
||||
|
||||
# 🔧 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 d’ordinateur 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
|
||||
```
|
||||
|
||||
### Étapes :
|
||||
|
||||
1. Brancher la clé USB sur le poste utilisateur.
|
||||
2. Lancer `Installer_Prod.bat` **en tant qu’administrateur**.
|
||||
3. Le fichier sera copié dans :
|
||||
|
||||
```
|
||||
C:\Program Files\Ratio\Ratio.xlsm
|
||||
```
|
||||
|
||||
et protégé en lecture seule.
|
||||
|
||||
---
|
||||
|
||||
## ♻️ Restaurer la version de production dans le projet (dev)
|
||||
|
||||
Si la version de travail (`dev`) a été corrompue ou modifiée par erreur :
|
||||
|
||||
```bash
|
||||
cp Excel/prod/Ratio_Cuisine.xlsm Excel/dev/Ratio_Cuisine_dev_old.xlsm
|
||||
```
|
||||
|
||||
Ou sous Windows :
|
||||
|
||||
```powershell
|
||||
Copy-Item -Path "Excel\prod\Ratio_prod.xlsm" -Destination "Excel\dev\Ratio_dev.xlsm" -Force
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧾 Notes complémentaires
|
||||
|
||||
* Le fichier `Ratio_prod.xlsm` n’est **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.
|
||||
|
||||
---
|
||||
|
||||
# 📋 Checklist Release DEV → PROD
|
||||
|
||||
Pour garantir que DEV reste ouvert et que PROD soit protégé :
|
||||
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
## Auteur
|
||||
|
||||
Michel
|
||||
@@ -1,36 +1,25 @@
|
||||
@echo off
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
|
||||
REM --- Se place dans le dossier du .bat ---
|
||||
cd /d "%~dp0"
|
||||
|
||||
REM Chemin du fichier de version pour la CUISINE
|
||||
set "VERSION_FILE=..\Excel\prod\Ratio_Cuisine_VERSION.txt"
|
||||
REM === PARAMETRES CUISINE ===
|
||||
set "ROOT=%~dp0.."
|
||||
|
||||
REM On lit l'ANCIENNE version avant de la mettre à jour (pour nommer la sauvegarde)
|
||||
set "VERSION_FILE=%ROOT%\Excel\dev\Ratio_Cuisine_VERSION.txt"
|
||||
set "SRC=%ROOT%\Excel\dev\Ratio_Cuisine_dev.xlsm"
|
||||
set "DST_DIR=%ROOT%\Excel\prod"
|
||||
set "DST=%DST_DIR%\Ratio_Cuisine.xlsm"
|
||||
set "BACKUP_DIR=%ROOT%\Excel\backup"
|
||||
set KEEP_BACKUPS=10
|
||||
|
||||
REM === Lire ancienne version pour nom sauvegarde ===
|
||||
set "OLD_VERSION="
|
||||
if exist "%VERSION_FILE%" (
|
||||
set /p OLD_VERSION=<"%VERSION_FILE%"
|
||||
)
|
||||
REM Nombre de sauvegardes Cuisine à conserver
|
||||
set KEEP_BACKUPS=10
|
||||
|
||||
echo Mise à jour de version...
|
||||
python "maj_version.py" "%VERSION_FILE%"
|
||||
if errorlevel 1 (
|
||||
echo ERREUR lors de la mise à jour de version.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM === 2) CHEMINS DES FICHIERS EXCEL ===
|
||||
set SRC=..\Excel\dev\Ratio_Cuisine_dev.xlsm
|
||||
set DST_DIR=..\Excel\prod
|
||||
|
||||
REM Dossier commun de sauvegardes (Cuisine + Restauration)
|
||||
set BACKUP_DIR=..\Excel\backup
|
||||
|
||||
REM Vérifications
|
||||
REM === Vérifications ===
|
||||
if not exist "%SRC%" (
|
||||
echo ERREUR : fichier source introuvable :
|
||||
echo %SRC%
|
||||
@@ -45,33 +34,48 @@ if not exist "%DST_DIR%" (
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM Création auto du dossier de sauvegarde s'il n'existe pas
|
||||
if not exist "%BACKUP_DIR%" (
|
||||
mkdir "%BACKUP_DIR%"
|
||||
)
|
||||
|
||||
REM === 3) NOM DU FICHIER DE SAUVEGARDE AVEC ANCIENNE VERSION ===
|
||||
if "%OLD_VERSION%"=="" (
|
||||
REM Sécurité : si on n'a pas réussi à lire la version, on met un nom générique
|
||||
set "BACKUP=%BACKUP_DIR%\Ratio_Cuisine_sansVersion.xlsm"
|
||||
) else (
|
||||
set "BACKUP=%BACKUP_DIR%\Ratio_Cuisine_Vers%OLD_VERSION%.xlsm"
|
||||
REM === Sauvegarde de l'ancienne prod avant remplacement ===
|
||||
if exist "%DST%" (
|
||||
if "%OLD_VERSION%"=="" (
|
||||
set "BACKUP=%BACKUP_DIR%\Ratio_Cuisine_sansVersion.xlsm"
|
||||
) else (
|
||||
set "BACKUP=%BACKUP_DIR%\Ratio_Cuisine_Vers%OLD_VERSION%.xlsm"
|
||||
)
|
||||
|
||||
echo Sauvegarde de l'ancienne production...
|
||||
copy /Y "%DST%" "%BACKUP%"
|
||||
)
|
||||
|
||||
REM === 4) COPIE VERS PROD ===
|
||||
REM === Copie DEV vers PROD ===
|
||||
echo Copie vers la version de production...
|
||||
copy /Y "%SRC%" "%DST_DIR%\Ratio_Cuisine.xlsm"
|
||||
copy /Y "%SRC%" "%DST%"
|
||||
|
||||
REM === 5) SAUVEGARDE ===
|
||||
echo Création de la sauvegarde datée...
|
||||
copy /Y "%SRC%" "%BACKUP%"
|
||||
if errorlevel 1 (
|
||||
echo ERREUR lors de la copie vers production.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Terminé.
|
||||
exit /b 0
|
||||
REM === Mise à jour version TXT + cellule C1 du classeur PROD ===
|
||||
echo Mise à jour de version...
|
||||
python "%~dp0maj_version.py" "%VERSION_FILE%" "%DST%"
|
||||
|
||||
REM === 6) NETTOYAGE : on ne garde que les %KEEP_BACKUPS% dernières sauvegardes Cuisine ===
|
||||
REM Tri par date décroissante (les plus récentes d'abord). On supprime au-delà de KEEP_BACKUPS.
|
||||
if errorlevel 1 (
|
||||
echo ERREUR lors de la mise à jour de version.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM === Nettoyage sauvegardes anciennes ===
|
||||
echo Nettoyage des anciennes sauvegardes Cuisine...
|
||||
for /f "skip=%KEEP_BACKUPS% delims=" %%F in ('dir /b /a-d /o-d "%BACKUP_DIR%\Ratio_Cuisine_Vers*.xlsm" 2^>nul') do (
|
||||
echo Suppression ancienne sauvegarde : %%F
|
||||
del /q "%BACKUP_DIR%\%%F"
|
||||
)
|
||||
)
|
||||
|
||||
echo Terminé.
|
||||
exit /b 0
|
||||
|
||||
@@ -1,80 +1,76 @@
|
||||
@echo off
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
|
||||
REM --- Se place dans le dossier du .bat ---
|
||||
cd /d "%~dp0"
|
||||
|
||||
echo --- Mise en prod Ratio_Restauration ---
|
||||
|
||||
REM Chemin du fichier de version pour la RESTAURATION
|
||||
set "VERSION_FILE=..\Excel\prod\Ratio_Restauration_VERSION.txt"
|
||||
set "ROOT=%~dp0.."
|
||||
|
||||
set "VERSION_FILE=%ROOT%\Excel\dev\Ratio_Restauration_VERSION.txt"
|
||||
set "SRC=%ROOT%\Excel\dev\Ratio_Restauration_dev.xlsm"
|
||||
set "DST_DIR=%ROOT%\Excel\prod"
|
||||
set "DST=%DST_DIR%\Ratio_Restauration.xlsm"
|
||||
set "BACKUP_DIR=%ROOT%\Excel\backup"
|
||||
set KEEP_BACKUPS=10
|
||||
|
||||
REM On lit l'ANCIENNE version pour la sauvegarde
|
||||
set "OLD_VERSION="
|
||||
if exist "%VERSION_FILE%" (
|
||||
set /p OLD_VERSION=<"%VERSION_FILE%"
|
||||
)
|
||||
|
||||
REM Nombre de sauvegardes Cuisine à conserver
|
||||
set KEEP_BACKUPS=10
|
||||
|
||||
echo Mise à jour de version...
|
||||
python "maj_version.py" "%VERSION_FILE%"
|
||||
if errorlevel 1 (
|
||||
echo ERREUR lors de la mise à jour de version.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM === 2) CHEMINS DES FICHIERS EXCEL ===
|
||||
set SRC=..\Excel\dev\Ratio_Restauration_dev.xlsm
|
||||
set DST_DIR=..\Excel\prod
|
||||
|
||||
REM Dossier commun de sauvegardes (Cuisine + Restauration)
|
||||
set BACKUP_DIR=..\Excel\backup
|
||||
|
||||
if not exist "%BACKUP_DIR%" (
|
||||
mkdir "%BACKUP_DIR%"
|
||||
)
|
||||
|
||||
REM Vérifications
|
||||
if not exist "%SRC%" (
|
||||
echo ERREUR : fichier source introuvable :
|
||||
echo %SRC%
|
||||
endlocal
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%DST_DIR%" (
|
||||
echo ERREUR : dossier de destination introuvable :
|
||||
echo %DST_DIR%
|
||||
endlocal
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
REM === NOM DU FICHIER DE SAUVEGARDE AVEC ANCIENNE VERSION ===
|
||||
if "%OLD_VERSION%"=="" (
|
||||
REM Sécurité si la lecture a échoué
|
||||
set "BACKUP=%BACKUP_DIR%\Ratio_Restauration_sansVersion.xlsm"
|
||||
) else (
|
||||
set "BACKUP=%BACKUP_DIR%\Ratio_Restauration_Vers%OLD_VERSION%.xlsm"
|
||||
if not exist "%BACKUP_DIR%" (
|
||||
mkdir "%BACKUP_DIR%"
|
||||
)
|
||||
|
||||
if exist "%DST%" (
|
||||
if "%OLD_VERSION%"=="" (
|
||||
set "BACKUP=%BACKUP_DIR%\Ratio_Restauration_sansVersion.xlsm"
|
||||
) else (
|
||||
set "BACKUP=%BACKUP_DIR%\Ratio_Restauration_Vers%OLD_VERSION%.xlsm"
|
||||
)
|
||||
|
||||
echo Sauvegarde de l'ancienne production...
|
||||
if exist "%DST_DIR%\~$Ratio_Restauration.xlsm" (
|
||||
echo ERREUR : Ratio_Restauration.xlsm est ouvert dans Excel.
|
||||
exit /b 1
|
||||
)
|
||||
copy /Y "%DST%" "%BACKUP%"
|
||||
)
|
||||
|
||||
REM === 4) COPIE VERS PROD ===
|
||||
echo Copie vers la version de production...
|
||||
copy /Y "%SRC%" "%DST_DIR%\Ratio_Restauration.xlsm"
|
||||
copy /Y "%SRC%" "%DST%"
|
||||
|
||||
REM === 5) SAUVEGARDE DATÉE ===
|
||||
echo Création de la sauvegarde datée...
|
||||
copy /Y "%SRC%" "%BACKUP%"
|
||||
if errorlevel 1 (
|
||||
echo ERREUR lors de la copie vers production.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo --- Mise en prod terminee ---
|
||||
endlocal
|
||||
exit /b 0
|
||||
echo Mise à jour de version...
|
||||
python "%~dp0maj_version.py" "%VERSION_FILE%" "%DST%"
|
||||
|
||||
REM === 6) NETTOYAGE : on ne garde que les %KEEP_BACKUPS% dernières sauvegardes Restauration ===
|
||||
REM Tri par date décroissante (les plus récentes d'abord). On supprime au-delà de KEEP_BACKUPS.
|
||||
for /f "skip=%KEEP_BACKUPS% delims=" %%F in ('dir /b /a-d /o-d "%BACKUP_DIR%\Ratio_restauration_Vers*.xlsm" 2^>nul') do (
|
||||
if errorlevel 1 (
|
||||
echo ERREUR lors de la mise à jour de version.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Nettoyage des anciennes sauvegardes Restauration...
|
||||
for /f "skip=%KEEP_BACKUPS% delims=" %%F in ('dir /b /a-d /o-d "%BACKUP_DIR%\Ratio_Restauration_Vers*.xlsm" 2^>nul') do (
|
||||
echo Suppression ancienne sauvegarde : %%F
|
||||
del /q "%BACKUP_DIR%\%%F"
|
||||
)
|
||||
)
|
||||
|
||||
echo --- Mise en prod terminee ---
|
||||
exit /b 0
|
||||
@@ -1,51 +1,135 @@
|
||||
import sys
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
from datetime import date
|
||||
|
||||
# =========================================================
|
||||
# CONFIG
|
||||
# =========================================================
|
||||
|
||||
VBS_SCRIPT = Path(__file__).parent / "set_cell_silent.vbs"
|
||||
|
||||
# =========================================================
|
||||
# PREFIXE VERSION
|
||||
# =========================================================
|
||||
|
||||
def detecter_major(path: Path) -> int:
|
||||
|
||||
nom = path.name.lower()
|
||||
|
||||
if "restauration" in nom:
|
||||
return 2
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
# =========================================================
|
||||
# LECTURE VERSION
|
||||
# =========================================================
|
||||
|
||||
def lire_version(path: Path, major: int):
|
||||
|
||||
def lire_version(path: Path):
|
||||
if not path.exists():
|
||||
return [1, 0, 0]
|
||||
return [major, 0, 0]
|
||||
|
||||
contenu = path.read_text(encoding="utf-8").strip().splitlines()
|
||||
|
||||
if not contenu:
|
||||
return [1, 0, 0]
|
||||
return [major, 0, 0]
|
||||
|
||||
version_str = contenu[0].strip()
|
||||
try:
|
||||
parts = [int(x) for x in version_str.split(".")]
|
||||
while len(parts) < 3:
|
||||
parts.append(0)
|
||||
return parts[:3]
|
||||
except ValueError:
|
||||
return [1, 0, 0]
|
||||
version = [int(x) for x in contenu[0].split(".")]
|
||||
|
||||
while len(version) < 3:
|
||||
version.append(0)
|
||||
|
||||
version = version[:3]
|
||||
|
||||
# force le major correct
|
||||
version[0] = major
|
||||
|
||||
return version
|
||||
|
||||
except Exception:
|
||||
return [major, 0, 0]
|
||||
|
||||
|
||||
def ecrire_version(path: Path, version):
|
||||
version_str = ".".join(str(x) for x in version)
|
||||
today = date.today().isoformat()
|
||||
texte = f"{version_str}\n{today}\n"
|
||||
path.write_text(texte, encoding="utf-8")
|
||||
return version_str
|
||||
|
||||
# =========================================================
|
||||
# INCREMENT
|
||||
# =========================================================
|
||||
|
||||
def increment_patch(version):
|
||||
version[2] += 1
|
||||
return version
|
||||
|
||||
|
||||
# =========================================================
|
||||
# ECRITURE TXT
|
||||
# =========================================================
|
||||
|
||||
def ecrire_version_txt(path: Path, version):
|
||||
|
||||
version_str = ".".join(str(x) for x in version)
|
||||
|
||||
contenu = f"{version_str}\n{date.today().isoformat()}\n"
|
||||
|
||||
path.write_text(contenu, encoding="utf-8")
|
||||
|
||||
return version_str
|
||||
|
||||
|
||||
# =========================================================
|
||||
# ECRITURE EXCEL
|
||||
# =========================================================
|
||||
|
||||
def ecrire_version_excel(classeur: Path, version_str: str):
|
||||
|
||||
if not classeur.exists():
|
||||
print(f"Classeur introuvable : {classeur}")
|
||||
return
|
||||
|
||||
valeur = f"Version : {version_str}"
|
||||
|
||||
cmd = [
|
||||
"cscript",
|
||||
"//nologo",
|
||||
str(VBS_SCRIPT),
|
||||
str(classeur),
|
||||
"Tableau de bord",
|
||||
"C1",
|
||||
valeur
|
||||
]
|
||||
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
|
||||
# =========================================================
|
||||
# MAIN
|
||||
# =========================================================
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage : python maj_version.py chemin_du_VERSION.txt")
|
||||
|
||||
if len(sys.argv) < 3:
|
||||
print("Usage :")
|
||||
print("python maj_version.py VERSION.txt classeur.xlsm")
|
||||
sys.exit(1)
|
||||
|
||||
version_file = Path(sys.argv[1])
|
||||
version = lire_version(version_file)
|
||||
classeur = Path(sys.argv[2])
|
||||
|
||||
major = detecter_major(version_file)
|
||||
|
||||
version = lire_version(version_file, major)
|
||||
|
||||
version = increment_patch(version)
|
||||
new_version_str = ecrire_version(version_file, version)
|
||||
print(f"Nouvelle version : {new_version_str}")
|
||||
|
||||
version_str = ecrire_version_txt(version_file, version)
|
||||
|
||||
ecrire_version_excel(classeur, version_str)
|
||||
|
||||
print(f"Nouvelle version : {version_str}")
|
||||
print(f"Classeur mis à jour : {classeur.name}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
main()
|
||||
@@ -1,68 +1,71 @@
|
||||
' set_cell_silent.vbs
|
||||
' Usage: cscript //nologo set_cell_silent.vbs "C:\chemin\fichier.xlsm" "NomFeuille" "A1" "Valeur"
|
||||
|
||||
Option Explicit
|
||||
Dim f, sheetName, addr, val
|
||||
Dim xl, wb, ws
|
||||
|
||||
Dim xl, wb
|
||||
Dim filePath, sheetName, cellAddress, cellValue
|
||||
|
||||
If WScript.Arguments.Count < 4 Then
|
||||
WScript.Echo "[ERR] Args: set_cell_silent.vbs <fichier.xlsm> <feuille> <cellule> <valeur>"
|
||||
WScript.Quit 1
|
||||
WScript.Echo "[ERR] Usage : set_cell_silent.vbs fichier.xlsm feuille cellule valeur"
|
||||
WScript.Quit 1
|
||||
End If
|
||||
|
||||
f = WScript.Arguments(0)
|
||||
filePath = WScript.Arguments(0)
|
||||
sheetName = WScript.Arguments(1)
|
||||
addr = WScript.Arguments(2)
|
||||
val = WScript.Arguments(3)
|
||||
cellAddress = WScript.Arguments(2)
|
||||
cellValue = WScript.Arguments(3)
|
||||
|
||||
On Error Resume Next
|
||||
|
||||
Set xl = CreateObject("Excel.Application")
|
||||
If Err.Number <> 0 Then
|
||||
WScript.Echo "[ERR] Excel non disponible (" & Err.Description & ")"
|
||||
WScript.Quit 1
|
||||
WScript.Echo "[ERR] Creation Excel : " & Err.Description
|
||||
WScript.Quit 1
|
||||
End If
|
||||
On Error GoTo 0
|
||||
|
||||
xl.Visible = False
|
||||
xl.DisplayAlerts = False
|
||||
|
||||
' Désactiver macros et événements AVANT d’ouvrir
|
||||
On Error Resume Next
|
||||
xl.AutomationSecurity = 3 ' msoAutomationSecurityForceDisable
|
||||
xl.EnableEvents = False
|
||||
xl.ScreenUpdating = False
|
||||
On Error GoTo 0
|
||||
xl.AskToUpdateLinks = False
|
||||
xl.AutomationSecurity = 3
|
||||
|
||||
Err.Clear
|
||||
Set wb = xl.Workbooks.Open(filePath, 0, False)
|
||||
|
||||
On Error Resume Next
|
||||
Set wb = xl.Workbooks.Open(f, False, False)
|
||||
If Err.Number <> 0 Then
|
||||
xl.Quit
|
||||
WScript.Echo "[ERR] Ouverture classeur: " & Err.Description
|
||||
WScript.Quit 1
|
||||
WScript.Echo "[ERR] Ouverture classeur: " & Err.Description
|
||||
xl.Quit
|
||||
Set xl = Nothing
|
||||
WScript.Quit 1
|
||||
End If
|
||||
On Error GoTo 0
|
||||
|
||||
On Error Resume Next
|
||||
Set ws = wb.Worksheets.Item(sheetName)
|
||||
Err.Clear
|
||||
wb.Worksheets(sheetName).Range(cellAddress).Value = cellValue
|
||||
|
||||
If Err.Number <> 0 Then
|
||||
wb.Close False
|
||||
xl.Quit
|
||||
WScript.Echo "[ERR] Feuille introuvable: " & sheetName
|
||||
WScript.Quit 1
|
||||
WScript.Echo "[ERR] Ecriture cellule: " & Err.Description
|
||||
wb.Close False
|
||||
xl.Quit
|
||||
Set wb = Nothing
|
||||
Set xl = Nothing
|
||||
WScript.Quit 1
|
||||
End If
|
||||
On Error GoTo 0
|
||||
|
||||
On Error Resume Next
|
||||
ws.Range(addr).Value2 = val
|
||||
If Err.Number <> 0 Then
|
||||
wb.Close False
|
||||
xl.Quit
|
||||
WScript.Echo "[ERR] Ecriture cellule " & addr & " : " & Err.Description
|
||||
WScript.Quit 1
|
||||
End If
|
||||
On Error GoTo 0
|
||||
|
||||
Err.Clear
|
||||
wb.Save
|
||||
|
||||
If Err.Number <> 0 Then
|
||||
WScript.Echo "[ERR] Sauvegarde: " & Err.Description
|
||||
wb.Close False
|
||||
xl.Quit
|
||||
Set wb = Nothing
|
||||
Set xl = Nothing
|
||||
WScript.Quit 1
|
||||
End If
|
||||
|
||||
Err.Clear
|
||||
wb.Close False
|
||||
Set wb = Nothing
|
||||
|
||||
xl.Quit
|
||||
WScript.Quit 0
|
||||
Set xl = Nothing
|
||||
|
||||
WScript.Quit 0
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user