Enregistrer dans dossier /sous dossier [Résolu]

Signaler
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
-
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
-
Bonjour
j'ai un fichier excel avec une macro pour enregistrer une copie du fichier en le renommant a la date du jour qui enregistre le fichier dans le meme dossier que son original ça marche tres bien .
Quand vous cliquez sur appel ça crée une feuille renommee en hh mm ss et si je clique créer classeur du jour ça enregistre un fichier nommé 02-06-2021.xlsm.
mais je voudrais en fait l'enregistrer dans un dossier correspondant a l'année et sous dossier correspondant au mois ce qui donnerait enregistrer dans:
dossier path/2021/06/02-6-2021.xlsm pour aujourd'hui
j'arrive a renommer le fichier mais pas faire les 2 sous dossiers
je vous mets le fichier exemple
https://www.cjoint.com/c/KFbwhMo2sRe
merci de votre aide

Slts               A bientôt 
Surplus

12 réponses

Messages postés
28488
Date d'inscription
dimanche 18 janvier 2009
Statut
Contributeur
Dernière intervention
19 juin 2021
3 817
Salut,

Je peux pas t'aider.

Mais juste faire une remarque.

Pourquoi ton fichier s'appelle pas 2021-06-02-06-14-00.xlsm

AAAA-MM-JJ-HH-MM-SS

Ça serait classé en ordre, pas besoin de dossiers.
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
4
Pour la raison que j aurais au bout d un an 366 fichiers dans un même dossier
Merci quand même
Messages postés
7421
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
638
Bonjour,

comme ceci:

MsgBox Format(Date, "dd/mm/yyyy") 'date
MsgBox Month(Date) ' mois
MsgBox Year(Date) ' année



remplacer MsgBox par des variables

Messages postés
9871
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 juin 2021
2 135
Bonjour à tous

et pour formater le mois sur 2 chiffres
m = Format(Date, "mm")

Cdlmnt
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
4
bonjour a tous
ça pour renommer le fichier y a pas de soucis c'est fait ce que je cherche a faire c'est de faire 2 dossiers et mettre le fichier dedans les MsgBox je vois pas a quoi ils me serviraient je voudrais un enregistrement auto dans chaque dossier et si il existe pas le faire
merci
Messages postés
24110
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
6 807
Bonjour,

    If Dir("c:\tmp\" & Year(Date), 16) = "" Then MkDir "c:\tmp\" & Year(Date)
    If Dir("c:\tmp\" & Year(Date) & "\" & Format(Month(Date), "00"), 16) = "" Then MkDir "c:\tmp\" & Year(Date) & "\" & Format(Month(Date), "00")

eric

PS : j'ai mis un dossier fixe C:\tmp, tu voudras sans doute ThisWorkbook.Path & "\" & ...

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
4
bonjour
cela me serait egal de l'enregistrer dans le path ou ailleur mais la solution que tu me donnes je sais pas quoi en faire ou je dois l'inser .
j'ai mis le classeur en exemple avec ma macro ou on doit intégrer ta solution?
Messages postés
24110
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
6 807
Bonjour,

Ta question était mais pas faire les 2 sous dossiers
Ue fois que tu connais le chemin et le nom de fichier, ces 2 lignes te créent les répertoires nécessaires s'ils n'existent pas.
Tu peux ensuite y enregistrer ton fichier sans erreur.
erreur

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
4
Bonjour
les 2 dossiers j'arrivais a les faire mais pas a y enregistrer dedans avec cette macro tu mets ces 2 lignes ou par rapport a la mienne?
Sub creer_classeur()
Dim fich
fich = ActiveWorkbook.Path & "\" & Day(Date) & "-" & Month(Date) & "-" & Year(Date)
ActiveWorkbook.SaveAs fich
end sub
Slts               A bientôt 
Surplus
Messages postés
24110
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
6 807
Re,

Non, tu ne crées pas tes répertoires ici.
De plus tu ne mets pas l'extension du fichier, ni le type de fichier voulu (préférable...).

Essaie avec ça :
Sub creer_classeur()
    Dim fich As String
    ' rep année
    fich = ActiveWorkbook.Path & "\" & Year(Date)
    If Dir(fich, 16) = "" Then MkDir fich
    ' rep mois
    fich = fich & "\" & Format(Month(Date), "00")
    If Dir(fich, 16) = "" Then MkDir fich
    ' fichier
    fich = fich & "\" & Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "-" & Year(Date)
    ActiveWorkbook.SaveAs fich & ".xlsm", FileFormat:=52
    ' ou
'    ActiveWorkbook.SaveAs fich & ".xlsx", FileFormat:=51
End Sub

eric

PS : pour ma part, je nommerai plutôt le le fichier aaaa-mm-jj.xlsm
Si un jour tu regroupes plusieurs mois, ils resteraient triés chronologiquement
PS2 : tu es bien conscient que ActiveWorkbook est le classeur actif qui peut être n'importe lequel, et non celui avec cette macro qui est ThisWorkbook ?

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
4
bonjour
Superça fonctionne tres bien Merci
je vais essayer de faire comme tu dis ici
"PS : pour ma part, je nommerai plutôt le le fichier aaaa-mm-jj.xlsm
Si un jour tu regroupes plusieurs mois, ils resteraient triés chronologiquement" par contre de toutes facons pour
"PS2 : tu es bien conscient que ActiveWorkbook est le classeur actif qui peut être n'importe lequel, et non celui avec cette macro qui est ThisWorkbook ? "
la macro sera dans le classeur actif elle demarrera pas d'un autre.
ou je me trompe?
Messages postés
24110
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
6 807
Si tu lances la macro avec un autre classeur actif, c'est ce dernier qui sera enregistré.
Si tu es sûr à 100% que c'est toujours le bon qui sera actif, ça ne change rien.
Si c'est systématiquement celui de la macro qu'il faut enregistrer (cas le plus courant) il faut utiliser ThisWorkbook. C'est plus clair pour tout le monde et aucun risque qu'un utilisateur réussisse à en sauvegarder un autre. Tu crois avoir un backup, et walou, c'est sa liste de course que tu as...
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
4
ok je comprends la différence donc autant la réserver a ce fichier en effet.
pourquoi il y a des chiffres dans ta macro style " FileFormat = 52" ?ça corresponds a quoi?
j'ai 2 autres questions sur ce fichier je fais un nouveau post?

Slts               A bientôt 
Surplus
Messages postés
24110
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
6 807
Tu te mets sur SaveAs et tu fais F1.
L'aide est très bien faite, c'est la 1ère chose à faire.
Oui, tu démarres un nouveau sujet avec un titre explicite pour ceux qui commencent par une recherche.
eric
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
4 >
Messages postés
24110
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021

j 'ai vu l'aide mais pas compris ou aller donc si dans n importe quelle macro meme hors ce fichier je fais FileFormat=52 cela veut dire .xlsm?
Messages postés
24110
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
6 807 >
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021

Oui, c'est le format de fichier voulu :
51 = xlOpenXMLWorkbook (without macro's in 2007-2010, xlsx)
52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2010, xlsm)
50 = xlExcel12 (Excel Binary Workbook in 2007-2010 with or without macro's, xlsb)
56 = xlExcel8 (97-2003 format in Excel 2007-2010, xls)
Tu as aussi :
FileFormat:=xlCSV pour un *.csv
et Type:=xlTypePDF pour un *.pdf
Messages postés
673
Date d'inscription
mardi 17 août 2010
Statut
Membre
Dernière intervention
11 juin 2021
4 >
Messages postés
24110
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021

Bien merci je savais pas c'est pas tres evident si les chiffres changent par année lol