diff --git a/Excel/prod/Ratio_prod.xlsm b/Excel/prod/Ratio_prod.xlsm index f48ce5c..65a6497 100644 Binary files a/Excel/prod/Ratio_prod.xlsm and b/Excel/prod/Ratio_prod.xlsm differ diff --git a/Excel/prod/VERSION.txt b/Excel/prod/VERSION.txt new file mode 100644 index 0000000..94d7d57 --- /dev/null +++ b/Excel/prod/VERSION.txt @@ -0,0 +1 @@ +1.7.6 diff --git a/Fichiers_Install_Clients/Ratio_prod.xlsm b/Fichiers_Install_Clients/Ratio_prod.xlsm index f48ce5c..65a6497 100644 Binary files a/Fichiers_Install_Clients/Ratio_prod.xlsm and b/Fichiers_Install_Clients/Ratio_prod.xlsm differ diff --git a/Scripts/PROD b/Scripts/PROD deleted file mode 100644 index 41b3362..0000000 --- a/Scripts/PROD +++ /dev/null @@ -1 +0,0 @@ - === [2/3] Copie DEV - diff --git a/Scripts/maj_prod_ratio.bat b/Scripts/maj_prod_ratio.bat index 92f4d32..5d537fa 100644 --- a/Scripts/maj_prod_ratio.bat +++ b/Scripts/maj_prod_ratio.bat @@ -1,74 +1,124 @@ @echo off -setlocal EnableExtensions EnableDelayedExpansion +setlocal EnableExtensions DisableDelayedExpansion -REM === PARAMÈTRES A ADAPTER UNE FOIS ========================================= +REM === PARAMETRES ============================================================= set "ROOT=C:\Users\miche\PycharmProjects\Ratio_Inventaires" set "DEV_XLSM=%ROOT%\Excel\dev\Ratio_dev.xlsm" - set "PROD_DIR=%ROOT%\Excel\prod" set "PROD_XLSM=%PROD_DIR%\Ratio_prod.xlsm" +set "INSTALL_CLIENT=%ROOT%\Fichiers_Install_Clients" +set "VERSION_TXT=%ROOT%\Excel\dev\VERSION.txt" +set "SHEET_NAME=Tableau de bord" +set "CELL_ADDR=P1" +set "SETCELL_VBS=C:\Users\miche\PycharmProjects\Ratio_Inventaires\Scripts\set_cell_silent.vbs" -REM Dossier prêt à livrer au client -set "INSTALL_CLIENT=%USERPROFILE%\Desktop\Install_Ratio_Inv" REM ============================================================================ - -REM === DATE ISO robuste (indépendant des paramètres régionaux) =============== +REM Date ISO (yyyy_MM_dd) +REM ============================================================================ for /f %%i in ('powershell -NoProfile -Command "(Get-Date).ToString(\"yyyy_MM_dd\")"') do set "DATESTAMP=%%i" set "ARCHIVE_FILE=%PROD_DIR%\Ratio_prod_%DATESTAMP%.xlsm" -echo. -echo === [1/4] Préparation des dossiers ======================================= +echo( +echo( === [1/4] Préparation des dossiers ======================================= if not exist "%PROD_DIR%" mkdir "%PROD_DIR%" if not exist "%INSTALL_CLIENT%" mkdir "%INSTALL_CLIENT%" if not exist "%DEV_XLSM%" ( - echo [ERREUR] Fichier DEV introuvable: %DEV_XLSM% - goto :EOF + echo( [ERREUR] Fichier DEV introuvable: %DEV_XLSM% + endlocal & exit /b 1 ) -echo. -echo === [2/4] Sauvegarde de la PROD courante ================================= +if not exist "%VERSION_TXT%" ( + echo 1.0.0 > "%VERSION_TXT%" + echo( [INFO] VERSION.txt manquant -> initialisé à 1.0.0 +) + +REM --------------------------------------------------------------------------- +REM [2/4] Synchroniser P1 (Tableau de bord) = VERSION.txt, sans macros/événements +REM --------------------------------------------------------------------------- +echo( +echo( === [2/4] Mise a jour P1 depuis VERSION.txt [macros/evenements off] ===== + +set "NEW_VER=" +set /p NEW_VER=<"%VERSION_TXT%" +set "NEW_VER=%NEW_VER: =%" + +if "%NEW_VER%"=="" ( + echo( [ERREUR] VERSION.txt est vide. Mets une valeur ex: 2.1.3 et relance. + endlocal & exit /b 1 +) + +echo( Version a ecrire en P1 : %NEW_VER% + +if not exist "%SETCELL_VBS%" ( + echo( [WARN] VBS absent: "%SETCELL_VBS%". P1 ne sera pas mis a jour, on continue. +) else ( + cscript //nologo "%SETCELL_VBS%" "%DEV_XLSM%" "%SHEET_NAME%" "%CELL_ADDR%" "%NEW_VER%" + if errorlevel 1 ( + echo( [WARN] Echec mise a jour P1. On continue. + ) else ( + echo( [OK] P1 mis a jour dans DEV : %NEW_VER% + ) +) +REM --------------------------------------------------------------------------- +REM [3/4] Sauvegarde de la PROD courante +REM --------------------------------------------------------------------------- +echo( +echo( === [3/4] Sauvegarde de la PROD courante ================================= if exist "%PROD_XLSM%" ( - echo Sauvegarde -> "%ARCHIVE_FILE%" + echo( Sauvegarde -> "%ARCHIVE_FILE%" copy /Y "%PROD_XLSM%" "%ARCHIVE_FILE%" >nul ) else ( - echo Pas de PROD courante a sauvegarder. + echo( Pas de PROD courante à sauvegarder. ) -echo. -echo === [3/4] Mise a jour de la PROD depuis le DEV =========================== -copy /Y "%DEV_XLSM%" "%PROD_XLSM%" >nul -if errorlevel 1 ( - echo [ERREUR] Copie du XLSM vers PROD echouee. - goto :EOF +REM --------------------------------------------------------------------------- +REM [4/4] Copie DEV -> PROD et Dossier client + nettoyage archives +REM --------------------------------------------------------------------------- +echo( +echo( === [4/4] Copie DEV -^> PROD ^& Dossier client ============================= +copy /Y "%DEV_XLSM%" "%PROD_XLSM%" >nul || ( + echo( [ERREUR] Copie DEV -> PROD echouee. + endlocal & exit /b 1 ) -echo. -echo === [4/4] Preparation du dossier client ================================== -copy /Y "%PROD_XLSM%" "%INSTALL_CLIENT%\Ratio_prod.xlsm" >nul -if errorlevel 1 ( - echo [ERREUR] Copie du XLSM vers INSTALL_CLIENT echouee. - goto :EOF +REM --- Livraison client depuis la PROD (sans ajout de protection) --- +copy /Y "%PROD_XLSM%" "%INSTALL_CLIENT%\Ratio_prod.xlsm" >nul || ( + echo( [ERREUR] Copie vers INSTALL_CLIENT echouee. + endlocal & exit /b 1 ) -echo. -echo === Nettoyage: on garde 5 archives les plus recentes ===================== +REM ecrire la version cote PROD pour verification rapide +echo %NEW_VER% > "%PROD_DIR%\VERSION.txt" + pushd "%PROD_DIR%" >nul +setlocal EnableDelayedExpansion set count=0 for /f "delims=" %%f in ('dir /b /o-d "Ratio_prod_20??_??_??.xlsm"') do ( set /a count+=1 - if !count! gtr 5 ( - echo Suppression: %%f - del "%%f" - ) + if !count! gtr 5 del "%%f" ) +endlocal popd >nul -echo. -echo [OK] Mise a jour terminee : -echo - PROD : "%PROD_XLSM%" -echo - CLIENT: "%INSTALL_CLIENT%\Ratio_prod.xlsm" -echo. -pause -endlocal & exit /b 0 +REM --------------------------------------------------------------------------- +REM Nettoyage: garder 5 archives +REM --------------------------------------------------------------------------- +pushd "%PROD_DIR%" >nul +setlocal EnableDelayedExpansion +set count=0 +for /f "delims=" %%f in ('dir /b /o-d "Ratio_prod_20??_??_??.xlsm"') do ( + set /a count+=1 + if !count! gtr 5 del "%%f" +) +endlocal +popd >nul +echo( +echo( [OK] Mise à jour terminée : +echo( - Version : %NEW_VER% +echo( - PROD : "%PROD_XLSM%" +echo( - CLIENT : "%INSTALL_CLIENT%\Ratio_prod.xlsm" +echo( - PROD\VERSION.txt: %NEW_VER% +echo( +endlocal & exit /b 0 diff --git a/Scripts/restaurer.sh b/Scripts/restaurer.sh deleted file mode 100644 index 27b2dc0..0000000 --- a/Scripts/restaurer.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -cp Excel/prod/ratio_prod.xlsm Excel/dev/ratio_dev.xlsm -echo "✔️ Version stable restaurée dans dev." \ No newline at end of file diff --git a/Scripts/set_cell_silent.vbs b/Scripts/set_cell_silent.vbs new file mode 100644 index 0000000..a0a93c0 --- /dev/null +++ b/Scripts/set_cell_silent.vbs @@ -0,0 +1,33 @@ +' set_cell_silent.vbs +' Usage: cscript //nologo set_cell_silent.vbs "C:\x\file.xlsm" "Feuille" "A1" "Valeur" + +On Error Resume Next + +If WScript.Arguments.Count < 4 Then WScript.Quit 1 + +Dim fpath, sname, addr, val +fpath = WScript.Arguments(0) +sname = WScript.Arguments(1) +addr = WScript.Arguments(2) +val = WScript.Arguments(3) + +Dim xl, wb, ws +Set xl = CreateObject("Excel.Application") +xl.DisplayAlerts = False +xl.Visible = False +xl.AutomationSecurity = 3 ' macros OFF +xl.EnableEvents = False ' événements OFF + +Set wb = xl.Workbooks.Open(fpath, 0, False) +If Err.Number <> 0 Then xl.Quit: WScript.Quit 2 + +Set ws = wb.Worksheets(sname) +If Err.Number <> 0 Then wb.Close False: xl.Quit: WScript.Quit 3 + +ws.Range(addr).Value = val +If Err.Number <> 0 Then wb.Close False: xl.Quit: WScript.Quit 4 + +wb.Save +wb.Close False +xl.Quit +WScript.Quit 0