Problème Protection/déprotection

  • Initiateur de la discussion mec94
  • Date de début
M

mec94

Guest
Bonjour,

Voilà j'ai un petit soucis. J'ai crée 2 profils un en lecture et un en mise à jour. Tout se passe dans le ThisWorkBoot.

Mon fichier au moment de l'ouvrir se trouve dans le profil lecture. Si je saisie le mot de passe pour mise à jour alors je déprotège mon classeur ci dessous le code :

Private Sub Workbook_Open()
'
' Positionner :
' - la variable VariableBooleanSave qui permet de savoir si l'on peut (profil mise à jour) ou non
' (profil lecture) sauvegarder le fichier en quittant
'
' - la variable VariableIdentite qui permet de savoir si les macros dans le module BarreCRA
' peuvent (profil mise à jour) ou non (profil lecteure) s'executer
'
VariableBooleanSave = True
VariableIdentite = False
'
' Récupération du mot de passe
'
Identité = InputBox("veuillez saisir le mot de passe", "Mot de passe", "")
'
' Première Identité testée = Mise à jour
'
If Identité = "Mise à jour" Then
MsgBox ("Attention Le Classeur sera automatiquement enregistré à la fermeture")
VariableIdentite = True
For J = 1 To Sheets.Count
Sheets(J).Unprotect Identité
Next
VariableBooleanSave = False
ActiveWorkbook.Protect Identité, Structure:=False, Windows:=False
Sheets("Paramètres").Visible = True
Else
If Identité <> "Lecture" Then
ThisWorkbook.Close
Application.Quit
End If
End If
'
End Sub

Quand je quitte le classeur si je suis en profil Mise à jour je sauvegarde le classeur que je dois mettre en profil lecture ci dessous le code :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'
If VariableIdentite = False Then Exit Sub
'
' Carctéristiques du Tableau Calendrier :
'
' Pcol = Première colonne
' Dcol = Dernière colonne
' Plig = Première ligne
' Dlig = Dernière ligne
Pcol = [Paramètres!E15]
Dcol = [Paramètres!E16]
Plig = [Paramètres!E18]
Dlig = [Paramètres!E19]
Dim fin#
'
' Mise en état de lecture avant fermeture du classeur
' (le profil par défaut du classeur est lecture)
'
Sheets("Paramètres").Select
ActiveWindow.SelectedSheets.Visible = False
'
For i = 1 To Sheets.Count
'
' Si la feuille traitée est une feuille mensuelle
' autoriser la selection des événements
'
If ActiveSheet.Name = "Janvier" Or ActiveSheet.Name = "Février" Or ActiveSheet.Name = "Mars" Or ActiveSheet.Name = "Avril" Or ActiveSheet.Name = "Mai" Or ActiveSheet.Name = "Juin" Or ActiveSheet.Name = "Juillet" Or ActiveSheet.Name = "Août" Or ActiveSheet.Name = "Septembre" Or ActiveSheet.Name = "Octobre" Or ActiveSheet.Name = "Novembre" Or ActiveSheet.Name = "Décembre" Then
'
' Date de fin de mois pour connaître le nombre de jour
'
fin = DateSerial(ActiveSheet.Name.b1, ActiveSheet.Name.b2 + 1, 1 - 1)
ActiveSheet.Name.C3.Value = [fin]
Range(Cells(Plig + 2, Pcol), Cells(Dlig, Pcol + fin)).Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.EnableSelection = xlUnlockedCells
' ActiveSheet.Range(Cells(Plig + 2, Pcol), Cells(Dlig, Pcol + [fin])).Locked = False
' ActiveSheet.Range(Cells(Plig + 2, Pcol), Cells(Dlig, Pcol + [fin])).FormulaHidden = False
End If
'
Sheets(i).Protect Identité, DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets(i).EnableSelection = xlNoSelection
'
Next
'
ActiveWorkbook.Protect "Mise à jour", Structure:=True, Windows:=False
ActiveWorkbook.Save
'
End Sub

Et pourtant je n'arrive pas à déprotéger les cellules contenues dans le calendrier et contenant des listes déroulantes pour la saisie de mon compte rendu mensuel.

Quelqu'un peut m'aider ????


Voilà le fichier joint : http://cjoint.com/?fzm6qaKvFU :confused:

:)

Merci
 
M

mec94

Guest
Re : Problème Protection/déprotection

Pour être plus précis, lorsque je quitte le classeur et que je suis en profil mise à jour, je sauvegarde le classeur en profil lecture et ne laisse pour certaines feuilles que la possibilité de sélectionner dans le tableau des jours du mois, par liste déroulante contenus dans les cellules. Mais voilà tout reste protégé je n'arrive a protéger la feuille à l'exception du tableau. voilà le code (de plus j'ai des problèmes avec la variable fin qui à l'air vide) :

For i = 1 To Sheets.Count
'
' Si la feuille traitée est une feuille mensuelle
' autoriser la selection des événements
'
If ActiveSheet.Name = "Janvier" Or ActiveSheet.Name = "Février" Or
ActiveSheet.Name = "Mars" Or ActiveSheet.Name = "Avril" Or ActiveSheet.Name
= "Mai" Or ActiveSheet.Name = "Juin" Or ActiveSheet.Name = "Juillet" Or
ActiveSheet.Name = "Août" Or ActiveSheet.Name = "Septembre" Or
ActiveSheet.Name = "Octobre" Or ActiveSheet.Name = "Novembre" Or
ActiveSheet.Name = "Décembre" Then
'
' Date de fin de mois pour connaître le nombre de jour
'
fin = DateSerial([b1], [b2] + 1, 1 - 1)
[C3].Value = [fin]
Range(Cells(Plig + 2, Pcol), Cells(Dlig, Pcol + fin)).Select
Selection.Locked = False
Selection.FormulaHidden = False
End If
Sheets(i).Protect Identité, DrawingObjects:=True, Contents:=True,
Scenarios:=True
If ActiveSheet.Name = "Janvier" Or ActiveSheet.Name = "Février" Or
ActiveSheet.Name = "Mars" Or ActiveSheet.Name = "Avril" Or ActiveSheet.Name
= "Mai" Or ActiveSheet.Name = "Juin" Or ActiveSheet.Name = "Juillet" Or
ActiveSheet.Name = "Août" Or ActiveSheet.Name = "Septembre" Or
ActiveSheet.Name = "Octobre" Or ActiveSheet.Name = "Novembre" Or
ActiveSheet.Name = "Décembre" Then
Sheets(i).EnableSelection = xlUnlockedCells
Else
Sheets(i).EnableSelection = xlNoSelection
End if
Next

Tou aide est la bienvenue
 

Statistiques des forums

Discussions
314 647
Messages
2 111 531
Membres
111 191
dernier inscrit
Assjmka