Bonjour,
Voici un essai sachant que je recommande d'utiliser la date et l'heure ce qui ajoute une précision supplémentaire et aère beaucoup le code. J'ai laissé 2, 3 commentaires pour les détails à contrôler. Je pourrais mieux expliquer si besoin :
'MODULE THISWORKBOOK
private sub workbook_beforeclose(cancel as boolean)
me.save
call sauvegarde(me.name)
end sub
'MODULE STANDARD
sub sauvegarde(NomClasseur$)
dim spath$
dossier = "C:\DOSSIERS\Rapport\" '<<<< ADAPTER CHEMIN
spath = dossier & replace(Format(Date, "YYYY-MM"), "-", "\") & "\" '<<<< dossiers mois supposés "01", "02", ..., "12"
if not creerdossiers(spath) then
msgbox "Une erreur s'est produite ! Vérifiez l'accès au lecteur et contrôlez le chemin renseigné...", 16, "Opération annulée"
exit sub
end if
chemin = spath & NomClasseur & " " & format(Now, "YYYYMMDD HHMMSS") & ".xlsm" '<<<<<<<<< OPTION HORODATAGE
'fichier = dir(spath & NomClasseur & " " & format(Date, "YYYYMMDD") & "*.xls*") 'SINON OPTION NUMERO (lignes désactivées)
'while fichier <> ""
' n = n + 1
' fichier = dir
'wend
'chemin = spath & NomClasseur & " " & format(Date, "YYYYMMDD") & " " & n + 1 & ".xlsm"
thisworkbook.savecopyas chemin
end sub
'MODULE STANDARD
function creerdossiers(chemin$) as boolean
t = split(chemin, "\")
if ubound(t) > 0 then rep = t(0) else exit function
for i = 1 to ubound(t)
rep = rep & "\" & t(i)
on error resume next
if dir(rep, vbdirectory) = "" then mkdir rep
if err.number > 0 then err.clear: exit function
next i
creerdossiers = true
end function
Cdlt,