restriction de l'enregistrement d'un classeur

criscris11

XLDnaute Accro
Bonsoir à tous,
Est il possible de restreindre l'enregistrement d'un classeur par exemple uniquement si l'utilisateur connaît le mot de passe requis et s'il ne le connaît pas il peut juste le fermer sans enregistrer ?
Bonne soirée.
 

chris

XLDnaute Barbatruc
Re : restriction de l'enregistrement d'un classeur

Bonjour
Tu peux en VBA gérer l'événenement beforesave du classeur pour y insérer une demande de mot de passe et annuler la sauvegarde pour une simple fermeture si la réponse n'est pas satisfaisante.
Cependant rien n'empêche l'utilisateur d'ouvrir sans macro, de modifier et d'enregistrer.
 

criscris11

XLDnaute Accro
Re : restriction de l'enregistrement d'un classeur

Salut Chris (l'unique),
Je veux bien tester si tu as un bout de code qui peut faire çà et je verrais si cela peut m'apporter quelque chose qui correspond à ma requête. Pour info, à l'ouverture de mon classeur toutes les feuilles sont protégées par un mot de passe mais c'est vrai l'utilisateur peut toujours l'ouvrir sans activer les macros donc à voir. Merci à toi et bonne soirée.
 

BenHarber

XLDnaute Occasionnel
Re : restriction de l'enregistrement d'un classeur

Bonjour Criscris & Chris (on dirait presque un titre de film !)
Le + simple ne serait-il pas de mettre un mot de passe pour l'ouverture en lecture seule (dans ce cas l'utilisateur ne peut rien faire d'autre que lire le document sans le modifier) et un mot de passe pour l'acces en écriture ?
Via Fichier / Enregistrer sous / Option et là tu définis tes mots de passe..

Je ne sais pas si ça réponds pas à ton pb.

Cordialement,
 

criscris11

XLDnaute Accro
Re : restriction de l'enregistrement d'un classeur

Re,
Je viens de tester l'idée de Benharber mais il y a un hic car l'utilisateur a le choix s'il le désire d'enregistrer quand même une copie via enregistrer sous (voir le fichier-joint) et ce n'est pas le but non plus mais bien vu quand même.
 

Pièces jointes

  • Classeur1.xls
    22.5 KB · Affichages: 52
  • Classeur1.xls
    22.5 KB · Affichages: 58
  • Classeur1.xls
    22.5 KB · Affichages: 51

criscris11

XLDnaute Accro
Re : restriction de l'enregistrement d'un classeur

Bonjour à tous,
En fouinant ici et là, j'ai essayé avec cette macro :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.Run "'Matrice BDD BCL.xls'!ProtectionToutesLesFeuillesMDP"
Sheets(Array("ETAT MILIT", "ETAT CIVIL", "DIP ET STG", "PERMIS", _
"CONTRAT PASSEPORT", "TRESO", "SANTE", "CHANC", "PERMS", "NOT. ORIENTATIONS", "COVAPI")). _
Select
Range("B3").Select
Sheets("MENU").Select
End Sub

Peux t'on adapter une demande de mot de passe à cette macro, c'est à dire que si l'utilisateur ne connaît pas le mot de passe requis, il faudrait que ce soit celle-ci qui de déclenche :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Run "'Matrice BDD BCL.xls'!ProtectionToutesLesFeuillesMDP"
Sheets(Array("ETAT MILIT", "ETAT CIVIL", "DIP ET STG", "PERMIS", _
"CONTRAT PASSEPORT", "TRESO", "SANTE", "CHANC", "PERMS", "NOT. ORIENTATIONS", "COVAPI")). _
Select
Range("B3").Select
Sheets("MENU").Select
End Sub

Merci à tous et si vous avez des questions, n'hésitez-pas.
 

chris

XLDnaute Barbatruc
Re : restriction de l'enregistrement d'un classeur

Bonjour criscris11
J'avais bricolé un truc le 1er sept mais je n'avais pas le temps de le tester et après je l'ai oublié.
Vois si ça répond à ton besoin. Le mot de passe est toto.
Par contre je vois pas la différence entre tes 2 codes à part la variable ByVal SaveAsUI As Boolean dans le 1er et pas dans l'autre.
@+
 

Pièces jointes

  • password.xls
    35.5 KB · Affichages: 70
  • password.xls
    35.5 KB · Affichages: 80
  • password.xls
    35.5 KB · Affichages: 74

criscris11

XLDnaute Accro
Re : restriction de l'enregistrement d'un classeur

Bonjour Chris,
Malheureusement cela ne colle pas car si tu cliques sur "annuler" dans l'useform qui se déclenche quand tu veux quitter ou sauvegarder, les modifications sont prises en compte : j'ai fait le test et quand j'ai rouvert le fichier après, les modifications avaient été enregistrées. Mais je pense que cela doit être dû à un oubli dans le code ou à quelque chose de ce style.
Pour répondre à ta question, oui effectivement il n'y a pas grande différence mais s'il était possible d'inclure une demande de mot de passe dans la première cela devrait résoudre mon problème. En fait les deux macros de tout à l'heure sont juste là pour qu'à la fermeture ou à la sauvegarde du fichier que toutes les feuilles soient reprotégées, que dans toutes les feuilles la cellule B3 soit sélectionnée et que la feuille "menu" soit la feuille active : cela ne joue en rien sur ma demande sauf si on arrive à demander à l'utilisateur un mot de passe pour enregistrer.
Merci à toi et à bientôt.

Sinon avec la solution de Benharber, j'ai peut-être trouvé une solution mais je ne sais pas où l'inclure dans la macro BeforeSave : en fait c'est de squizzer l'option enregistrer sous avec cette ligne :
If SaveAsUI = True Then Cancel = True
J'ai essayer de la mettre au début du code (1ère ligne après Private Sub Workbook_beforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)) mais cela ne fonctionne pas : cela vaut peut-être l'occasion d'explorer cette piste.
 

criscris11

XLDnaute Accro
Re : restriction de l'enregistrement d'un classeur

Chris,
Il se peut que j'ai oublié d'insérer le module dans le fichier que j'ai testé. Je refais la manip et te tiens au courant, bien sûr. Sinon que penses tu de la dernière partie du message (concernant l'idée de Benharper), peux-t'on inclure la ligne en question dans ma macro BeforeSave (juste pour savoir si c'est faisable et pour m'endormir moins bête ce soir) ?
Merci encore .
 

criscris11

XLDnaute Accro
Re : restriction de l'enregistrement d'un classeur

Re,
Ouais il va falloir jongler pour mettre ton code dans le mien : je vais essayer toutes les solutions possibles jusqu'à trouver la bonne chrono. Si tu as une idée, tu es la bienvenue mais tu as bien bossée donc tu peux te reposer sans problème (car c'est samedi soir).
Amitiés Excelliennes.
 

chris

XLDnaute Barbatruc
Re : restriction de l'enregistrement d'un classeur

Re
A mon avis il suffit de

If niet = 1 Then
Cancel = True
Else
ton code ' car s'il n'y a pas de sauvegarde, la protection et tout ça ne sert plus à rien
endif

Bon, c'est l'heure du frichti.

Bonne soirée et Dimanche.
 

criscris11

XLDnaute Accro
Re : restriction de l'enregistrement d'un classeur

Re Chris,
J'ai essayé et cela a l'air de fonctionner pour l'instant mais je n'ai pas encore fini la batterie de tests. Y a t'il moyen de prévenir l'utilisateur s'il rentre un mauvais mot de passe que le classeur va se fermer sans pouvoir enregistrer les modifications (et par ce fait de compléter ta macro afin d'obtenir le message et la fermeture du classeur si le mot de passe correct n'est pas saisi, enfin si tu as encore un peu de temps à me consacrer).
En te remerciant par avance, je te souhaite une bonne soirée et un bon dimanche.
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 882
Membres
103 009
dernier inscrit
dede972