Empêcher modification si pas enregistré sous autre nom
Bonjour,
après quelques recherches infructueuses je reviens vers vous :
j'ai un fichier de 18 feuilles, assez conséquent, créé après de nombreuses années d'expériences. Ce document doit être placé sur le réseau car régulièrement mis à jour et disponible pour plusieurs personnes différentes. Cependant, certains font parfois de fausses manips et enregistrent leur travail sur l’original qui se retrouve perdu, même si il est déjà en lecture seule.
Comment peut-on interdire la modification du fichier une fois ouvert tant que celui-ci n'est pas enregistré sous un autre nom que l'original par exemple ?
Merci à vous !
MEZIO47-63 a écrit :Bonjour,
Comment peut-on interdire la modification du fichier une fois ouvert tant que celui-ci n'est pas enregistré sous un autre nom que l'original par exemple ?
Merci à vous !
Bonjour,
A mes yeux, ce qui pose problème dans ta question ... c'est ' tant que ....' ...
Parce ce que le nom différent de l'original peut être n'importe quoi ... donc comment l'identifier ...???
Pourquoi permettrais-tu d'écraser l'original ... après une sauvegarde sous un autre nom ..???
Que se passerait-il ... si tu te contentais d'interdire la sauvegarde ... ( avec le nom original ...) ???
Bonjour à toi !
Je ne suis pas obligé de résonner que par rapport au nom du fichier, mais à l'emplacement où il est enregistré par exemple aussi non ?
je vois bien un truc du genre :
SI
"le nom du fichier" = Devis affaire xxx (devis étant le nom par défaut, à la personne de l'enregistrer avec le numéro d'affaire qui le concerne)
ET SI l'emplacement où il est enregistré = "emplacement réseau par défaut" (que je définirai)
ALORS interdire l'enregistrement et afficher un petit message rappelant que le fichier doit être enregistré autre part.
Que penses tu de quelque chose comme cela ?
Re,
J'ai l'impression que tu dois raisonner avec tous tes paramètres ... avant de déterminer la bonne solution ...
Il te faut imaginer tous tes cas de figures ... avec l'imagination des utilisateurs ...
De mon côté ... j'essaye de deviner tes contraintes ...
L'impression que j'ai ... c'est que tu as un Fichier Modèle que tu ne veux pas voir massacrer ...
Donc interdire qu'il soit sauvegardé avec son nom original me semble très logique ...
Pour le reste ... les emplacements ... je ne sais pas si tu dois vraiment intervenir ... sauf s'il existe une règle disciplinaire pré-établie
James007 a écrit :Re,
L'impression que j'ai ... c'est que tu as un Fichier Modèle que tu ne veux pas voir massacrer ...
Tout à fait
James007 a écrit :Re,
Pour le reste ... les emplacements ... je ne sais pas si tu dois vraiment intervenir ... sauf s'il existe une règle disciplinaire pré-établie
Non pas vraiment c'est juste que le fichier est placé à un endroit que tout le monde connait appelé "Documents type".
Je récapitule donc :
- je ne veux pas que l'on modifie mon fichier Modèle
- il est rangé dans un dossier "Documents type" sur le réseau
- tout le monde a le droit de le consulter
- si l'utilisateur tente de faire une modification, IL DOIT l'enregistrer avec un autre nom, quel que soit l'emplacement. Tant que le fichier n'est pas enregistré sous un autre nom, alors Lecture seule seulement (ou alors il fait ses modifis sur le fichier Modèle mais lors de l'enregistrement il est obligé de prendre un autre nom, le Modèle restera donc intact)
- on peut le copier/coller pourquoi pas
Concernant les différents cas de figure, je n'en vois pas d'autre que ceux évoqués ci-dessus. Mais je vais y réfléchir encore
Merci en tous cas
Re,
Dans un premier temps .... à placer dans le module ThisWorkbook ... de ton Fichier Modèle ...
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' A adapter en remplaçant NomInterdit par le Nom de ton Fichier Modèle '''''''''''''''''''''''''''''''''''''''
Dim strNomFichier As String
Const strNomInterdit As String = "NomInterdit.xlsm"
Application.EnableEvents = False
strNomFichier = Application.GetSaveAsFilename(fileFilter:="Microsoft Office Excel Workbook (*.xlsm), *.xlsm")
strNomFichier = Mid$(strNomFichier, InStrRev(strNomFichier, "\") + 1)
If UCase$(strNomFichier) = UCase$(strNomInterdit) Then
MsgBox "Pour Sauvegarder ... Merci de modifier le Nom du Fichier", vbCritical, "Stop"
Else
ActiveWorkbook.SaveAs strNomFichier
End If
Cancel = True
Application.EnableEvents = True
End SubEn espèrant que cela t'aide ...
Impressionnant...
je l'ai testé ça marche super, la seule chose qui gêne c'est que du coup je ne peux moi même pas l'enregistrer avec ce code. Mais j'ai trouvé la parade : je renomme simplement le fichier après coup
merci beaucoup encore tu ne fais que m'aider ahah^^
Pardon du double post mais une petite question :
peut-on doubler la sécurité en faisant en sorte que lorsque l'on clique sur enregistrer ou enregistrer sous le nom du fichier s'incrémente automatiquement ? Par exemple avec la date du jour et l'heure.
merci
MEZIO47-63 a écrit :Impressionnant...
je l'ai testé ça marche super, la seule chose qui gêne c'est que du coup je ne peux moi même pas l'enregistrer avec ce code. Mais j'ai trouvé la parade : je renomme simplement le fichier après coup
merci beaucoup encore tu ne fais que m'aider ahah^^
Re,
Merci pour ton compliment
Impressionnant...
et ... Content que cela solutionne ton problème ...