Compare commits

..

167 Commits

Author SHA1 Message Date
08ce6f9151 Mise à jour des tableurs Ratio 2026-05-31 09:28:11 +02:00
e50ea5c22c reorganisation ouvrture 2026-05-26 12:41:59 +02:00
a037ac5ea7 refonte générale des requêtes 2026-05-14 15:52:14 +02:00
9e06f7257b Modification des requêtes 2026-05-13 17:36:40 +02:00
c2b75076d0 Modification du versionnage auto 2026-05-10 16:12:23 +02:00
703d2ecda3 Réglages feuille Catalogue 2026-05-08 17:40:18 +02:00
fc0e813b2b Réglages power query pour tout le classeur 2026-05-07 19:30:32 +02:00
e1623d8007 Consolidation des calculs de ratio 2026-05-04 11:17:27 +02:00
2930fd4e50 Maj centrale 2 2026-05-03 15:40:49 +02:00
f26b3d6816 Maj centrale 2026-05-03 10:00:55 +02:00
659c93f3a5 Correction bug UF Articles 2026-05-02 15:01:05 +02:00
422799ece0 maj 2026-04-27 18:33:58 +02:00
5f398fd1f2 Ajout de l'utilisateur dans les inventaires 2026-04-24 08:53:42 +02:00
aadbb77cbc Refonte feuille catalogue 2026-04-23 18:11:18 +02:00
090aa78a59 refonte page Catalogue 2026-04-23 11:49:52 +02:00
b5ab432fa9 Ajout du numéro de facture 2026-04-02 09:26:34 +02:00
c04c7e848b Mise en place maj auto 2026-03-31 17:13:19 +02:00
9f3928e584 Mise en place maj auto 2026-03-21 15:00:07 +01:00
61178ceb9f Maj tempo 2026-03-18 13:46:46 +01:00
c510e166d0 Recalcul des ratios 2026-03-06 09:56:07 +01:00
4cf67865b8 Sécurité de la feuille Catalogue 2026-02-19 16:43:31 +01:00
539d1bdce2 Refonte des fichiers Factures et macros 2026-02-05 12:07:49 +01:00
505b89f696 Chois articles hors ou in Stock 2026-02-04 16:14:15 +01:00
4e97d0cb02 Unification connexions requêtes2 2026-02-03 10:10:12 +01:00
b89280d856 Unification connexions requêtes 2026-02-02 13:36:24 +01:00
792b301314 MEF des graphiques 2026-02-02 09:31:18 +01:00
3c6cc9041e Barre d'alerte Ca 2026-01-31 09:19:20 +01:00
0214e41ee2 RAZ app 2 2026-01-30 18:45:35 +01:00
bb3729f4ed RAZ app 2026-01-30 18:32:28 +01:00
b14265418f Accès à la requète 2026-01-30 11:46:42 +01:00
1119986fc7 Cosmétique TDB 2026-01-25 10:41:03 +01:00
4fc444d380 Rafraichissement des tables données 4 2026-01-23 17:11:58 +01:00
096c44ba79 Rafraichissement des tables données 3 2026-01-23 10:32:21 +01:00
61de6db5b5 Rafraichissement des tables données 2 2026-01-22 11:08:35 +01:00
ebf6dc59b0 Rafraichissement des tables données 2026-01-21 11:43:35 +01:00
720894eb2c Ajout d'une version Old pour Cuisine 2026-01-21 05:56:54 +01:00
3cf4ddd12d Remise en état de l'app 2026-01-17 09:22:31 +01:00
27ea802619 Modif tables factures Ca et Frais 2026-01-12 20:22:18 +01:00
8fc8199a6d Remise en état numérotation 2026-01-03 14:57:02 +01:00
0b61a1df8f Remise en état partie Cuisine & salle 2026-01-02 10:37:26 +01:00
8c92460cc2 Remise en état partie Cuisine 2026-01-02 02:27:10 +01:00
4b2f046a0d Rapidité des macros sur Mysql 2025-12-22 11:35:01 +01:00
e97f518d68 Traitement des 100% perso 2025-12-17 23:43:37 +01:00
0f9f011d99 Maj insertion Designation 2025-12-17 13:34:52 +01:00
b635fe1626 Rappel CA non saisis 2025-12-13 13:14:21 +01:00
2c54583a0b Création DemoCuisine 2025-12-09 13:31:21 +01:00
e38aa7595a Raz app 2025-12-08 13:25:09 +01:00
f7bf4f29eb Calcul des Autres Frais 2025-12-08 09:19:52 +01:00
85321437ed Mise en ordre UF Frais 2025-12-07 17:21:42 +01:00
4992c73359 Mise en ordre des frais sur cuisine et salle 2025-12-05 11:13:51 +01:00
86c9683f0d Création des édits et selection 2025-12-04 14:23:00 +01:00
1cb7e7dd66 Création des édits 2025-12-03 10:39:28 +01:00
05db391f1b Refonte de la parte retro 2025-12-01 16:13:44 +01:00
f2ca1ffe77 Création page Edits 2025-11-30 10:33:08 +01:00
155f882f34 Petits bugs 2025-11-30 08:55:49 +01:00
44cda34d49 Oter bt dangereux 2025-11-28 13:24:25 +01:00
222dd979a5 Surlignage feuille Catalogue 2025-11-28 08:42:38 +01:00
f609c09ca9 Epure classeur 2025-11-28 08:10:43 +01:00
bc11cd004b Créeation et gestion Rétrocessions 2025-11-26 16:14:21 +01:00
2939bd41ac Reconstruction de la sauvegarde et du versionnage 2025-11-26 11:00:34 +01:00
3d3c43f684 Construction UF Frais et sécurité 2025-11-25 08:52:55 +01:00
0f246e9acc Construction UF Frais 2025-11-25 08:49:00 +01:00
37393c602d Réparation des tables 2025-11-21 12:01:42 +01:00
c1f25eb61d Mise en production : mise à jour des classeurs Cuisine/Restauration, scripts de mise à jour, versioning 2025-11-17 15:55:30 +01:00
37465a9ece Numérotation auto des versions 2025-11-15 16:33:00 +01:00
1d769e2f2e Modif gitignore 2025-11-15 11:47:13 +01:00
137b5ccc71 Supprimer Excel/prod/InventairesCache/qte_cache.csv 2025-11-15 10:44:12 +00:00
9f453b95c3 Supprimer Excel/prod/InventairesCache/qte_cache_Ratio_prod.csv 2025-11-15 10:44:02 +00:00
322f32d499 Supprimer Excel/prod/Desktop/carte été transition.xlsx 2025-11-15 10:43:45 +00:00
09bc28bec9 Supprimer Excel/prod/Desktop/ALLERGENES HW - fevrier 2025.xlsx 2025-11-15 10:43:37 +00:00
e14309725f Séparation restauration de Cuisine 2025-11-15 11:37:00 +01:00
6db1a8de28 Bugs mineur sur articles 2025-11-13 20:30:24 +01:00
81818eb39b Nouvel interface 2025-11-12 15:17:34 +01:00
977be7dd80 Refonte complète du classeur 2025-11-11 10:31:36 +01:00
4d6a1e3cf4 Oter fichiers outils 2025-11-09 09:16:33 +01:00
b638d333b5 Ajout notification par mail à la création d'user 2025-11-09 00:48:01 +01:00
498d04b1d1 Cosmétique app users 2025-11-08 17:14:32 +01:00
bd27b02a11 Refonte fichier users 2025-11-08 08:36:41 +01:00
18c08d5c84 optimisation userform Factures 2025-11-06 01:20:03 +01:00
9f60606f5c encart renseignements sur userform Articles 2025-11-05 15:39:58 +01:00
6c15f7efe6 remise en place connexion externe pour users 2025-11-04 06:22:43 +01:00
5b9c48ad20 Page3 dans Factures 2025-10-31 10:47:40 +01:00
ebb844fc13 Merge branch 'master' of https://mj91.fr:448/Michel/Inventaire-gestion 2025-10-30 10:40:52 +01:00
61dc6c5e34 Filtrage des fournisseurs Actifs 2025-10-30 10:38:31 +01:00
Debian
9c7a5542b7 Add bcrypt (and deps) to requirements 2025-10-26 12:23:46 +01:00
Debian
8f13ae67ae Ajout du requirements.txt 2025-10-26 11:54:27 +01:00
5f9c8c7472 Gestion des dossiers sur VPS 2025-10-26 11:28:15 +01:00
9cf31189a9 Gestion des séprateurs numériques 2025-10-23 19:03:40 +02:00
f62eb7e820 arrangement esthétiques userforms 2025-10-20 20:08:01 +02:00
e017818113 Mise au point de l'attribution des avoirs 2025-10-20 17:16:42 +02:00
46e965b0e0 Reprise de l'userform Frais 2 2025-10-16 11:41:11 +02:00
63cc4c69f0 Reprise de l'userform Frais 2025-10-16 10:41:27 +02:00
c64e887401 Prise en compte RFA & Avoirs 2025-10-16 08:23:13 +02:00
c6ff9c4399 Sauvegarde aut des qté inventaire 2025-10-03 16:00:38 +02:00
9e1b75cf2f Sécurité des primes pages 2025-10-03 14:25:21 +02:00
744ff47ccd Remise en état des userforms inventaire 2025-10-02 11:16:25 +02:00
2840fd5926 Recifs feuille inventaire 2025-09-30 15:34:55 +02:00
e124a1bac8 Améliorations userform Articles 2025-09-26 18:47:18 +02:00
93d47d26bb Prise en charge des pertes 2025-09-18 15:26:21 +02:00
49b85a51c6 190 - Suppression protection VBA 2025-09-11 10:09:46 +02:00
21560f9e7b 182 - Mise en place unicité atricles dans preinvent 2025-09-10 11:22:04 +02:00
a894044132 181 - Remise en état Factures et ca 2025-09-09 13:53:24 +02:00
b511d0d892 Remise en état Factures et ca 2025-09-09 09:50:30 +02:00
3793aa9236 Remise en état Factures 2025-09-09 09:35:40 +02:00
5199aef358 Remise en état 2025-09-08 17:54:55 +02:00
f7b4bccb06 Arrangement factures et ca 2025-09-08 16:22:34 +02:00
29d73a34f4 Création feuille Log_preinv 2025-09-08 15:44:27 +02:00
0a22741da3 MAJ de l'userform Articles 2025-09-08 12:06:20 +02:00
a6cd9fe26d MAJ du fichier readme 2025-09-08 10:12:03 +02:00
d1ec029be9 Reconfiguration fichier MAJ DEV sur Prod 2025-09-08 09:49:23 +02:00
6cfd3f748c Reconfiguration de maj_prod_ratio.bat 2025-09-07 16:41:21 +02:00
36365d4ecd Cosmétique 2025-09-07 08:55:16 +02:00
80f7d8862b Modification des Msbox avec acquitements 2025-09-06 09:53:25 +02:00
07364954d2 Remise en état userform Articles avec filtres 2025-09-05 19:37:31 +02:00
8c717b2865 Remise en état userform Articles 2025-09-05 13:59:44 +02:00
5f57282953 Suppression du dossier Excel/dev du dépôt 2025-09-03 12:59:46 +02:00
c4053eac27 Retirer le dossier Excel/dev du dépôt; ignorer le dev, garder seulement le pivot prod 2025-09-03 12:55:07 +02:00
7fcdee854d Mise à jour Ratio_prod.xlsm 2025-09-03 12:46:16 +02:00
e784c85e36 Amélioration app Gestion users 2025-08-21 09:31:40 +02:00
d3e192591e MAJ du 20/8 2025-08-20 14:04:29 +02:00
f95cf4edd2 raz du 19/8 2025-08-19 14:40:11 +02:00
8e94eda6bf Gestions des users 2025-08-19 12:14:35 +02:00
8550400255 Rétablissement dossier travail 2025-08-18 09:45:24 +02:00
726a35c1a6 Refonte authentification en crypté 2025-08-16 14:02:01 +02:00
15665f7c4c Ajout de la page perte 2025-08-14 16:49:15 +02:00
e2c12667fb rev 7.1 2025-07-20 16:06:23 +02:00
91bc5c73bb Version 7 ok 2025-07-20 09:40:48 +02:00
29d2276b52 Remise en état du classeur 2025-07-20 08:50:28 +02:00
31fbbaba2a Refonte pour tout user 2025-07-19 14:58:28 +02:00
28cc27b8c3 Refonte totale 2025-07-19 14:03:37 +02:00
b0c48d104f Site & user en dur 2025-07-18 07:58:36 +02:00
c7bc0d0443 suppression fichier caduc dans prod 2025-07-17 12:58:34 +02:00
42b33b30f5 Ouverture du classeur sur site correct 2025-07-17 12:56:14 +02:00
1ffc550abe Mise à jour .gitignore et nettoyage des fichiers untracked 2025-07-17 07:28:07 +02:00
4bd109c875 Supprime Ratio_prod_v2025_05_26.xlsm et met à jour .gitignore 2025-07-17 07:17:28 +02:00
ddce687c54 Mise à jour Ratio_prod.xlsm et README.md 2025-07-17 06:57:08 +02:00
f275d30e1e Arangements userform articles 2025-07-15 18:35:21 +02:00
eac0df0a8a Ajout de conditionnement & Nombre pour Articles 2025-07-12 21:04:37 +02:00
97b835a1d0 tri dans les userforms Vers.6.2.1 2025-07-12 07:59:36 +02:00
b91d467653 Filtre Matériel 2025-07-11 19:44:37 +02:00
3235af2544 Remise en état après crash Meudon 2025-07-11 05:57:13 +02:00
7ecaa3dbf5 Gestion des inventaires Matériel ou non 2025-07-08 08:24:02 +02:00
511ec2b742 Remise en état 2 2025-07-06 15:00:22 +02:00
fd0390c27e Remise en état 2025-07-06 09:40:37 +02:00
7e57ec0fec Sécurisation tableur et consolidation code numéro2 2025-06-28 17:38:38 +02:00
e7d48e52fa Sécurisation tableur et consolidation code 2025-06-19 11:10:44 +02:00
8adc2700cc Maj Factures 2025-06-18 22:04:35 +02:00
cbeaf47728 MAJ du 17/06/2025 2025-06-17 13:35:31 +02:00
58a95cf008 Version 6.1.3 2025-06-17 09:57:16 +02:00
4a18b4fae0 Maj du 16062025/2 2025-06-16 14:03:18 +02:00
6955c39c1a Maj du 16062025 2025-06-16 13:37:31 +02:00
c10ed52f90 Modifs esthétiques 2025-06-10 18:58:02 +02:00
3d3d43eed8 Sauveguarde inventaires 2025-06-03 12:59:24 +02:00
ac962fd421 Rectifications Ratio.xlsm 2025-05-30 18:50:25 +02:00
14b8a3d824 Tri alphabétique 2025-05-30 09:58:55 +02:00
7f78885abc correction fichier transfert 2025-05-29 08:11:00 +02:00
36d37af154 corrections du 29/5 2025-05-29 07:57:45 +02:00
5ed6600979 Maj 26052025 2025-05-26 08:55:59 +02:00
0d3dd87904 Révision complète de Ratio.xlsm 2025-05-21 21:14:58 +02:00
a6800bedbd Mise à jour excel 20/05 2025-05-20 16:37:42 +02:00
40cc39cdee Maj auto 20/05/2025 0743 2025-05-20 07:43:58 +02:00
dea68e1c47 Modifications du 19/5/25 2025-05-20 07:41:09 +02:00
2e187cfc49 Maj auto 18/05/2025 0907 2025-05-18 09:07:43 +02:00
7b211205f6 Ignorer les fichiers de Excel/dev, ne pas toucher à Excel/prod 2025-05-18 09:02:30 +02:00
c221fbdc9d Restauration du dossier Excel supprimé accidentellement 2025-05-18 08:56:41 +02:00
2f9de9c6e4 Maj auto 18/05/2025 0830 2025-05-18 08:30:52 +02:00
deed24193c Maj fichiers sauvegarde 2025-05-18 08:23:31 +02:00
43 changed files with 1294 additions and 225 deletions

4
.env
View File

@@ -1,4 +0,0 @@
DB_HOST=54.36.188.119
DB_USER=michel
DB_PASSWORD=#SO2&1nf%mZ@jfh
DB_NAME=Commun

55
.gitignore vendored
View File

@@ -1,8 +1,55 @@
.env
*.txt
# ----- Secrets / configs locales -----
# Ne versionne JAMAIS de .env (mets un .env.example à la place)
*.env
# ----- Python -----
.venv/
__pycache__/
*.pyc
*.pyo
*.pyd
*.log
# ----- PyInstaller (builds) -----
build/
dist/
*.spec
*.toc
*.pkg
*.pyz
*.zip
# ----- Excel -----
# Fichiers temporaires d'Excel (~$fichier.xlsm)
~$*.xls*
~$*.xlsm
# Dossiers générés par Excel — à ne jamais versionner
Excel/dev/Desktop/
Excel/prod/Desktop/
Excel/dev/InventairesCache/
Excel/prod/InventairesCache/
# Archives prod : on les ignore (elles sont recréées par le .bat)
Excel/prod/Ratio_Cuisine_20*.xlsm
Excel/prod/Ratio_Restauration_20*.xlsm
# On versionne uniquement les fichiers prod "pivots"
!Excel/prod/Ratio_Cuisine.xlsm
!Excel/prod/Ratio_Cuisine_VERSION.txt
!Excel/prod/Ratio_Restauration.xlsm
!Excel/prod/Ratio_Restauration_VERSION.txt
Excel/backup/
Softs/
Excel/Tableurs modèles/*NEW*.xlsx
# On ignore tout le dev (fichiers de travail)
Excel/dev/
# (Optionnel si tu veux garder le dossier vide dans Git)
# !Excel/dev/.gitkeep
# ----- Systèmes / IDE -----
.DS_Store
# Ignorer la version de production du fichier Excel
Excel/prod/ratio_prod.xlsm
Thumbs.db
.idea/
.vscode/

1
.idea/.name generated
View File

@@ -1 +0,0 @@
Inventaires-gestion

View File

@@ -2,9 +2,10 @@
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.idea/dataSources" />
<excludeFolder url="file://$MODULE_DIR$/.venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.13 (Ratio &amp; inventaires)" jdkType="Python SDK" />
<orderEntry type="jdk" jdkName="Python 3.11 virtualenv at C:\Users\miche\PycharmProjects\Gestion_sondes\.venv" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

12
.idea/dataSources.xml generated Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="domo91" uuid="d8bef1d2-2e67-4363-960b-e8d2ef8041bd">
<driver-ref>mariadb</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mariadb://162.19.78.131:3306/Acces</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

14
.idea/deployment.xml generated Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
<serverData>
<paths name="Vps_Gestion_sondes">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
</serverData>
</component>
</project>

View File

@@ -3,6 +3,11 @@
<words>
<w>acces</w>
<w>curdate</w>
<w>delims</w>
<w>endlocal</w>
<w>popd</w>
<w>pushd</w>
<w>setlocal</w>
</words>
</dictionary>
</component>

1
.idea/misc.xml generated
View File

@@ -3,4 +3,5 @@
<component name="Black">
<option name="sdkName" value="Python 3.13 (Ratio &amp; inventaires)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11 virtualenv at C:\Users\miche\PycharmProjects\Gestion_sondes\.venv" project-jdk-type="Python SDK" />
</project>

2
.idea/modules.xml generated
View File

@@ -2,7 +2,7 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Inventaires-gestion.iml" filepath="$PROJECT_DIR$/.idea/Inventaires-gestion.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/Ratio_Inventaires.iml" filepath="$PROJECT_DIR$/.idea/Ratio_Inventaires.iml" />
</modules>
</component>
</project>

Binary file not shown.

0
Docs/Logo.bmp Normal file
View File

BIN
Docs/Logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

View File

@@ -0,0 +1,80 @@
%PDF-1.3
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 4 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
>>
endobj
4 0 obj
<<
/BaseFont /ZapfDingbats /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
5 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (anonymous) /CreationDate (D:20250516194039+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20250516194039+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (unspecified) /Title (untitled) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 1 /Kids [ 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1194
>>
stream
GauHJD/U=Q&H:NnnL,K^ZjMI4[$O8VKtsSINWQ[CeO<Z@EkG0,AD_.jDSs6(Z$?W`.>iH%JQT_JR<`E,RB[cSl0[+N:P"E(-^P=5*eG=jrD"HN"E*_OY4lVKY.sFq4fpdr'E'P4s58"Ec9@=D7;K&H*hC#di^sN:=Q!6D;W\k(=lkp3p4kmP[.Rain/0:;)oc#4ZB@f-H\:5t_:oD%K%@=@HHu\<rrg-BfNWg_Ku5&*>`;"n^"K#qYVp5[/aN&pQHPK"puM!fm;6Peb;(U&K!?$*IH2S4T_JUH?mU'&UKH$\d*44r[7hcqlT?M_BLK$gg:3CF:'tQI?Rf)4RJ[R5.T@Jh9T&>g@2k8s\@9?+-+cnTU)%So%FoCA,C7h3haHC7[GTU;oa&J\:Fa9tF<t^ZO0V/*)*574Pdaeu7&OIfh/51N?V\If0QIbMK.hlI"MQr+]s7#a2E;c\bF4M/L%?%5%DS@N>\g`nUd=3$W)IJtaOk=P2BCL4mD,'UrIsjf''5mJ@:#>bC8!Hs[Z%Ms"lO[2^r[=O/;P\uhbhmVEO6;r")I-Jog]sRr=2#kkd97-!j"^4"\kLUHCZGS>:#=(C1\+(.]k!pWBlDIgujoaQt:RsPk-:12$FU].2>QFd<re!QqH`Gj!Ch2MQ^`g;#QU=ld-b&otcM[`pOQ?e`VkDAGgZ8&nSSY>bM\.N$si^1I@"W^4r7MTU8iOb%ui,ksHZ$#9<[ISGS_&Oh&.S)FZ;/f<a`2YGT35hJ>7H#JkXCD=.RM9Uo%pLf6MF_A6-)14H.lCjF6$NQXF1'L[P;p41\FKA(B-n83CFM_%ZpgBC&=ek[;U%R^95OEb1QAYm3PWV<o53H"-$'C4+\-FqR^Wi4P8M1h*&Z>7DbRQ^QYGOi^h3d#j3[3uR($\'N;;h9O7jAi=X6)N8/7,*O[MkMR4@]BYdD:HTsR9W@JfAa%XE3'b=g()_ES5TN/M8H(AN3H=?f6!0S9A(_;-@TB,VBT&]F67[('J!_L8E1TuOeWVh8kBf#)L_4IcA;:j]VFcnN>Lo$2>XaU4?"f1_pp.ogGibIAJ2bZH(gPfT'"Y`!`3)2WS4-!Y33?h7q9tgrEqn"#nN5N\PA);)GGQQk^)3:C$=sp[HALfi649=NKAgW?k<mJn%!bS8b2>N,Nj;=G"_eoSK!nedS>)O,)'+u!Y&u7kP~>endstream
endobj
xref
0 10
0000000000 65535 f
0000000073 00000 n
0000000124 00000 n
0000000231 00000 n
0000000343 00000 n
0000000426 00000 n
0000000629 00000 n
0000000697 00000 n
0000000993 00000 n
0000001052 00000 n
trailer
<<
/ID
[<a59e15b0a2ccd350e715d29c66e41feb><a59e15b0a2ccd350e715d29c66e41feb>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 10
>>
startxref
2337
%%EOF

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
Images/Logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

BIN
Images/cuisine.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
Images/restauration.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

472
README.md
View File

@@ -1,111 +1,431 @@
# 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
- Affichage dans Streamlit (à venir)
# 🚀 Installation du pilote MySQL ODBC 9.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 9.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-9.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/
- `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 9.3.0
echo ===============================
SET MYPATH=C:\Installers
SET INSTALLER=%MYPATH%\mysql-connector-odbc-9.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_93.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 : 9.2), vous pouvez ajouter :
```bat
msiexec /x {GUID-DE-LA-VERSION-9.2} /qn
```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
```
*(à compléter avec l'identifiant de produit si nécessaire)*
---
## 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.
---
## 🧩 Conseils
### `Excel/prod`
- 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
Contient les fichiers livrables.
```text
Ratio_Cuisine.xlsm
Ratio_Restauration.xlsm
Démo_Ratio_Cuisine.xlsm
```
# 🔧 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**.
Les fichiers de production ne nécessitent plus de fichier `.txt` à côté. La version est directement écrite dans le classeur Excel.
---
## 🗃️ Organisation des fichiers
### `Excel/backup`
### Structure dans le projet (Git)
Contient les anciennes versions de production sauvegardées automatiquement avant remplacement.
/Excel/
├── dev/
│ └── Ratio_dev.xlsm ← Fichier de travail
├── prod/
│ └── Ratio_prod.xlsm ← Fichier de production (non suivi par Git)
Exemple :
yaml
Copier
Modifier
```text
Ratio_Cuisine_Vers1.0.15.xlsm
Ratio_Restauration_Vers2.1.3.xlsm
```
- `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).
Le nombre de sauvegardes conservées est limité dans les scripts `.bat`.
---
## 🖥️ Synchronisation automatique avec le NAS Synology
### `Scripts`
Le fichier `Ratio_prod.xlsm` est copié automatiquement sur le NAS Synology, dans un dossier partagé :
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
Maj_prod_Cuisine.bat CUISINE
```
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.
---
## Mise en production Restauration
Depuis le dossier `Scripts`, lancer :
```bat
Maj_prod_Restauration.bat RESTAURATION
```
Le script effectue :
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.
---
## Fichier de démonstration
Le fichier :
```text
Excel/prod/Démo_Ratio_Cuisine.xlsm
```
est destiné à présenter le fonctionnement sans installation réseau obligatoire.
Il peut contenir des données locales dans des feuilles de type :
```text
DATA_Articles
DATA_Fournisseurs
DATA_Factures
DATA_Ca
DATA_Inventaires
```
La version démo peut fonctionner sans connexion MySQL, sans ODBC et sans fichier `.txt` distribué.
Recommandations pour la version démo :
- données locales uniquement ;
- pas 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
git status
```
Ajouter les modifications :
```bash
git add README_old.md Scripts/ Excel/dev/
```
Créer un commit :
```bash
git commit -m "Normalise versioning and prod deployment scripts"
```
Envoyer vers Gitea :
```bash
git push
```
---
## Dépannage
### Erreur : fichier utilisé par un autre processus
Cause probable : le classeur est encore ouvert dans Excel ou un fichier temporaire existe.
Solution :
```bat
taskkill /F /IM excel.exe
```
Puis vérifier que le fichier temporaire a disparu :
```text
~$Ratio_Cuisine.xlsm
~$Ratio_Restauration.xlsm
```
---
### Erreur dans `set_cell_silent.vbs` au moment de fermer Excel
Cause probable : Excel est resté en arrière-plan.
Solution : utiliser la version robuste de `set_cell_silent.vbs`, qui ferme explicitement le classeur et lapplication Excel après sauvegarde.
---
``` ### ⚙️ 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 ``` ### Étapes : 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. --- ## ♻️ 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_prod.xlsm Excel/dev/Ratio_dev.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` 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. --- 📌 **Dernière mise à jour :** 16 mai 2025 ``` --- Souhaites-tu que je tenvoie ce fichier directement en `.md`, ou que je lintègre dans ton dépôt Gitea ? Je peux aussi te générer une version `.pdf` si tu veux la distribuer aux utilisateurs.
## Auteur
Michel

206
README_old.md Normal file
View File

@@ -0,0 +1,206 @@
# Inventaire-Gestion
Ce projet permet de gérer les inventaires et les ratios de plusieurs sites à partir dun fichier Excel central et dune 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 quadministrateur"**
---
## 🔁 (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 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
```
### Étapes :
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.
---
## ♻️ 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` 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.
---
# 📋 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

View File

@@ -1,9 +0,0 @@
@echo off
echo ===============================
echo Installation MySQL ODBC 9.3.0
echo ===============================
echo Installation des composants requis...
start /wait vc_redist.x64.exe /quiet /norestart
start /wait mysql-connector-odbc-9.2.0-winx64.msi /quiet
echo Installation terminée.
pause

View File

@@ -1,27 +0,0 @@
@echo off
title Installation de la version stable de Ratio
echo.
echo ==========================================
echo INSTALLATION DE RATIO - VERSION STABLE
echo ==========================================
echo.
REM Chemin de destination
set DEST="C:\Program Files\Ratio"
REM Créer le dossier si nécessaire
if not exist %DEST% (
mkdir %DEST%
)
REM Copier le fichier Excel
copy "Ratio_prod.xlsm" %DEST%\Ratio.xlsm /Y
REM Protéger le fichier en lecture seule
attrib +R %DEST%\Ratio.xlsm
echo.
echo ✔️ Le fichier Ratio_prod a été installé avec succès !
echo Emplacement : %DEST%\Ratio.xlsm
echo.
pause

View File

@@ -0,0 +1,115 @@
@echo off
setlocal ENABLEDELAYEDEXPANSION
cd /d "%~dp0"
echo --- Mise en prod Ratio_Cuisine ---
set "ROOT=%~dp0.."
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
echo.
echo ROOT = %ROOT%
echo SRC = %SRC%
echo DST = %DST%
echo BACKUP_DIR = %BACKUP_DIR%
echo VERSION_FILE= %VERSION_FILE%
echo.
set "OLD_VERSION="
if exist "%VERSION_FILE%" (
set /p OLD_VERSION=<"%VERSION_FILE%"
)
if not exist "%SRC%" (
echo ERREUR : fichier source introuvable :
echo %SRC%
exit /b 1
)
if not exist "%DST_DIR%" (
echo ERREUR : dossier de destination introuvable :
echo %DST_DIR%
exit /b 1
)
if not exist "%BACKUP_DIR%" (
echo Creation du dossier backup :
echo %BACKUP_DIR%
mkdir "%BACKUP_DIR%"
)
if exist "%DST_DIR%\~$Ratio_Cuisine.xlsm" (
echo ERREUR : Ratio_Cuisine.xlsm est ouvert dans Excel.
echo Ferme le classeur de production avant de relancer la mise en prod.
exit /b 1
)
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...
echo De : %DST%
echo Vers : !BACKUP!
copy /Y "%DST%" "!BACKUP!"
if errorlevel 1 (
echo ERREUR : la sauvegarde de l'ancienne production a echoue.
exit /b 1
)
if not exist "!BACKUP!" (
echo ERREUR : le fichier de sauvegarde n'a pas ete cree.
echo Attendu : !BACKUP!
exit /b 1
)
echo Sauvegarde OK : !BACKUP!
) else (
echo Aucun ancien fichier de production trouve, pas de sauvegarde a faire.
)
echo.
echo Copie vers la version de production...
copy /Y "%SRC%" "%DST%"
if errorlevel 1 (
echo ERREUR lors de la copie vers production.
exit /b 1
)
if not exist "%DST%" (
echo ERREUR : le fichier de production n'a pas ete cree.
exit /b 1
)
echo.
echo Mise a jour de version...
python "%~dp0maj_version.py" "%VERSION_FILE%" "%DST%"
if errorlevel 1 (
echo ERREUR lors de la mise a jour de version.
exit /b 1
)
echo.
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.
echo --- Mise en prod terminee ---
exit /b 0

View File

@@ -0,0 +1,114 @@
@echo off
setlocal ENABLEDELAYEDEXPANSION
cd /d "%~dp0"
echo --- Mise en prod Ratio_Restauration ---
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
echo.
echo ROOT = %ROOT%
echo SRC = %SRC%
echo DST = %DST%
echo BACKUP_DIR = %BACKUP_DIR%
echo VERSION_FILE= %VERSION_FILE%
echo.
set "OLD_VERSION="
if exist "%VERSION_FILE%" (
set /p OLD_VERSION=<"%VERSION_FILE%"
)
if not exist "%SRC%" (
echo ERREUR : fichier source introuvable :
echo %SRC%
exit /b 1
)
if not exist "%DST_DIR%" (
echo ERREUR : dossier de destination introuvable :
echo %DST_DIR%
exit /b 1
)
if not exist "%BACKUP_DIR%" (
echo Creation du dossier backup :
echo %BACKUP_DIR%
mkdir "%BACKUP_DIR%"
)
if exist "%DST_DIR%\~$Ratio_Restauration.xlsm" (
echo ERREUR : Ratio_Restauration.xlsm est ouvert dans Excel.
exit /b 1
)
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...
echo De : %DST%
echo Vers : !BACKUP!
copy /Y "%DST%" "!BACKUP!"
if errorlevel 1 (
echo ERREUR : la sauvegarde de l'ancienne production a echoue.
exit /b 1
)
if not exist "!BACKUP!" (
echo ERREUR : le fichier de sauvegarde n'a pas ete cree.
echo Attendu : !BACKUP!
exit /b 1
)
echo Sauvegarde OK : !BACKUP!
) else (
echo Aucun ancien fichier de production trouve, pas de sauvegarde a faire.
)
echo.
echo Copie vers la version de production...
copy /Y "%SRC%" "%DST%"
if errorlevel 1 (
echo ERREUR lors de la copie vers production.
exit /b 1
)
if not exist "%DST%" (
echo ERREUR : le fichier de production n'a pas ete cree.
exit /b 1
)
echo.
echo Mise a jour de version...
python "%~dp0maj_version.py" "%VERSION_FILE%" "%DST%"
if errorlevel 1 (
echo ERREUR lors de la mise a jour de version.
exit /b 1
)
echo.
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.
echo --- Mise en prod terminee ---
exit /b 0

View File

@@ -0,0 +1,2 @@
@echo off
powershell -ExecutionPolicy Bypass -File "%~dp0Maj_Ratio_Cuisine.ps1"

View File

@@ -0,0 +1,42 @@
$source = "\\mj91.fr\PyCharm\Ratio_Inventaires\Excel\prod"
$dest = "C:\Users\$env:USERNAME\Domo91"
$nomFichier = "Ratio_Cuisine.xlsm"
$nomVersion = "Ratio_Cuisine_VERSION.txt"
$sourceXlsm = Join-Path $source $nomFichier
$sourceVersion = Join-Path $source $nomVersion
$destXlsm = Join-Path $dest $nomFichier
$destVersion = Join-Path $dest $nomVersion
if (!(Test-Path $dest)) {
New-Item -ItemType Directory -Path $dest -Force | Out-Null
}
if (!(Test-Path $sourceVersion)) {
Add-Type -AssemblyName PresentationFramework
[System.Windows.MessageBox]::Show("Le dossier de mise à jour sur le NAS est inaccessible.", "Mise à jour Ratio Cuisine")
exit
}
$versionServeur = (Get-Content $sourceVersion -ErrorAction Stop).Trim()
if (Test-Path $destVersion) {
$versionLocale = (Get-Content $destVersion -ErrorAction SilentlyContinue).Trim()
} else {
$versionLocale = ""
}
if ($versionServeur -ne $versionLocale) {
$excel = Get-Process EXCEL -ErrorAction SilentlyContinue
if ($excel) {
$excel | Stop-Process -Force
Start-Sleep -Seconds 2
}
Copy-Item -Path $sourceXlsm -Destination $destXlsm -Force
Copy-Item -Path $sourceVersion -Destination $destVersion -Force
}
Start-Process $destXlsm

View File

@@ -0,0 +1,2 @@
@echo off
powershell -ExecutionPolicy Bypass -File "%~dp0Maj_Ratio_Restauration.ps1"

View File

@@ -0,0 +1,42 @@
$source = "\\mj91.fr\PyCharm\Ratio_Inventaires\Excel\prod"
$dest = "C:\Users\$env:USERNAME\Domo91"
$nomFichier = "Ratio_Restauration.xlsm"
$nomVersion = "Ratio_Restauration_VERSION.txt"
$sourceXlsm = Join-Path $source $nomFichier
$sourceVersion = Join-Path $source $nomVersion
$destXlsm = Join-Path $dest $nomFichier
$destVersion = Join-Path $dest $nomVersion
if (!(Test-Path $dest)) {
New-Item -ItemType Directory -Path $dest -Force | Out-Null
}
if (!(Test-Path $sourceVersion)) {
Add-Type -AssemblyName PresentationFramework
[System.Windows.MessageBox]::Show("Le dossier de mise à jour sur le NAS est inaccessible.", "Mise à jour Ratio Restauration")
exit
}
$versionServeur = (Get-Content $sourceVersion -ErrorAction Stop).Trim()
if (Test-Path $destVersion) {
$versionLocale = (Get-Content $destVersion -ErrorAction SilentlyContinue).Trim()
} else {
$versionLocale = ""
}
if ($versionServeur -ne $versionLocale) {
$excel = Get-Process EXCEL -ErrorAction SilentlyContinue
if ($excel) {
$excel | Stop-Process -Force
Start-Sleep -Seconds 2
}
Copy-Item -Path $sourceXlsm -Destination $destXlsm -Force
Copy-Item -Path $sourceVersion -Destination $destVersion -Force
}
Start-Process $destXlsm

Binary file not shown.

View File

@@ -1,18 +0,0 @@
@echo off
REM === Script de mise à jour de la version PROD depuis le fichier DEV ===
REM Date : 2025_05_17
set "DEV=C:\Users\miche\PycharmProjects\Ratio & Inventaires\Excel\dev\Ratio_dev.xlsm"
set "PROD_DIR=C:\Users\miche\PycharmProjects\Ratio & Inventaires\Excel\prod"
set "PROD_FILE=%PROD_DIR%\Ratio_prod.xlsm"
set "ARCHIVE_FILE=%PROD_DIR%\Ratio_prod_v2025_05_17.xlsm"
echo Sauvegarde de la version actuelle de PROD...
copy /Y "%PROD_FILE%" "%ARCHIVE_FILE%"
echo Copie de la nouvelle version DEV vers PROD...
copy /Y "%DEV%" "%PROD_FILE%"
echo.
echo Mise à jour terminée. Fichier archivé : %ARCHIVE_FILE%
pause

135
Scripts/maj_version.py Normal file
View File

@@ -0,0 +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):
if not path.exists():
return [major, 0, 0]
contenu = path.read_text(encoding="utf-8").strip().splitlines()
if not contenu:
return [major, 0, 0]
try:
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]
# =========================================================
# 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) < 3:
print("Usage :")
print("python maj_version.py VERSION.txt classeur.xlsm")
sys.exit(1)
version_file = Path(sys.argv[1])
classeur = Path(sys.argv[2])
major = detecter_major(version_file)
version = lire_version(version_file, major)
version = increment_patch(version)
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()

View File

@@ -1,3 +0,0 @@
#!/bin/bash
cp Excel/prod/ratio_prod.xlsm Excel/dev/ratio_dev.xlsm
echo "✔️ Version stable restaurée dans dev."

View File

@@ -0,0 +1,71 @@
Option Explicit
Dim xl, wb
Dim filePath, sheetName, cellAddress, cellValue
If WScript.Arguments.Count < 4 Then
WScript.Echo "[ERR] Usage : set_cell_silent.vbs fichier.xlsm feuille cellule valeur"
WScript.Quit 1
End If
filePath = WScript.Arguments(0)
sheetName = WScript.Arguments(1)
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] Creation Excel : " & Err.Description
WScript.Quit 1
End If
xl.Visible = False
xl.DisplayAlerts = False
xl.EnableEvents = False
xl.AskToUpdateLinks = False
xl.AutomationSecurity = 3
Err.Clear
Set wb = xl.Workbooks.Open(filePath, 0, False)
If Err.Number <> 0 Then
WScript.Echo "[ERR] Ouverture classeur: " & Err.Description
xl.Quit
Set xl = Nothing
WScript.Quit 1
End If
Err.Clear
wb.Worksheets(sheetName).Range(cellAddress).Value = cellValue
If Err.Number <> 0 Then
WScript.Echo "[ERR] Ecriture cellule: " & Err.Description
wb.Close False
xl.Quit
Set wb = Nothing
Set xl = Nothing
WScript.Quit 1
End If
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
Set xl = Nothing
WScript.Quit 0

View File

@@ -1,81 +0,0 @@
import tkinter as tk
from tkinter import messagebox
import mysql.connector
import os
import subprocess
from dotenv import load_dotenv
# Charger les variables d'environnement
load_dotenv()
DB_HOST = os.getenv("DB_HOST")
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_NAME = os.getenv("DB_NAME")
def ouvrir_excel(site, login):
dossier_excel = os.path.join(os.path.dirname(__file__), "excel")
chemin_excel = os.path.join(dossier_excel, "Ratio.xlsm")
subprocess.Popen(["start", chemin_excel], shell=True)
# Écrit le nom du site
with open(os.path.join(dossier_excel, "site_selectionne.txt"), "w") as f:
f.write(site)
# Écrit le nom de l'utilisateur connecté
with open(os.path.join(dossier_excel, "login_utilisateur.txt"), "w") as f:
f.write(login)
os.chdir(dossier_excel) # On se place dans le dossier pour lancer Excel
subprocess.Popen(["start", "Ratio.xlsm"], shell=True)
from datetime import date
def verifier_connexion():
login = entry_login.get()
mdp = entry_mdp.get()
try:
conn = mysql.connector.connect(
host=DB_HOST,
user=DB_USER,
password=DB_PASSWORD,
database=DB_NAME
)
cursor = conn.cursor()
cursor.execute("SELECT Site, DateExpiration FROM AccesUtilisateurs WHERE NomUtilisateur=%s AND MotDePasse=%s", (login, mdp))
result = cursor.fetchone()
if result:
site, expiration = result
if expiration and expiration < date.today():
messagebox.showerror("Compte expiré", f"Votre compte a expiré le {expiration}.")
else:
root.destroy()
ouvrir_excel(site, login)
else:
messagebox.showerror("Erreur", "Identifiants invalides.")
except Exception as e:
messagebox.showerror("Erreur de connexion", str(e))
# Interface utilisateur
root = tk.Tk()
root.title("Connexion à l'inventaire")
tk.Label(root, text="Nom d'utilisateur").grid(row=0, column=0)
tk.Label(root, text="Mot de passe").grid(row=1, column=0)
entry_login = tk.Entry(root)
entry_mdp = tk.Entry(root, show="*")
entry_login.grid(row=0, column=1)
entry_mdp.grid(row=1, column=1)
tk.Button(root, text="Connexion", command=verifier_connexion).grid(row=2, columnspan=2, pady=10)
root.mainloop()

3
last_ids.txt Normal file
View File

@@ -0,0 +1,3 @@
Meudon:27
Roissy:15
Saclay:20