Création dossiers automatiquement

Bonjour a tous,

Je cherche une solution pour créer automatiquement des dossiers a partir du nom et de la date de création de fichier PDF.

Je m’explique j’ai une machine outils qui me créer des fichiers PDF sous forme de nom de ce genre (1001 BI029 201977 a la date du 18-10-2023 ).
Je voudrais que ca me créer un dossier en prenant que les 4 premiers chiffres donc 1001 avec le mois et l’année de création du fichier( ex: 1001-10-2023)
En sachant qu’en général la machine créer plein de fichier différents je voudrais que ceux commençant par les même chiffres se retrouve dans le même dossier suivant la date ( si y en a qui ont le même nom mais a une date différente, ca créer un autre dossier (ex: 1001-06-2024)).

Tout les fichiers se trouve au même endroit.
Au fur et a mesure des fichiers vont s’ajouter au dossier source, donc je voudrais que ceux ci aussi créer des dossiers.

Je sais pas si c’est possible de faire ca en sachant que je suis pas un spécialiste en informatique.

merci d’avance pour vos retours.

Const sPréfix = "C:\Temp\X0001-1\X00002-2\X0003-3\X0004-4\"     '1ier partie du dossier des pdfs

Sub Créer_PDF()
     Dim sMachine, MaDate, sFichier As String

     MaDate = Date
     Machine = "1234"
     sFichier = sPréfix & Left(Machine, 4) & "-" & Format(MaDate, "mm-yyyy") & "\" & "1001 BI029 201977.pdf"     'nom du pdf que vous voulez créer
     Créer_Dossiers sFichier                 'vérifier si tous les dossiers existent

     MsgBox "dossier existe !!!!", vbInformation, sFichier

End Sub

Sub Créer_Dossiers(Nom_Fichier As String)

     Dim i, sp, s
     sp = Split(Nom_Fichier, "\")
     For i = 0 To UBound(sp) - 1
          s = s & sp(i) & "\"
          If i > 0 And Dir(s, vbDirectory) = "" Then MkDir s
     Next

End Sub

Jerome_Serton.xlsm (17,9 Ko)

Bonjour,
Merci je regarde ça ce soir en rentrant du boulot.
Bonne journée

Alors j’ai pas tout compris
J’ai tout mes fichiers dans un dossier " D:\tef\Nouveau dossier (2)\Nouveau dossier\PDF USINAGE "
J’ai changé l’adresse dans la macro mais ca me créer qu’un seul dossier et qui est au nom de 1234 et non au nom des fichiers.

En plus j’ai oublié mais si c’était possible de déplacer le fichier en question dans le dossier ca serait le top

Merci

1 « J'aime »

Bonjour,
J’ai déjà créé des lignes qui font a peut prêt la même chose. et la voici :

Sub classement()
Dim emplacement As String
Dim Groupe_fichier As Object
Dim fichier As Object
Dim n As Integer
Dim dossier As Range
Dim a As FileDialog
n = 0
Range("AA:AA").NumberFormat = "@"
Range("AA3").Select
On Error GoTo nada
Set a = Application.FileDialog(msoFileDialogFolderPicker)
a.Show
emplacement = a.SelectedItems(1)
Set Groupe_fichier = CreateObject("scripting.filesystemobject").getfolder(emplacement)
Application.ScreenUpdating = False

For Each fichier In Groupe_fichier.Files
ActiveCell.Offset(n, 0) = Format(FileDateTime(fichier), "dd-mmm-yyyy")
n = n + 1
Next
ActiveCell.CurrentRegion.Name = "liste_repertoire"

For Each dossier In Range("liste_repertoire")
On Error Resume Next
MkDir emplacement & "/" & dossier
For Each fichier In Groupe_fichier.Files
If Format(FileDateTime(fichier), "dd-mmm-yyyy") = dossier Then
Name fichier As emplacement & "/" & dossier & "/" & fichier.Name
End If
Next

Next
ActiveCell.CurrentRegion.Clear
Application.ScreenUpdating = True
MsgBox "Fin du traitement"
Exit Sub
nada:
MsgBox "Vous avez pas choisi un emplacement"
'Will-Fread
End Sub

vous pouvez la modifier et l’adapter a vos besoin.

Cordialement

Bonjour

Je vais tester mais modifier ça va être compliqué car j’y connais rien en macro

Merci

1 « J'aime »

:smile: :smile: si j’aurais de temps libre, je pourrais peut être vous aider mais je vous promets rien.

pas mal ta macro manque juste les 4 premiers chiffres du nom de mon fichier a rajouter au dossier et ca serait parfait

1 « J'aime »

je vois que j’ai mal interpréter la question, donc au moment de la création du fichier je le déplace :-1:

le fichier de hier avec le nouveau path vers D et 2 méthodes, on crée le fichier et on le déplace ou on créee le fichier directement sur le bon endroit
Jerome_Serton.xlsm (27,3 Ko)

Mais je pouvais modifier la méthode 1 pour boucler tous les fichiers, un peu comme Jacquinot (que je salue)

Je comprends ca me créer que 1 seul dossier et le nom est 1234 au lieu du nom du fichier

OUI, mais maintenant avec le bouton « Déplacer » et le choix du chemin des fichiers PDF actuel.
Jerome_Serton.xlsm (32,3 Ko)

ca bug chez moi

c’est l’avant-dernier fichier, non ? Vous vouliez quelque chose qui déplacait directement tous les pdfs, donc la macro « déplacer » ans le dernier ichier.

en fait le code de jacqinot fonctionne tres bien comme je veux juste faudrait que jarrive a recuperer les 4 premiers chiffres du nom des fichiers et l integrer au debut du nom de dossier et la date apres

1 « J'aime »
Sub classement()
     Dim Emplacement As String, sDossier, sNouveau, s
     Dim Groupe_fichier As Object
     Dim Fichier As Object
     Dim n As Integer, n1 As Integer, n2 As Integer
     Dim dossier As Range
     Dim a     As FileDialog

     Set a = Application.FileDialog(msoFileDialogFolderPicker)
     If a.Show = False Then Exit Sub
     Emplacement = a.SelectedItems(1)
     Set Groupe_fichier = CreateObject("scripting.filesystemobject").getfolder(Emplacement)
     Application.ScreenUpdating = False

     For Each Fichier In Groupe_fichier.Files
          n = n + 1
          If n Mod 100 = 0 Then Application.StatusBar = Format(n, "#,###") & Space(5) & Fichier.Name     'montrer le nom de chaque centième fichier
          If LCase(Fichier.Name) Like "#### *.pdf" Then     'fichier est un pdf qui commence avec 4 chiffres et un espace
               n1 = n1 + 1
               'Debug.Print Format(n, "#,###"), n1, Fichier.Name
               On Error Resume Next
               s = "": s = Left(Fichier.Name, 4) & "-" & Format(FileDateTime(Fichier), "mm-yyyy")     '4 chiffres du fichier & mois & année
               On Error GoTo 0
               If s = "" Then
                    MsgBox "problème, date inconnu", vbInformation, Fichier.Name
               Else
                    sDossier = Emplacement & "\" & s     'nom du dossier destination
                    If Dir(sDossier, vbDirectory) = "" Then MkDir sDossier     'créer, s'il n'existe pas encore
                    sNouveau = sDossier & "\" & Fichier.Name     'nom du fichier dans ce nouveau dossier
                    If Dir(sNouveau) <> "" Then     'vérifier s'il n'existe pas encore
                         MsgBox "pdf existe déjà", vbCritical, sNouveau
                    Else
                         n2 = n2 + 1
                         Name Fichier As sNouveau
                    End If
               End If
          End If
     Next
     Application.StatusBar = ""
     MsgBox Format(n, "#,###") & "  fichiers dans " & Emplacement & vbLf & n1 & " pdfs traité " & vbLf & n2 & " pdfs déplacé"

End Sub
1 « J'aime »

Super merci
Tout ce que je voulais

Plus qu’a étudier ca pour voir comment vous faites

J’ai juste 4 fichiers qui se déplace pas

C’est bon j’ai trouvé le soucis
A la place d’un espace c’était un tiret de mis

Merci encore

2 « J'aime »

supér, pourtant l’exemple était « 1001 BI029 201977 » sans tiret :innocent:

Je suis bien d’accord
Un gars a du se tromper en créant le nom du pdf

Merci encore