Création d'arborescence de "dossiers date" année / mois / jour

Bonjour,

Je voulais savoir si vous sauriez comment créer une arborescence de "dossiers date" à partir d'Excel c-a-d : plusieurs dossiers année contenant tous les mois (dossiers) et ces derniers contenant tous les jours (dossier).

J'ai trouvé une réponse intéressante sur : https://forum.excel-pratique.com/excel/creation-dossier-sous-dossier-annee-et-mois-85525#p495657

Mais elle ne permet de créer qu'un seul dossier à la fois et je n'ai pas la main pour sélectionner l'emplacement de l'arborescence.

Merci,

Luc

Bonjour,

Quel est le but final ou plutot que doivent contenir vos dossiers ?

Cordialement

Bonjour à tous,

Voici une première proposition avec une macro LancerCreation qui exécute une macro CreationAnnee (pour créer tous les dossiers de l'année), elle-même exécutant une macro CreationDossiersJour pour créer la partie de chemin correspond à une journée (le cas échéant année et mois et surtout le jour).

La macro LancerCreation sert juste d'exemple. Dans votre cas, il faudra probablement obtenir l'année de création autrement, à partir d'une cellule excel probablement. Idem pour le chemin, qu'il faudra adapter :

Sub LancerCreation()
chemin$ = "C:\...\" '<<<< répertoire de destination
annee& = inputbox("Choisissez l'année à créer")
CreationAnnee chemin, annee
end sub

Sub CreationAnnee(Destination$, Annee&)
dim dat as date
dat = dateserial(Annee, 1, 1)
while dat <= dateserial(Annee, 12, 31)
    CreationDossiersJour Destination, dat
    dat = dat + 1
wend
end sub

Sub CreationDossiersJour(Repertoire$, Ladate as Date)
set fso = createobject("Scripting.filesystemobject")
t = split(format(Ladate, "YYYY-MM-DD"), "-")
spath$ = Repertoire
for i = lbound(t) to ubound(t)
    spath = spath & "\" & t(i)
    if not fso.folderexists(spath) then fso.createfolder spath
next i
end sub

Ce n'est pas testé donc il peut y avoir des erreurs...

Cdlt,

Bonjour @3GB,

Merci pour ce retour rapide !

Le fait de saisir l'emplacement du dossier année dans la macro et le fait de saisir manuellement l'année ne me dérangent pas, j'ai créé une macro avec ton programme ... il n'y a pas d'erreurs mais il n'y a pas eu de création de dossier :(

Bonjour @Dan,

les dossiers contiendront des fichiers que je placerai manuellement

cdt,

Luc

Re Luc,

Peux-tu me montrer ton code pour que je voie la valeur de chemin ?

Peux-tu essayer avec cette nouvelle valeur pour chemin :

chemin = environ("userprofile") & "\Downloads\"

Les dossiers devraient être créés dans le dossier Téléchargements.

Edit : J'ai édité le code à l'instant sur lequel il manquait un séparateur !

Cdlt,

Re @3GB

Merci pour ta réactivité,

Finalement, les dossiers s'étaient bien crées mais dans un emplacement diffèrent .... j'avais oublié le "\" à la fin

Le problème maintenant c'est qu'il n'y a pas d'arborescence des dossiers ... ils ont étaient créés comme ci-dessous :

image

ça serait plus pratique si le dossier "année" contenait les dossier "mois" et que ces derniers contiennent les dossiers "jours" :)

Cdt,

Luc

Re

les dossiers contiendront des fichiers que je placerai manuellement

Bon je ne vais plus intervenir ici puisque 3GB est intervenu

Mon conseil est d'éviter trop de dossiers et sous dossiers et de structurer le nom de vos fichiers (annee mois et jour) si cela est possible. Une bête recherche via l'explorateur windows vous permet de retrouver vos fichiers facilement si vous les nommez par annee, mois et jour. Le cas échéant cela risque de devenir ingérable.

Oui, comme dit sur mon précédent commentaire, j'ai mis à jour le code (de ma première réponse) pour y rajouter le séparateur que j'avais oublié. En réessayant avec la ligne : spath = spath & "\" & t(i), vous devriez obtenir le résultat attendu.

Cependant, je dois avouer que je partage l'avis de Dan (que je salue) au sujet de l'arborescence. Quand c'est possible, il faut limiter les sous-dossiers et se discipliner sur les libellés de fichiers. Mais je suis conscient qu'il soit parfois nécessaire de procéder ainsi (au moins pour les mois).

Cdlt,

Re @3GB,

Merci beaucoup pour ta réactivité ... ça marche

Merci aussi pour les conseils d'organisation @Dan et @3GB

Cdt,
Luc

Re Luc,

Merci d'être revenu le confirmer !

Et j'espère que tu arriveras à te retrouver avec tes 365 dossiers !

Bonne continuation,

Re @3GB et @Dan

J'ai un complément de question ; y aurait-il un moyen d'afficher le nom du jour correspondant à cette date dans le nom du "dossier jour" .... comme ci-dessous :

image

Le programme me va bien mais ça serait un Nice To Have qui pourrait être pratique

Cdt,

Luc

Voici un essai avec cette procédure modifiée :

Sub CreationDossiersJour(Repertoire$, Ladate as Date)
set fso = createobject("Scripting.filesystemobject")
t = split(format(Ladate, "YYYY-MM-DD DDDD"), "-")
t(2) = application.proper(t(2))
spath$ = Repertoire
for i = lbound(t) to ubound(t)
    spath = spath & "\" & t(i)
    if not fso.folderexists(spath) then fso.createfolder spath
next i
end sub

Je viens de tester, je pensais que les jours de la semaine seraient en anglais mais sur ma version, ils sortent en français...

Cdlt,

Merci beaucoup @3GB ça marche ... Top

je viens de voir ton commentaire .... oui je vais essayer de ne pas me perdre avec tous ces dossier

Cdt,

Luc

Rechercher des sujets similaires à "creation arborescence dossiers date annee mois jour"