Interdire d'enregistrer sous un nom de fichier

Fermé
baloo24 - 6 août 2013 à 16:33
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 - 28 août 2013 à 16:03
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
7 août 2013 à 23:52
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 mardi 3 août 2004 Statut Membre Dernière intervention 26 juillet 2017 4
27 août 2013 à 13:15
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
27 août 2013 à 22:44
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 lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
28 août 2013 à 10:21
Mettre le fichier en lecture seule ?

:-)
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
28 août 2013 à 13:45
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 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
28 août 2013 à 16:03
J'ai enlevé les -1 qui avaient été mis.
eric
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
28 août 2013 à 13:12
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