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

Fermé
Emi80110 Messages postés 50 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 8 avril 2024 - 10 nov. 2021 à 17:41
brucine Messages postés 14688 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 mai 2024 - 10 nov. 2021 à 21:25
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
A voir également:

2 réponses

brucine Messages postés 14688 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 mai 2024 1 901
10 nov. 2021 à 18:21
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
Emi80110 Messages postés 50 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 8 avril 2024 1
10 nov. 2021 à 18:45
Bonsoir ☺️
Sur une feuille vierge que je viens de créer ce serait l'idéal et apparemment le plus simple... ☺️
0
brucine Messages postés 14688 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 mai 2024 1 901 > Emi80110 Messages postés 50 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 8 avril 2024
10 nov. 2021 à 19:38
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
Emi80110 Messages postés 50 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 8 avril 2024 1
10 nov. 2021 à 19:43
Ça marche. J'essaie ça vendredi ???? merci beaucoup ☺️
0
brucine Messages postés 14688 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 mai 2024 1 901
10 nov. 2021 à 19:55
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
brucine Messages postés 14688 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 mai 2024 1 901 > brucine Messages postés 14688 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 mai 2024
10 nov. 2021 à 20:20
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
brucine Messages postés 14688 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 mai 2024 1 901 > brucine Messages postés 14688 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 mai 2024
10 nov. 2021 à 21:25
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