diff --git a/Excel/backup/Ratio_Cuisine_Vers4.2.100.xlsm b/Excel/backup/Ratio_Cuisine_Vers4.2.100.xlsm deleted file mode 100644 index 2c1f3f4..0000000 Binary files a/Excel/backup/Ratio_Cuisine_Vers4.2.100.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Cuisine_Vers4.2.109.xlsm b/Excel/backup/Ratio_Cuisine_Vers4.2.109.xlsm new file mode 100644 index 0000000..4c80902 Binary files /dev/null and b/Excel/backup/Ratio_Cuisine_Vers4.2.109.xlsm differ diff --git a/Excel/backup/Ratio_Cuisine_Vers4.2.110.xlsm b/Excel/backup/Ratio_Cuisine_Vers4.2.110.xlsm new file mode 100644 index 0000000..3b7da19 Binary files /dev/null and b/Excel/backup/Ratio_Cuisine_Vers4.2.110.xlsm differ diff --git a/Excel/backup/Ratio_Cuisine_Vers4.2.92_Arret_ver_Saclay.xlsm b/Excel/backup/Ratio_Cuisine_Vers4.2.92_Arret_ver_Saclay.xlsm deleted file mode 100644 index d251b30..0000000 Binary files a/Excel/backup/Ratio_Cuisine_Vers4.2.92_Arret_ver_Saclay.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Cuisine_Vers4.2.95.xlsm b/Excel/backup/Ratio_Cuisine_Vers4.2.95.xlsm deleted file mode 100644 index faf4ef0..0000000 Binary files a/Excel/backup/Ratio_Cuisine_Vers4.2.95.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Cuisine_Vers4.2.96.xlsm b/Excel/backup/Ratio_Cuisine_Vers4.2.96.xlsm deleted file mode 100644 index 5bc0aa4..0000000 Binary files a/Excel/backup/Ratio_Cuisine_Vers4.2.96.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Cuisine_Vers4.2.97.xlsm b/Excel/backup/Ratio_Cuisine_Vers4.2.97.xlsm deleted file mode 100644 index c8f50e2..0000000 Binary files a/Excel/backup/Ratio_Cuisine_Vers4.2.97.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Cuisine_Vers4.2.98.xlsm b/Excel/backup/Ratio_Cuisine_Vers4.2.98.xlsm deleted file mode 100644 index 6b6ada0..0000000 Binary files a/Excel/backup/Ratio_Cuisine_Vers4.2.98.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Cuisine_Vers4.2.99.xlsm b/Excel/backup/Ratio_Cuisine_Vers4.2.99.xlsm deleted file mode 100644 index aabf732..0000000 Binary files a/Excel/backup/Ratio_Cuisine_Vers4.2.99.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.19.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.19.xlsm deleted file mode 100644 index 670c39c..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.19.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.20.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.20.xlsm deleted file mode 100644 index 3e72ca6..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.20.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.21.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.21.xlsm deleted file mode 100644 index da3eb66..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.21.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.22.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.22.xlsm deleted file mode 100644 index fe8fb91..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.22.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.23.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.23.xlsm deleted file mode 100644 index c1a15a3..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.23.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.24.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.24.xlsm deleted file mode 100644 index 5d443dd..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.24.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.25.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.25.xlsm deleted file mode 100644 index ac56f97..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.25.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.26.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.26.xlsm deleted file mode 100644 index 0c66541..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.26.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.27.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.27.xlsm deleted file mode 100644 index a25cc21..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.27.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.28.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.28.xlsm deleted file mode 100644 index 4f186b7..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.28.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.29.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.29.xlsm deleted file mode 100644 index f7a2a42..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.29.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.30.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.30.xlsm deleted file mode 100644 index 19306b4..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.30.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.31.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.31.xlsm deleted file mode 100644 index 7b2cbfe..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.31.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.32.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.32.xlsm deleted file mode 100644 index 8bef0f5..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.32.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.33.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.33.xlsm deleted file mode 100644 index cf4ad3f..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.33.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.34.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.34.xlsm deleted file mode 100644 index 47797ff..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.34.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.35.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.35.xlsm deleted file mode 100644 index 1af46e7..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.35.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.36.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.36.xlsm deleted file mode 100644 index dd1f02e..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.36.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.37.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.37.xlsm deleted file mode 100644 index 83a6435..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.37.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.38.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.38.xlsm deleted file mode 100644 index 0f6966a..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.38.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.39.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.39.xlsm deleted file mode 100644 index 0f6966a..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.39.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.40.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.40.xlsm deleted file mode 100644 index 0f6966a..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.40.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.41.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.41.xlsm deleted file mode 100644 index 0f6966a..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.41.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.42.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.42.xlsm deleted file mode 100644 index ab2e27f..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.42.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.43.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.43.xlsm deleted file mode 100644 index 3067ced..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.43.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.44.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.44.xlsm deleted file mode 100644 index 3de468d..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.44.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.45.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.45.xlsm deleted file mode 100644 index ca4fa5f..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.45.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.46.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.46.xlsm deleted file mode 100644 index c1ddbef..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.46.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.47.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.47.xlsm deleted file mode 100644 index a29c519..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.47.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.48.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.48.xlsm deleted file mode 100644 index 95eaca9..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.48.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.49.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.49.xlsm deleted file mode 100644 index c8055c0..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.49.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.50.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.50.xlsm deleted file mode 100644 index 81cfe52..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.50.xlsm and /dev/null differ diff --git a/Excel/backup/Ratio_Restauration_Vers2.1.51.xlsm b/Excel/backup/Ratio_Restauration_Vers2.1.51.xlsm deleted file mode 100644 index e6f72a2..0000000 Binary files a/Excel/backup/Ratio_Restauration_Vers2.1.51.xlsm and /dev/null differ diff --git a/Excel/prod/Démo_Ratio_Cuisine.xlsm b/Excel/prod/Démo_Ratio_Cuisine.xlsm new file mode 100644 index 0000000..dae9289 Binary files /dev/null and b/Excel/prod/Démo_Ratio_Cuisine.xlsm differ diff --git a/Excel/prod/Ratio_Cuisine.xlsm b/Excel/prod/Ratio_Cuisine.xlsm index c2f1b22..cedac64 100644 Binary files a/Excel/prod/Ratio_Cuisine.xlsm and b/Excel/prod/Ratio_Cuisine.xlsm differ diff --git a/Excel/prod/Ratio_Cuisine_VERSION.txt b/Excel/prod/Ratio_Cuisine_VERSION.txt deleted file mode 100644 index 1a10657..0000000 --- a/Excel/prod/Ratio_Cuisine_VERSION.txt +++ /dev/null @@ -1,2 +0,0 @@ -4.2.109 -2026-05-08 diff --git a/Excel/prod/Ratio_Restauration.xlsm b/Excel/prod/Ratio_Restauration.xlsm index c7e4255..c863657 100644 Binary files a/Excel/prod/Ratio_Restauration.xlsm and b/Excel/prod/Ratio_Restauration.xlsm differ diff --git a/Excel/prod/Ratio_Restauration_VERSION.txt b/Excel/prod/Ratio_Restauration_VERSION.txt deleted file mode 100644 index 3fa65b0..0000000 --- a/Excel/prod/Ratio_Restauration_VERSION.txt +++ /dev/null @@ -1,2 +0,0 @@ -2.1.62 -2026-05-04 diff --git a/README.md b/README.md index ec66e1f..d7439c4 100644 --- a/README.md +++ b/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. --- diff --git a/README_old.md b/README_old.md new file mode 100644 index 0000000..ec66e1f --- /dev/null +++ b/README_old.md @@ -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 diff --git a/Scripts/Maj_prod_Cuisine.bat b/Scripts/Maj_prod_Cuisine.bat index 3feb00f..cee9545 100644 --- a/Scripts/Maj_prod_Cuisine.bat +++ b/Scripts/Maj_prod_Cuisine.bat @@ -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" -) \ No newline at end of file +) + +echo Terminé. +exit /b 0 diff --git a/Scripts/Maj_prod_Restauration.bat b/Scripts/Maj_prod_Restauration.bat index 56e5014..5af2955 100644 --- a/Scripts/Maj_prod_Restauration.bat +++ b/Scripts/Maj_prod_Restauration.bat @@ -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" -) \ No newline at end of file +) + +echo --- Mise en prod terminee --- +exit /b 0 \ No newline at end of file diff --git a/Scripts/maj_version.py b/Scripts/maj_version.py index 8533e0e..7c33ec1 100644 --- a/Scripts/maj_version.py +++ b/Scripts/maj_version.py @@ -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() \ No newline at end of file diff --git a/Scripts/set_cell_silent.vbs b/Scripts/set_cell_silent.vbs index 7115025..29a2628 100644 --- a/Scripts/set_cell_silent.vbs +++ b/Scripts/set_cell_silent.vbs @@ -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 " - 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 \ No newline at end of file diff --git a/Softs/mysql-connector-net-9.6.0.msi b/Softs/mysql-connector-net-9.6.0.msi deleted file mode 100644 index ab6033c..0000000 Binary files a/Softs/mysql-connector-net-9.6.0.msi and /dev/null differ diff --git a/Softs/mysql-connector-odbc-8.4.0-winx64.msi b/Softs/mysql-connector-odbc-8.4.0-winx64.msi deleted file mode 100644 index 0c01368..0000000 Binary files a/Softs/mysql-connector-odbc-8.4.0-winx64.msi and /dev/null differ diff --git a/Softs/mysql-connector-odbc-9.3.0-winx64.msi b/Softs/mysql-connector-odbc-9.3.0-winx64.msi deleted file mode 100644 index e3eaa77..0000000 Binary files a/Softs/mysql-connector-odbc-9.3.0-winx64.msi and /dev/null differ diff --git a/Softs/rustdesk-1.4.4-x86_64.exe b/Softs/rustdesk-1.4.6-x86_64.exe similarity index 71% rename from Softs/rustdesk-1.4.4-x86_64.exe rename to Softs/rustdesk-1.4.6-x86_64.exe index 44ac3e3..166511c 100644 Binary files a/Softs/rustdesk-1.4.4-x86_64.exe and b/Softs/rustdesk-1.4.6-x86_64.exe differ