interdire enregistrer mais pas enregistrer sous

sri75

XLDnaute Occasionnel
Bonjour j'ai un fichier que je désire faire enrgistrer uniquement à l'aide d'un bouton qui lance une macro de type saveas.

j'ai essayé d'adapter le code suivant récupéré sur la forum mais ca ne marche pas.

Mon adaptation fonctionne pour un opération manuelle ( clic sur icone ou enregistrer sous du menu mais pas en faisant appel à la fonction saveas qui est alors considérée comme un 'enregistrer'.

Merci de votre aide.

INTERDIRE ENREGISTRER SOUS.

De : _Thierry sur Excel-Downloads.

Code à mettre dans le Private Module de 'ThisWorkBook'

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' SaveAsUI est VRAI si on vient de Fichier / Enregistrer sous
' et FAUX si on vient de Fichier / Enregistrer
' si on met Cancel à VRAI, l'enregistrement n'a pas lieu
If SaveAsUI = True Then
MsgBox 'Le changement de nom est interdit !', vbExclamation + vbOKOnly, 'Attention'
Cancel = True
End If
End Sub
 

ERIC S

XLDnaute Barbatruc
re

donc tu voudrais n'autoriser l'enregistrement que si le nom change ?

j'avoue que j'ai du mal à comprendre ton fil car tu commences enparlant de saveas et ensuite tu donnes un exemple qui interdit l echangement de nom

Que veux-tu ?
 

sri75

XLDnaute Occasionnel
Je vais essayer d'être plus clair.

Ce fichier sert à saisir des données qui sont récupérées dans une macro pour se rajouter au nom du fichier lors de l'enregistrement via un bouton macro ( le fameux saveas ).

La récupération de ces données étant obligatoire le fichier doit être sauvegardé que par l'utilisation du bouton macro et en aucun cas par les menus 'enregistrer' ou 'enregistrer sous' qui ne permettent pas de récupérer les données stockées dans les variables de ma macro.

j'espère avoir été plus clair cette fois.

Merci encore pour ton aide.
 
T

Temjeh

Guest
Bonjour à tous

Pour le enregistrer sous la personne pourra toujours enregistrer sous en remplacent le classeur actuel.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.Dialogs(xlDialogSaveAs).Show
End Sub

Pour empêcher cela tu devras y automatisé une sauvegarde dans:(si tu la veut on peut te la faire)

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
inputbox ....sous quel nom voulez-vous sauvegarder?
ActiveWorkbook.SaveAs Filename:= _
'ton chemin\\input & .xls', FileFormat:= _
xlNormal, Password:='', WriteResPassword:='', ReadOnlyRecommended:=False _
, CreateBackup:=False
End Sub

Pour lecture seul regarde le zip (code 1234)

A+

Temjeh
[file name=Lecture_seule.zip size=15780]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Lecture_seule.zip[/file]
 

Pièces jointes

  • Lecture_seule.zip
    15.4 KB · Affichages: 135

sri75

XLDnaute Occasionnel
Le fichier zippé de thierry est protégé par un mot de passe.

La solution serait peut être d'interdire toute commande via les menus au profit de la commande macro.

J'avais aussi pensé masquer les commandes du menu mais à ce moment là celui qui a saisi les données ne peut plus quitter excel.

je craque un peu !

Merci à tous
 

sri75

XLDnaute Occasionnel
Finalement la solution était très simple :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call enreg
Exit Sub

enreg étant ma macro qui récupère les données dans les variables.

Si l'utilisateur clique sur enregistrer il chaine directement sur la macro qui prend en compte les paramètres. C'est pas totalement béton mais c'est un grand pas.
 

Discussions similaires

Statistiques des forums

Discussions
312 342
Messages
2 087 432
Membres
103 543
dernier inscrit
YannBernard