Système de classement et save NDF

Bonjour,
Je me permet de demander ici de l'assistance j'ai une feuille de calcule (alias Note de frais) que j'aimerais une fois appuyer sur le bouton Save sa l'enregistre dans un fichier existant ou non dans un endroit prédéfini.
je veux par exemple qu'il vérifie si le dossier 2023 et crée ou non si il est pas existant il le crée puis enregistre le fichier avec pour nom le mois qui sera indiqué dans la cellule "D9" (format mm) suivie d'une parenthèse fermante puis les informations dans la cellule "L1" (qui contient "Note de Frais") et le mois de nouveau (format mmm) et l'année (en format yyyy) qui devrais normalement donnée : 01) Note de Frais janv 2023.xlsx

J'ai essayer de par moi même en bidouillant un peut, j'ai bidouiller mais je n'y arrive pas d'où le fait que je demande de l'aide si joint le fichier et le code.
Si il y a possibilité de m'expliqué le / les problèmes merci

Public ctrl As Boolean, var_m As Byte, var_a As Byte, nomfich As String 'en declarant les variables ici elles sont valables pour toutes les macros

Sub Save()
  Application.ScreenUpdating = False 'supprime l'affichage donc + rapide
  Application.DisplayAlerts = False '(supprime les messages)
  Dim i As Byte, n_fichier As String, wk As Workbook, n_feuille As String, sh As Worksheet, prem_date As Date, no_semaine As Byte 'déclaration des variables propre à cette macro
  nomfich = ActiveWorkbook.Name
  prem_date = DateSerial(year(Range("B19").Value), 1, 1) '1°janvier
  ctrl = True 'pour que les macros combobox change ne fonctionne pas
  ActiveWorkbook.Save 'sauvegarde du fichier
  n_feuille = Format(Range("B19").Value, "mm") & ")" & " " & Range("L1") & "_" & Format(Range("B19").Value, "mmm yyyy") 'nom de la feuille= date+nom+date exemple : 11) NOTE DE FRAIS_nov 2022.xlsx
    ActiveSheet.Copy After:=Sheets(Sheets.Count) 'copy la feuille en dernier
    ActiveSheet.Name = n_feuille 'renomme la feuille
    Set sh = ActiveSheet 'affecte cette feuille à une variable
  n_fichier = "C:\Users\[mon profil]\OneDrive\Travail - Maison\Note de Frais\" & n_feuille & ".xlsx" 'chemin et nom du fichier
  Set wk = Workbooks.Add(xlWBATWorksheet) 'ajoute un fichier
  sh.Copy After:=wk.Sheets(Sheets.Count) 'copie la feuille dans ce fichier
  Sheets("Feuil1").Delete 'supprime la feuille créé à la creation du fichier
  ActiveWorkbook.SaveAs Filename:=n_fichier, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 'sauvegarde le fichier avec cette feuille
  ActiveWorkbook.Close 'ferme le fichier
  sh.Delete 'supprime la feuille ajouté dans le fichier principal
  ctrl = False ' supprime la variable ctrl
  Sheets("NDF").Select 'selectionne la feuille tableau
  Application.ScreenUpdating = True 'affichage en service
  Application.DisplayAlerts = True 'alerte possible
  MsgBox ("Fichier sauvegardé sous " & n_fichier) 'message...
End Sub

Bonjour,

Une proposition en pièce jointe. J'ai utilisé un objet "FileSystemObject" qui offre beaucoup de possibilités au niveau manipulations des fichiers et de leur contenus.

Les explications sont dans le code et à disposition si tu as besoin d'infos complémentaires.

Bonjour,

tu devrais nommer tes fichiers sous la forme aaaa-mm xxxx.xlsm
Ca te permet de les avoir de façon chronologique dans l'explorateur de fichier.
Là tu vas avoir tous les mois de janvier, puis ceux de février, etc
eric

Bonjour Eric,

Non au contraire ça sera ranger dans des dossiers suivant l'année puis après dans l'ordre chronologique dans chaque dossier par rapport au mois renseigné

Merci de vos réponse ^_^

Rechercher des sujets similaires à "systeme classement save ndf"