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 ^_^