VBA, lecture seul

Fermé
pirate - 9 août 2018 à 12:19
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 10 août 2018 à 00:10
Bonjour à tous,

J'essaye de sécuriser au maximum un fichier lorsque il est ouvert en lecture seul.
Je m'explique, lorsque on ouvre le fichier il demande un mot de passe ou de l'ouvrir en lecture seul, si je l'ouvre en lecture seul, j'aimerais bloquer, la saisie, l'enregistrement, etc.

J'en suis à la:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Me.ReadOnly = True Then
Application.Undo
MsgBox "Ce fichier est en lecture seule, la saisie n'est pas autorisée"
ThisWorkbook.Saved = True
End If
Application.EnableEvents = True
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ActiveWorkbook.ReadOnly = True Then
SaveAsUI = False
Cancel = True
End If
End Sub


Le problème est que parfois, la boite de dialogue qui demande si je souhaite enregistrer le document au moment ou je le ferme s'affiche et permet donc l'enregistrement sous.

Le but de tous ça est d'empêcher mes collègues (très très très novice en excel) qui vont l'utiliser de créer plusieurs copie du même document.

Merci d'avance pour votre aide!!

2 réponses

rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
9 août 2018 à 14:39
Une methode qui n'est pas très très jolie consiste à utiliser cela :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Close False
End Sub

Cela aura pour effet de fermer le classeur excel sans demander d'enregistrer le fichier mais cela laissera également une fenêtre excel grise vide.
Il y a surement un meilleur moyen, mais celui-ci fonctionne.
Bonne journée.
0
Merci beaucoup!!

J'ai trouve autres choses qui fonctionne super bien.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.ReadOnly = True Then
Application.ThisWorkbook.Saved = True 'Informe Excel que le fichier a déjà été enregistré (cela évite d'avoir une demande d'enregistrement à la fermeture)
End If
End Sub
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
10 août 2018 à 00:10
Bonjour,

un peu tard mais peut-être que ça resservira.
Tu peux te passer de la supervision des modifs.
'Enregistrer sous...', à gauche du Bouton Enregistrer tu as une liste déroulante Outils.
Dans Options générales tu peux choisir un mot de passe pour interdire les modifications plus une case à cocher Lecture seule recommandée.
Dans ton cas il reste le SaveAs et le Close à traiter quand même.
eric
0