Application.Workbooks.Add
ActiveWorkbook.SaveAs Filename:="Fichier du " & Format(Date, "dddd d mmm yyyy")
Lors de la première exécution de ce code pas de problèmes.
Variante 1:
Je ferme le classeur ouvert.
Mais dès la deuxième exécution le même jour, j'ai un message qui m'indique qu'un fichier du même nom existe déjà et si je veux le remplacer.
Jusque là tout me va.
Si je clique sur oui pas de soucis le fichier est écrasé (selon ma volonté).
Mais si je clique sur non ou sur annuler j'ai une erreur de Script: "La méthode 'SaveAs' de l'objet '_Workbook' a échoué"
Variante 2:
Je laisse le classeur ouvert.
Je met le classeur avec le code en premier plan et je réexécute le code.
Et là erreur de script: "Impossible d'enregistrer ce classeur sous le même nom qu'un autre classeur [...] ouvert.[...]"
Je sais que je n'ai plus d'erreurs en mettant à la place ce code
Code:
Application.DisplayAlerts = False
Application.Workbooks.Add
ActiveWorkbook.SaveAs Filename:="Tarot du " & Format(Date, "dddd d mmm yyyy")
Application.DisplayAlerts = True
Mais je ne veux pas qu'il écrase le fichier.
Donc méthode non acceptée.
Je voudrais qu'au lieu de me mettre des erreurs de script, Excel me propose de modifier le nom du fichier ou alors rajoute automatiquement (x) à la fin du fichier (où x est un entier ou une lettre non utilisés).
Application.Workbooks.Add
ActiveWorkbook.SaveAs Filename:="Fichier du " & Format(Date, "dddd d mmm yyyy") & "x" &Format(Time("mm-ss")
Une autre modif
Code:
Dim rnb As Integer
rnb = Int(Rnd() * (90 - 65) + 65) 'création d'un chiffre entre 65 et 90
Application.Workbooks.Add
ActiveWorkbook.SaveAs Filename:="Fichier du " & _
Format(Date, "dddd d mmm yyyy") & LCase(Chr(rnb)) & Format(Time,"ss")
End Sub
En fait le x je m'en fous un peu.
C'était juste pour avoir quelque chose après mon nom pour éviter qu'il y ait le même nom.
En fait je ne veux mettre quelque chose après "Fichier du jeudi 14 juin 2007" que si ce fichier existe déjà dans le dossier de destination et ce quelque chose j'aimerai que ce soit un entier non déjà utilisé de telle façon que le nouveau nom du classeur n'existe pas dans mon dossier.
Une sorte de vérification pour savoir si le nom du classeur existe déjà si non on enregistre et si oui on rajoute "(1)" et on revérifie l'existence. Si ce nom de fichier existe déjà alors on rajoute non pas "(1)" mais "(2)".
J'espère que c'est pas trop compliqué à comprendre.
Et voici une facon de traiter un backup
Sub backupBYDATE()
'Don Guillett, misc, 2000-05-08 modified filename for date......
'documented in Backup your files, always take backups
Dim dname as String, strTest as String
dname = "c:\mybackup\B" & Format(Now(), "yyyy_mmdd")
strTest = Dir(dname, vbDirectory)
If (strTest = "") Then MkDir (dname)
ActiveWorkbook.SaveCopyAs dname & "\BK_" & ActiveWorkbook.Name
ActiveWorkbook.Save 'also save current file
End Sub
Voici le code que j'ai finalement utilisé pour enregistrer mon nouveau classeur sous un nom défini en vérifiant tout d'abord que ce nom n'existe pas déjà:
Code:
If FileExists("Fichier du " & Format(Date, "dddd d mmm yyyy") & ".xls") Then Application.Dialogs(xlDialogSaveAs).Show ("Fichier du " & Format(Date, "dddd d mmm yyyy") & " (1)") Else ecraser_sans_avertissement
Avec
Code:
Function FileExists(sFileName As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(sFileName) And vbDirectory) = 0)
End Function
Sub ecraser_sans_avertissement()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="Fichier du " & Format(Date, "dddd d mmm yyyy")
Application.DisplayAlerts = True
End Sub