Interdire d'enregistrer sous un nom de fichier

baloo24 -  
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à Tous ! J'ai un fichier matrice que j'appelle X sur lequel je souhaiterai que les utilisateurs ne puisse pas enregistrer sous le nom X. Comment faire ? D'avance merci ! Bonnes vacances à ceux qui y sont et bon courage aux autres !
A voir également:

4 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Dans le module ThisWorkBook :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim rèpDialogue As Variant         'Réponse de la boite de dialogue Excel
Dim nomFichier As String           'Nom du fichier original
Dim nomProposé As String           'Nom de fichier proposé ou saisi 
Dim txt As String                  'Titre de la boite de message
Dim msg As String                  'Message pour boite de message
Dim rép As Integer                 'Réponse à une boite de message

Application.EnableEvents = False
'Proposer l'enregistrement (nomfichier-1.xlsm)
nomFichier = ThisWorkbook.Name
nomProposé = Mid(nomFichier, 1, InStrRev(nomFichier, ".") - 1) & _
             "-1" & _
             Mid(nomFichier, InStrRev(nomFichier, "."))
txt = "Enregistrer le fichier avec autre nom"
Do
  rèpDialogue = Application.GetSaveAsFilename(InitialFileName:=nomProposé, _
                  FileFilter:="Classeur Excel (*.xlsm) , *.xlsm", Title:=txt)
  If rèpDialogue = False Then
    Application.EnableEvents = True
    Cancel = True
    Exit Sub
  End If
  nomProposé = StrReverse(rèpDialogue)
  nomProposé = StrReverse(Mid(nomProposé, 1, InStr(1, nomProposé & "\", "\") - 1))
  If nomProposé = nomFichier Then
    msg = "Vous ne pouvez pas enregistret le fichier avec " & vbCr & _
          "le même nom, que l'original (" & nomFichier & ")" & vbCr & vbCr & _
          "Saisir un autre nom."
    rép = MsgBox(msg, vbExclamation + vbOKCancel, txt)
  End If
Loop While nomProposé = nomFichier
On Error GoTo ErrorHandler
ActiveWorkbook.SaveAs Filename:=nomProposé
On Error GoTo 0
Application.EnableEvents = True
Cancel = True
Exit Sub

ErrorHandler:          'Routine de gestion d'erreur.
'------------
'Évalue le numéro d'erreur.
Select Case Err.Number
  Case 1004
    'Le fichier existe déjà ou l'enregistrement à été annulé
    If Err.Description = "La méthode 'SaveAs' de l'objet '_Workbook' a échoué" Then
      Resume Next
    Else
      'Le fichier est déjà ouvert
      MsgBox "L'enregistrement à échoué :" & vbCr & vbCr & Err.Description, vbInformation, txt
      Resume Next
    End If
  Case Else
    MsgBox Err.Description, vbCritical, txt
    Resume Next
End Select
End Sub
0
philmtjn Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonjour,

S'il faut garder toutes les "versions" enregistrées, il suffit d'ajouter la date entre le nom de fichier et l'extention.

S'il faut garder une version par personne qui enregistre, il faut regarder s'il y aurait pas une variable système avec l'identifiant réseau et la rajouter au nom de fichier... exemple : X & Environ("UserName") &".xls"

0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
J'ai un fichier matrice que j'appelle X sur lequel je souhaiterai que les utilisateurs ne puisse pas enregistrer sous le nom X
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Mettre le fichier en lecture seule ?

:-)
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Qui m'a mis un "-" ? Au vu de la question, je trouve que ma réponse est tout à fait valable !
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
J'ai enlevé les -1 qui avaient été mis.
eric
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

sinon tu peux l'enregistrer en tant que modèle (*.xlt ou *.xltx)
L'utilisateur aura un fichier neuf à chaque fois et ton modèle sera préservé.

eric
0