Interdire d'enregistrer sous un nom de fichier

baloo24 -  
eriiic Messages postés 24581 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 !

4 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  2. philmtjn Messages postés 62 Statut Membre 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
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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
  3. Zoul67 Messages postés 2001 Statut Membre 149
     
    Mettre le fichier en lecture seule ?

    :-)
    0
    1. Zoul67 Messages postés 2001 Statut Membre 149
       
      Qui m'a mis un "-" ? Au vu de la question, je trouve que ma réponse est tout à fait valable !
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      J'ai enlevé les -1 qui avaient été mis.
      eric
      0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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