Interdire d'enregistrer sous un nom de fichier
baloo24
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 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:
- Interdire d'enregistrer sous un nom de fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Audacity enregistrer son pc - Guide
- Fichier rar - Guide
4 réponses
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
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"
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"