Insérer une nouvelle feuille renommée "Stocks appareils au (date de la veille)"

Résolu
Emi80110 Messages postés 69 Statut Membre -  
brucine Messages postés 24969 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir :-)

j'aurai besoin d'aide svp.

J'aurai besoin d'insérer tout simplement une nouvelle feuille que ma macro renommerait automatiquement "Stock appareil arrêté au (date de la veille)", mais je bloque là dessus.

Si des intéressés pour mon cas je suis preneuse de votre aide :-) merciii d'avance :-)

Emilie

2 réponses

  1. brucine Messages postés 24969 Date d'inscription   Statut Membre Dernière intervention   4 180
     
    Bonjour,

    Pas claire, ton histoire.

    Au moment où tu veux la renommer, cette feuille, il y a déjà quelque chose dedans et un autre nom ou c'est une feuille vierge que tu viens de créer?

    Au moins dans la deuxième hypothèse, un script batch/Powershell est peut-être plus simple, il fait le job sur 2 lignes.
    0
    1. Emi80110 Messages postés 69 Statut Membre 2
       
      Bonsoir ☺️
      Sur une feuille vierge que je viens de créer ce serait l'idéal et apparemment le plus simple... ☺️
      0
      1. brucine Messages postés 24969 Date d'inscription   Statut Membre Dernière intervention   4 180 > Emi80110 Messages postés 69 Statut Membre
         
        Tiens, cadeau, créer un nouveau fichier texte qu'on rebaptisera aussitôt par exemple date.cmd et y copier ce qui suit.
        On fait une pierre deux coups, on ne renomme pas un nouveau classeur mais on le crée automatiquement au nom requis.


        @ECHO OFF

        REM CHCP A CAUSE ACCENTS
        CHCP 65001

        REM CALCUL DATE HIER FORMAT YYMMDD SELON GOUT
        FOR /F "usebackq" %%i in (`PowerShell $date ^= Get-Date^; $date ^= $date.AddDays^(-1^)^; $date.ToString^('yyMMdd'^)`) do set HIER=%%i

        REM CREER FICHIER NOM REQUIS DANS MEME REPERTOIRE
        type NUL > "%~dp0Stock_appareil_ arrêté_au_%HIER%.xlsx"

        CLS
        EXIT
        0
  2. Emi80110 Messages postés 69 Statut Membre 2
     
    Ça marche. J'essaie ça vendredi ???? merci beaucoup ☺️
    0
    1. brucine Messages postés 24969 Date d'inscription   Statut Membre Dernière intervention   4 180
       
      De rien, tu reviens s'il y a des finitions mais, comme tu imagines, j'ai testé et ça marche (ce qui m'a fait rajouter ce fichu 65001 sans quoi accent circonflexe et aigu devenaient des hiéroglyphes et enlever les espaces au profit de tirets pour éviter les ennuis).

      Je privilégie le format yy... plutôt que dd... parce que si ces fichiers, il doit y en avoir des tonnes, c'est la seule façon qu'après l'explorateur Windows les rende dans l'ordre.
      0
      1. brucine Messages postés 24969 Date d'inscription   Statut Membre Dernière intervention   4 180 > brucine Messages postés 24969 Date d'inscription   Statut Membre Dernière intervention  
         
        Si maintenant le fameux fichier doit être créé non pas vierge, mais avec toutes les données non variables et la mise en forme communes à toutes les dates, ça évite de refaire tout le boulot:

        -dans le même dossier que celui de date.cmd créer un nouveau dossier appelé par exemple modele
        -y copier la feuille modèle toto.xlsx une fois débarrassée de ces données variables
        -remplacer la dernière sentence (à partir de type NUL) par:


        COPY %~dp0\modele\toto.xlsx %~dp0toto.xlsx
        REN toto.xlsx "Stock_appareil_ arrêté_au_%HIER%.xlsx"
        0
      2. brucine Messages postés 24969 Date d'inscription   Statut Membre Dernière intervention   4 180 > brucine Messages postés 24969 Date d'inscription   Statut Membre Dernière intervention  
         
        On n'arrête pas le progrès, décidons que si aujourd'hui est lundi, on ne bossait pas samedi et dimanche et que donc "hier" est vendredi (J-3).
        On peut aussi sophistiquer aux jours fériés mais là, le batch va devenir beaucoup plus lourd parce que certains ne sont pas à date fixe et qu'il faudra donc aussi les calculer (si, si, ils ne sont pas au hasard, il y a une formule de calcul pour Pâques et consorts):


        @ECHO OFF

        REM CHCP A CAUSE ACCENTS
        CHCP 65001

        REM DETERMINER DATE DU JOUR
        FOR /F "tokens=2 delims=:." %%o in ('"<nul (cmd /e:off /cdate | find "/")"') DO (
        set Jour=%%o
        )

        REM LE LUNDI, "HIER" EST VENDREDI SI SAMEDI EST CHOME
        If /i "%Jour%"==" lun" (
        GOTO LUNDI
        ) else (
        GOTO AUTRE)

        :AUTRE
        REM CALCUL DATE HIER FORMAT YYMMDD SELON GOUT
        FOR /F "usebackq" %%i in (`PowerShell $date ^= Get-Date^; $date ^= $date.AddDays^(-1^)^; $date.ToString^('yyMMdd'^)`) do set HIER=%%i
        GOTO COPY

        REM CREER FICHIER NOM REQUIS DANS MEME REPERTOIRE
        REM type NUL > "%~dp0Stock_appareil_ arrêté_au_%HIER%.xlsx"

        :LUNDI
        REM CALCUL DATE HIER FORMAT YYMMDD SELON GOUT
        FOR /F "usebackq" %%i in (`PowerShell $date ^= Get-Date^; $date ^= $date.AddDays^(-3^)^; $date.ToString^('yyMMdd'^)`) do set HIER=%%i
        GOTO COPY

        :COPY
        COPY %~dp0\modele\toto.xlsx %~dp0toto.xlsx
        REN toto.xlsx "Stock_appareil_ arrêté_au_%HIER%.xlsx"

        CLS
        EXIT
        0