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
Merci
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
Merci