Salut,
je viens aux nouvelles...
J'=E9tais tr=E8s stress en fin de semaine.
Merci de me dire ce que tu en penses et de me=20
donner =E9galement ta soloce
La mienne je l'ai test=E9e, et cela semble fonctionner
correctement, m=EAme si tu fais tourner une macro dans un=20
autre classeur pour r=E9activer la s=E9lection, d=E8s que tu=20
reviens dans le classeur =E0 prot=E9g=E9r et que tu s=E9lectionne=20
une plage de cellules, la protection de la s=E9lection se
r=E9active automatiqement
Ciao et A+
Je r=E9capitule ma soluce :
Les cellules non modifiables sont verrouillees.
Le classeur est prot=E9g=E9
La feuille est prot=E9g=E9e
Le projet est prot=E9g=E9
Au niveau Workbook :
Private Sub WorkBook_Open()
LangueEnCours =3D Range("LangueRegion").Value
ActiveWorkbook.Unprotect password:=3D"XXX"
Select Case LangueEnCours
Case Is =3D 1
Worksheets("MasseSalariale").Visible =3D True
Case Is =3D 2
Worksheets("Lohnmasse").Visible =3D True
End Select
If ActiveSheet.Name =3D "MasseSalariale" _
or ActiveSheet.Name =3D "Lohnmasse" Then
Worksheets(ClasseurEnCours).EnableSelection =3D =20
xlUnlockedCells
End If
ActiveWorkbook.Protect password:=3D"XXXXX", =20
Structure:=3DTrue, Windows:=3DFalse
End Sub
Private Sub Workbook_SheetActivate(ByVal NomFeuille As=20
Object)
If NomFeuille.Name =3D "MasseSalariale" _
Or NomFeuille.Name =3D "Lohnmasse" Then
Worksheets(NomFeuille.Name).EnableSelection =3D=20
xlUnlockedCells
End If
End Sub
Private Sub WorkBook_BeforeClose(Calcel As Boolean)
LangueEnCours =3D Range("LangueRegion").Value
ActiveWorkbook.Unprotect password:=3D"XXXXX"
Select Case LangueEnCours
Case Is =3D 1
Worksheets("MasseSalariale").Visible =3D False
Case Is =3D 2
Worksheets("LohnMasse").Visible =3D False
End Select
ActiveWorkbook.Protect password:=3D"XXXXX", =20
Structure:=3DTrue, Windows:=3DFalse
End Sub
Private Sub WorkbookActivate(ByVal NomFeuille As Workbook)
LangueEnCours =3D Range("LangueRegion").Value
Select Case LangueEnCours
Case Is =3D 1
Worksheets("MasseSalariale").Visible =3D True
Case Is =3D 2
Worksheets("Lohnmasse").Visible =3D True =20
End Select
Worksheets(ClasseurEnCours).EnableSelection =3D=20
xlUnlockedCells
End Sub
Private Sub Worksheets_SelectionChange(ByVal Plage As=20
Range)
Set Plage =3D Selection
LangueEnCours =3D Range("LangueRegion").Value
Select Case LangueEnCours
Case Is =3D 1
FeuilleEnCours =3D ActiveSheet.Name
Case Is =3D 2
FeuilleEnCours =3D ActiveSheet.Name
End Select
If ActiveSheet.Name =3D FeuilleEnCours Then
If Selection.Rows > 0 Then
Worksheets(FeuilleEnCours).EnableSelection =3D=20
xlUnlockedCells
End If
End If
End Sub
M=EAme si r=E9active la s=E9lection de cellule par une macro=20
externe, d=E8s que tu s=E9lectionne une plage dans la feuille=20
prot=E9g=E9e, la s=E9lection se d=E9sactive.
Au niveau Sheet : (plus de s=E9cutit=E9 ?)
Private Sub Worksheet_BeforeRightClick(ByVal Target As=20
Range, Cancel As Boolean)
Cancel =3D True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Plage As Range)
Set Plage =3D Selection
LangueEnCours =3D Workbooks(ActiveWorkbook.Name).Sheets
("LEsDates").Range("LangueRegion").Value
Select Case LangueEnCours
Case Is =3D 1
FeuilleEnCours =3D ActiveSheet.Name
Case Is =3D 2
FeuilleEnCours =3D ActiveSheet.Name
End Select
If ActiveSheet.Name =3D FeuilleEnCours Then
Worksheets(FeuilleEnCours).EnableSelection =3D=20
xlUnlockedCells
End If
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel HOLDERITH
Salut, J'ai plein de boulot ce matin je te dis ca soit cet apres-midi soit demain matin..... Je dois regarder ton code aussi...... Merci.... @+ Michel.
"JS" wrote in message news:017f01c3a2a6$91c455a0$ Salut, je viens aux nouvelles... J'étais très stress en fin de semaine. Merci de me dire ce que tu en penses et de me donner également ta soloce
La mienne je l'ai testée, et cela semble fonctionner correctement, même si tu fais tourner une macro dans un autre classeur pour réactiver la sélection, dès que tu reviens dans le classeur à protégér et que tu sélectionne une plage de cellules, la protection de la sélection se réactive automatiqement
Ciao et A+
Je récapitule ma soluce : Les cellules non modifiables sont verrouillees. Le classeur est protégé La feuille est protégée Le projet est protégé
Au niveau Workbook : Private Sub WorkBook_Open() LangueEnCours = Range("LangueRegion").Value ActiveWorkbook.Unprotect password:="XXX" Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = True Case Is = 2 Worksheets("Lohnmasse").Visible = True End Select If ActiveSheet.Name = "MasseSalariale" _ or ActiveSheet.Name = "Lohnmasse" Then Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells End If ActiveWorkbook.Protect password:="XXXXX", Structure:=True, Windows:úlse End Sub
Private Sub Workbook_SheetActivate(ByVal NomFeuille As Object)
If NomFeuille.Name = "MasseSalariale" _ Or NomFeuille.Name = "Lohnmasse" Then Worksheets(NomFeuille.Name).EnableSelection xlUnlockedCells End If End Sub
Private Sub WorkBook_BeforeClose(Calcel As Boolean) LangueEnCours = Range("LangueRegion").Value ActiveWorkbook.Unprotect password:="XXXXX" Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = False Case Is = 2 Worksheets("LohnMasse").Visible = False End Select ActiveWorkbook.Protect password:="XXXXX", Structure:=True, Windows:úlse End Sub
Private Sub WorkbookActivate(ByVal NomFeuille As Workbook) LangueEnCours = Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = True Case Is = 2 Worksheets("Lohnmasse").Visible = True End Select Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells End Sub
Private Sub Worksheets_SelectionChange(ByVal Plage As Range) Set Plage = Selection LangueEnCours = Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 FeuilleEnCours = ActiveSheet.Name Case Is = 2 FeuilleEnCours = ActiveSheet.Name End Select If ActiveSheet.Name = FeuilleEnCours Then If Selection.Rows > 0 Then Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells End If End If End Sub
Même si réactive la sélection de cellule par une macro externe, dès que tu sélectionne une plage dans la feuille protégée, la sélection se désactive.
Au niveau Sheet : (plus de sécutité ?)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Plage As Range) Set Plage = Selection LangueEnCours = Workbooks(ActiveWorkbook.Name).Sheets ("LEsDates").Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 FeuilleEnCours = ActiveSheet.Name Case Is = 2 FeuilleEnCours = ActiveSheet.Name End Select If ActiveSheet.Name = FeuilleEnCours Then Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells End If End Sub
Salut,
J'ai plein de boulot ce matin je te dis ca soit cet apres-midi soit demain
matin..... Je dois regarder ton code aussi......
Merci....
@+
Michel.
"JS" <anonymous@discussions.microsoft.com> wrote in message
news:017f01c3a2a6$91c455a0$a001280a@phx.gbl...
Salut,
je viens aux nouvelles...
J'étais très stress en fin de semaine.
Merci de me dire ce que tu en penses et de me
donner également ta soloce
La mienne je l'ai testée, et cela semble fonctionner
correctement, même si tu fais tourner une macro dans un
autre classeur pour réactiver la sélection, dès que tu
reviens dans le classeur à protégér et que tu sélectionne
une plage de cellules, la protection de la sélection se
réactive automatiqement
Ciao et A+
Je récapitule ma soluce :
Les cellules non modifiables sont verrouillees.
Le classeur est protégé
La feuille est protégée
Le projet est protégé
Au niveau Workbook :
Private Sub WorkBook_Open()
LangueEnCours = Range("LangueRegion").Value
ActiveWorkbook.Unprotect password:="XXX"
Select Case LangueEnCours
Case Is = 1
Worksheets("MasseSalariale").Visible = True
Case Is = 2
Worksheets("Lohnmasse").Visible = True
End Select
If ActiveSheet.Name = "MasseSalariale" _
or ActiveSheet.Name = "Lohnmasse" Then
Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells
End If
ActiveWorkbook.Protect password:="XXXXX",
Structure:=True, Windows:úlse
End Sub
Private Sub Workbook_SheetActivate(ByVal NomFeuille As
Object)
If NomFeuille.Name = "MasseSalariale" _
Or NomFeuille.Name = "Lohnmasse" Then
Worksheets(NomFeuille.Name).EnableSelection xlUnlockedCells
End If
End Sub
Private Sub WorkBook_BeforeClose(Calcel As Boolean)
LangueEnCours = Range("LangueRegion").Value
ActiveWorkbook.Unprotect password:="XXXXX"
Select Case LangueEnCours
Case Is = 1
Worksheets("MasseSalariale").Visible = False
Case Is = 2
Worksheets("LohnMasse").Visible = False
End Select
ActiveWorkbook.Protect password:="XXXXX",
Structure:=True, Windows:úlse
End Sub
Private Sub WorkbookActivate(ByVal NomFeuille As Workbook)
LangueEnCours = Range("LangueRegion").Value
Select Case LangueEnCours
Case Is = 1
Worksheets("MasseSalariale").Visible = True
Case Is = 2
Worksheets("Lohnmasse").Visible = True
End Select
Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells
End Sub
Private Sub Worksheets_SelectionChange(ByVal Plage As
Range)
Set Plage = Selection
LangueEnCours = Range("LangueRegion").Value
Select Case LangueEnCours
Case Is = 1
FeuilleEnCours = ActiveSheet.Name
Case Is = 2
FeuilleEnCours = ActiveSheet.Name
End Select
If ActiveSheet.Name = FeuilleEnCours Then
If Selection.Rows > 0 Then
Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells
End If
End If
End Sub
Même si réactive la sélection de cellule par une macro
externe, dès que tu sélectionne une plage dans la feuille
protégée, la sélection se désactive.
Au niveau Sheet : (plus de sécutité ?)
Private Sub Worksheet_BeforeRightClick(ByVal Target As
Range, Cancel As Boolean)
Cancel = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Plage As Range)
Set Plage = Selection
LangueEnCours = Workbooks(ActiveWorkbook.Name).Sheets
("LEsDates").Range("LangueRegion").Value
Select Case LangueEnCours
Case Is = 1
FeuilleEnCours = ActiveSheet.Name
Case Is = 2
FeuilleEnCours = ActiveSheet.Name
End Select
If ActiveSheet.Name = FeuilleEnCours Then
Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells
End If
End Sub
Salut, J'ai plein de boulot ce matin je te dis ca soit cet apres-midi soit demain matin..... Je dois regarder ton code aussi...... Merci.... @+ Michel.
"JS" wrote in message news:017f01c3a2a6$91c455a0$ Salut, je viens aux nouvelles... J'étais très stress en fin de semaine. Merci de me dire ce que tu en penses et de me donner également ta soloce
La mienne je l'ai testée, et cela semble fonctionner correctement, même si tu fais tourner une macro dans un autre classeur pour réactiver la sélection, dès que tu reviens dans le classeur à protégér et que tu sélectionne une plage de cellules, la protection de la sélection se réactive automatiqement
Ciao et A+
Je récapitule ma soluce : Les cellules non modifiables sont verrouillees. Le classeur est protégé La feuille est protégée Le projet est protégé
Au niveau Workbook : Private Sub WorkBook_Open() LangueEnCours = Range("LangueRegion").Value ActiveWorkbook.Unprotect password:="XXX" Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = True Case Is = 2 Worksheets("Lohnmasse").Visible = True End Select If ActiveSheet.Name = "MasseSalariale" _ or ActiveSheet.Name = "Lohnmasse" Then Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells End If ActiveWorkbook.Protect password:="XXXXX", Structure:=True, Windows:úlse End Sub
Private Sub Workbook_SheetActivate(ByVal NomFeuille As Object)
If NomFeuille.Name = "MasseSalariale" _ Or NomFeuille.Name = "Lohnmasse" Then Worksheets(NomFeuille.Name).EnableSelection xlUnlockedCells End If End Sub
Private Sub WorkBook_BeforeClose(Calcel As Boolean) LangueEnCours = Range("LangueRegion").Value ActiveWorkbook.Unprotect password:="XXXXX" Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = False Case Is = 2 Worksheets("LohnMasse").Visible = False End Select ActiveWorkbook.Protect password:="XXXXX", Structure:=True, Windows:úlse End Sub
Private Sub WorkbookActivate(ByVal NomFeuille As Workbook) LangueEnCours = Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = True Case Is = 2 Worksheets("Lohnmasse").Visible = True End Select Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells End Sub
Private Sub Worksheets_SelectionChange(ByVal Plage As Range) Set Plage = Selection LangueEnCours = Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 FeuilleEnCours = ActiveSheet.Name Case Is = 2 FeuilleEnCours = ActiveSheet.Name End Select If ActiveSheet.Name = FeuilleEnCours Then If Selection.Rows > 0 Then Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells End If End If End Sub
Même si réactive la sélection de cellule par une macro externe, dès que tu sélectionne une plage dans la feuille protégée, la sélection se désactive.
Au niveau Sheet : (plus de sécutité ?)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Plage As Range) Set Plage = Selection LangueEnCours = Workbooks(ActiveWorkbook.Name).Sheets ("LEsDates").Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 FeuilleEnCours = ActiveSheet.Name Case Is = 2 FeuilleEnCours = ActiveSheet.Name End Select If ActiveSheet.Name = FeuilleEnCours Then Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells End If End Sub
Michel HOLDERITH
Salut, Difficile d'apprecier le code sans exemple de ton projet, mais juste un petit truc, c'est quand que tu desactives la selection ? a moins que tu ne passes que par des textesbox a clicker au quel cas t'as pas besoins de reactiver.... Dans mon projet a moi je dois laisser l'utilisateur double clicker dans les feuilles. Je ne peux pas bloquer la selection. Pour ma part j'ai trouve le moyen de bloquer l'acces complet a l'utilisateur (jusqu'a preuve du contrtaire....) J'ai donne mon projet a mon pere pour test, et devinnes quoi, il a reussi a bloquer mon appli..... en appuyant involontairement sur F11 ce qui lui a produit un graphique, et plus moyen de revenir sur la page d'accueil de mon fichier...... J'etais passe par visible = true et visible = false, mais j'ai trouve la parade pour ne pas devoir faire ca, car avec le nombre de feuilles que j'ai c'etait chiant..... il suffit juste de chacher les onglets et proteger le workbook.... Voila mon code :
Sub verrouiller() Application.ScreenUpdating = False For P = 1 To Sheets.Count Sheets(P).Visible = True Sheets(P).Select 'une petite mise en page Columns("J:J").Select Range(Selection, Selection.End(xlToRight)).Select Selection.EntireColumn.Hidden = True Rows("31:31").Select Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Hidden = True 'verrouiller les cellules Cells.Select Selection.Locked = True Selection.FormulaHidden = True With Selection.Interior .ColorIndex = 2 .Pattern = xlSolid End With 'desactive les barres With ActiveWindow .DisplayHeadings = False .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With 'ActiveSheet.EnableSelection = xlUnlockedCells ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Range("A1").Select Next P Sheets("Sheet1").Select Range("A1").Select 'desactive les onglets et toutes les sessions excel n'apparaissent qu'une fois dans la barre des taches 'pour eviter d'ouvrir d'autres fichiers excel. ActiveWindow.DisplayWorkbookTabs = False Application.ShowWindowsInTaskbar = False
'desactivation barre outils GestionBarreOutils 'desactivation clavier Dim K, I As Integer On Error Resume Next For Each K In Array("^", "%", "+^", "+%", "^%", "+^%") For I = 32 To 255 Application.OnKey K & Chr$(I), "" Next I Next K 'desactivation des touches fonctions With Application For I = 1 To 12 .OnKey "{F" & I & "}", "" Next End With
ActiveWorkbook.Protect Structure:=True, Windows:úlse Application.ScreenUpdating = True End Sub Sub nerienverrouiller() Application.ScreenUpdating = False ActiveWorkbook.Unprotect
For P = 1 To Sheets.Count Sheets(P).Visible = True Sheets(P).Select ActiveSheet.Unprotect With ActiveWindow .DisplayHeadings = True .DisplayHorizontalScrollBar = True .DisplayVerticalScrollBar = True End With
'activation barre outils GestionBarreOutils False 'activation clavier Dim K, I As Integer On Error Resume Next For Each K In Array("^", "%", "+^", "+%", "^%", "+^%") For I = 32 To 255 Application.OnKey K & Chr$(I), "" Next I Next K 'activation des touches fonctions With Application For I = 1 To 12 If I = 2 Then Else .OnKey "{F" & I & "}" End If Next End With
'reactive copy/cut du click de droite Application.CommandBars("Cell").Reset Application.ScreenUpdating = True End Sub Sub FERMERFICHIER() Application.ScreenUpdating = False fermfich = "OK" ActiveWorkbook.Unprotect For P = 1 To Sheets.Count Sheets(P).Visible = True Sheets(P).Select ActiveSheet.Unprotect Cells.Select Selection.Locked = True Selection.FormulaHidden = True ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Range("A1").Select If ActiveSheet.Name = "Sheet2" Then Else Sheets(P).Visible = False End If Next P ActiveWorkbook.Protect Structure:=True, Windows:úlse Application.Quit End Sub Sub GestionBarreOutils(Optional etat As Boolean = True) Static TblCb() As Boolean Static TblEtat(1) As Boolean Static NbCb As Integer Dim Cb As Integer Select Case etat Case True 'bloquage With Application .ScreenUpdating = False NbCb = .CommandBars.Count ReDim TblCb(1 To NbCb) For Cb = 1 To NbCb With .CommandBars(Cb) TblCb(Cb) = .Enabled .Enabled = False End With Next Cb TblEtat(0) = .DisplayFormulaBar TblEtat(1) = .DisplayStatusBar .DisplayFormulaBar = False .DisplayStatusBar = False End With Case False 'debloquage With Application .ScreenUpdating = False For Cb = 1 To NbCb .CommandBars(Cb).Enabled = TblCb(Cb) Next Cb .DisplayFormulaBar = TblEtat(0) .DisplayStatusBar = TblEtat(1) End With End Select End Sub
Voila....voila..... Et aujourd'hui je peux egalement verrouiller les fichiers annexes relies au fichier central avec une variable. donc impossible a utiliser sans le fichier central..... cooooool. Quand penses-tu ? @+ Michel.
"JS" wrote in message news:017f01c3a2a6$91c455a0$ Salut, je viens aux nouvelles... J'étais très stress en fin de semaine. Merci de me dire ce que tu en penses et de me donner également ta soloce
La mienne je l'ai testée, et cela semble fonctionner correctement, même si tu fais tourner une macro dans un autre classeur pour réactiver la sélection, dès que tu reviens dans le classeur à protégér et que tu sélectionne une plage de cellules, la protection de la sélection se réactive automatiqement
Ciao et A+
Je récapitule ma soluce : Les cellules non modifiables sont verrouillees. Le classeur est protégé La feuille est protégée Le projet est protégé
Au niveau Workbook : Private Sub WorkBook_Open() LangueEnCours = Range("LangueRegion").Value ActiveWorkbook.Unprotect password:="XXX" Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = True Case Is = 2 Worksheets("Lohnmasse").Visible = True End Select If ActiveSheet.Name = "MasseSalariale" _ or ActiveSheet.Name = "Lohnmasse" Then Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells End If ActiveWorkbook.Protect password:="XXXXX", Structure:=True, Windows:úlse End Sub
Private Sub Workbook_SheetActivate(ByVal NomFeuille As Object)
If NomFeuille.Name = "MasseSalariale" _ Or NomFeuille.Name = "Lohnmasse" Then Worksheets(NomFeuille.Name).EnableSelection xlUnlockedCells End If End Sub
Private Sub WorkBook_BeforeClose(Calcel As Boolean) LangueEnCours = Range("LangueRegion").Value ActiveWorkbook.Unprotect password:="XXXXX" Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = False Case Is = 2 Worksheets("LohnMasse").Visible = False End Select ActiveWorkbook.Protect password:="XXXXX", Structure:=True, Windows:úlse End Sub
Private Sub WorkbookActivate(ByVal NomFeuille As Workbook) LangueEnCours = Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = True Case Is = 2 Worksheets("Lohnmasse").Visible = True End Select Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells End Sub
Private Sub Worksheets_SelectionChange(ByVal Plage As Range) Set Plage = Selection LangueEnCours = Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 FeuilleEnCours = ActiveSheet.Name Case Is = 2 FeuilleEnCours = ActiveSheet.Name End Select If ActiveSheet.Name = FeuilleEnCours Then If Selection.Rows > 0 Then Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells End If End If End Sub
Même si réactive la sélection de cellule par une macro externe, dès que tu sélectionne une plage dans la feuille protégée, la sélection se désactive.
Au niveau Sheet : (plus de sécutité ?)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Plage As Range) Set Plage = Selection LangueEnCours = Workbooks(ActiveWorkbook.Name).Sheets ("LEsDates").Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 FeuilleEnCours = ActiveSheet.Name Case Is = 2 FeuilleEnCours = ActiveSheet.Name End Select If ActiveSheet.Name = FeuilleEnCours Then Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells End If End Sub
Salut,
Difficile d'apprecier le code sans exemple de ton projet, mais juste un
petit truc, c'est quand que tu desactives la selection ? a moins que tu ne
passes que par des textesbox a clicker au quel cas t'as pas besoins de
reactiver....
Dans mon projet a moi je dois laisser l'utilisateur double clicker dans les
feuilles. Je ne peux pas bloquer la selection.
Pour ma part j'ai trouve le moyen de bloquer l'acces complet a l'utilisateur
(jusqu'a preuve du contrtaire....)
J'ai donne mon projet a mon pere pour test, et devinnes quoi, il a reussi a
bloquer mon appli..... en appuyant involontairement sur F11 ce qui lui a
produit un graphique, et plus moyen de revenir sur la page d'accueil de mon
fichier......
J'etais passe par visible = true et visible = false, mais j'ai trouve la
parade pour ne pas devoir faire ca, car avec le nombre de feuilles que j'ai
c'etait chiant..... il suffit juste de chacher les onglets et proteger le
workbook....
Voila mon code :
Sub verrouiller()
Application.ScreenUpdating = False
For P = 1 To Sheets.Count
Sheets(P).Visible = True
Sheets(P).Select
'une petite mise en page
Columns("J:J").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.EntireColumn.Hidden = True
Rows("31:31").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Hidden = True
'verrouiller les cellules
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = True
With Selection.Interior
.ColorIndex = 2
.Pattern = xlSolid
End With
'desactive les barres
With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
End With
'ActiveSheet.EnableSelection = xlUnlockedCells
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
Next P
Sheets("Sheet1").Select
Range("A1").Select
'desactive les onglets et toutes les sessions excel n'apparaissent qu'une
fois dans la barre des taches
'pour eviter d'ouvrir d'autres fichiers excel.
ActiveWindow.DisplayWorkbookTabs = False
Application.ShowWindowsInTaskbar = False
'desactivation barre outils
GestionBarreOutils
'desactivation clavier
Dim K, I As Integer
On Error Resume Next
For Each K In Array("^", "%", "+^", "+%", "^%", "+^%")
For I = 32 To 255
Application.OnKey K & Chr$(I), ""
Next I
Next K
'desactivation des touches fonctions
With Application
For I = 1 To 12
.OnKey "{F" & I & "}", ""
Next
End With
ActiveWorkbook.Protect Structure:=True, Windows:úlse
Application.ScreenUpdating = True
End Sub
Sub nerienverrouiller()
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect
For P = 1 To Sheets.Count
Sheets(P).Visible = True
Sheets(P).Select
ActiveSheet.Unprotect
With ActiveWindow
.DisplayHeadings = True
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
End With
'activation barre outils
GestionBarreOutils False
'activation clavier
Dim K, I As Integer
On Error Resume Next
For Each K In Array("^", "%", "+^", "+%", "^%", "+^%")
For I = 32 To 255
Application.OnKey K & Chr$(I), ""
Next I
Next K
'activation des touches fonctions
With Application
For I = 1 To 12
If I = 2 Then
Else
.OnKey "{F" & I & "}"
End If
Next
End With
'reactive copy/cut du click de droite
Application.CommandBars("Cell").Reset
Application.ScreenUpdating = True
End Sub
Sub FERMERFICHIER()
Application.ScreenUpdating = False
fermfich = "OK"
ActiveWorkbook.Unprotect
For P = 1 To Sheets.Count
Sheets(P).Visible = True
Sheets(P).Select
ActiveSheet.Unprotect
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("A1").Select
If ActiveSheet.Name = "Sheet2" Then
Else
Sheets(P).Visible = False
End If
Next P
ActiveWorkbook.Protect Structure:=True, Windows:úlse
Application.Quit
End Sub
Sub GestionBarreOutils(Optional etat As Boolean = True)
Static TblCb() As Boolean
Static TblEtat(1) As Boolean
Static NbCb As Integer
Dim Cb As Integer
Select Case etat
Case True 'bloquage
With Application
.ScreenUpdating = False
NbCb = .CommandBars.Count
ReDim TblCb(1 To NbCb)
For Cb = 1 To NbCb
With .CommandBars(Cb)
TblCb(Cb) = .Enabled
.Enabled = False
End With
Next Cb
TblEtat(0) = .DisplayFormulaBar
TblEtat(1) = .DisplayStatusBar
.DisplayFormulaBar = False
.DisplayStatusBar = False
End With
Case False 'debloquage
With Application
.ScreenUpdating = False
For Cb = 1 To NbCb
.CommandBars(Cb).Enabled = TblCb(Cb)
Next Cb
.DisplayFormulaBar = TblEtat(0)
.DisplayStatusBar = TblEtat(1)
End With
End Select
End Sub
Voila....voila.....
Et aujourd'hui je peux egalement verrouiller les fichiers annexes relies au
fichier central avec une variable.
donc impossible a utiliser sans le fichier central..... cooooool.
Quand penses-tu ?
@+
Michel.
"JS" <anonymous@discussions.microsoft.com> wrote in message
news:017f01c3a2a6$91c455a0$a001280a@phx.gbl...
Salut,
je viens aux nouvelles...
J'étais très stress en fin de semaine.
Merci de me dire ce que tu en penses et de me
donner également ta soloce
La mienne je l'ai testée, et cela semble fonctionner
correctement, même si tu fais tourner une macro dans un
autre classeur pour réactiver la sélection, dès que tu
reviens dans le classeur à protégér et que tu sélectionne
une plage de cellules, la protection de la sélection se
réactive automatiqement
Ciao et A+
Je récapitule ma soluce :
Les cellules non modifiables sont verrouillees.
Le classeur est protégé
La feuille est protégée
Le projet est protégé
Au niveau Workbook :
Private Sub WorkBook_Open()
LangueEnCours = Range("LangueRegion").Value
ActiveWorkbook.Unprotect password:="XXX"
Select Case LangueEnCours
Case Is = 1
Worksheets("MasseSalariale").Visible = True
Case Is = 2
Worksheets("Lohnmasse").Visible = True
End Select
If ActiveSheet.Name = "MasseSalariale" _
or ActiveSheet.Name = "Lohnmasse" Then
Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells
End If
ActiveWorkbook.Protect password:="XXXXX",
Structure:=True, Windows:úlse
End Sub
Private Sub Workbook_SheetActivate(ByVal NomFeuille As
Object)
If NomFeuille.Name = "MasseSalariale" _
Or NomFeuille.Name = "Lohnmasse" Then
Worksheets(NomFeuille.Name).EnableSelection xlUnlockedCells
End If
End Sub
Private Sub WorkBook_BeforeClose(Calcel As Boolean)
LangueEnCours = Range("LangueRegion").Value
ActiveWorkbook.Unprotect password:="XXXXX"
Select Case LangueEnCours
Case Is = 1
Worksheets("MasseSalariale").Visible = False
Case Is = 2
Worksheets("LohnMasse").Visible = False
End Select
ActiveWorkbook.Protect password:="XXXXX",
Structure:=True, Windows:úlse
End Sub
Private Sub WorkbookActivate(ByVal NomFeuille As Workbook)
LangueEnCours = Range("LangueRegion").Value
Select Case LangueEnCours
Case Is = 1
Worksheets("MasseSalariale").Visible = True
Case Is = 2
Worksheets("Lohnmasse").Visible = True
End Select
Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells
End Sub
Private Sub Worksheets_SelectionChange(ByVal Plage As
Range)
Set Plage = Selection
LangueEnCours = Range("LangueRegion").Value
Select Case LangueEnCours
Case Is = 1
FeuilleEnCours = ActiveSheet.Name
Case Is = 2
FeuilleEnCours = ActiveSheet.Name
End Select
If ActiveSheet.Name = FeuilleEnCours Then
If Selection.Rows > 0 Then
Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells
End If
End If
End Sub
Même si réactive la sélection de cellule par une macro
externe, dès que tu sélectionne une plage dans la feuille
protégée, la sélection se désactive.
Au niveau Sheet : (plus de sécutité ?)
Private Sub Worksheet_BeforeRightClick(ByVal Target As
Range, Cancel As Boolean)
Cancel = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Plage As Range)
Set Plage = Selection
LangueEnCours = Workbooks(ActiveWorkbook.Name).Sheets
("LEsDates").Range("LangueRegion").Value
Select Case LangueEnCours
Case Is = 1
FeuilleEnCours = ActiveSheet.Name
Case Is = 2
FeuilleEnCours = ActiveSheet.Name
End Select
If ActiveSheet.Name = FeuilleEnCours Then
Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells
End If
End Sub
Salut, Difficile d'apprecier le code sans exemple de ton projet, mais juste un petit truc, c'est quand que tu desactives la selection ? a moins que tu ne passes que par des textesbox a clicker au quel cas t'as pas besoins de reactiver.... Dans mon projet a moi je dois laisser l'utilisateur double clicker dans les feuilles. Je ne peux pas bloquer la selection. Pour ma part j'ai trouve le moyen de bloquer l'acces complet a l'utilisateur (jusqu'a preuve du contrtaire....) J'ai donne mon projet a mon pere pour test, et devinnes quoi, il a reussi a bloquer mon appli..... en appuyant involontairement sur F11 ce qui lui a produit un graphique, et plus moyen de revenir sur la page d'accueil de mon fichier...... J'etais passe par visible = true et visible = false, mais j'ai trouve la parade pour ne pas devoir faire ca, car avec le nombre de feuilles que j'ai c'etait chiant..... il suffit juste de chacher les onglets et proteger le workbook.... Voila mon code :
Sub verrouiller() Application.ScreenUpdating = False For P = 1 To Sheets.Count Sheets(P).Visible = True Sheets(P).Select 'une petite mise en page Columns("J:J").Select Range(Selection, Selection.End(xlToRight)).Select Selection.EntireColumn.Hidden = True Rows("31:31").Select Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Hidden = True 'verrouiller les cellules Cells.Select Selection.Locked = True Selection.FormulaHidden = True With Selection.Interior .ColorIndex = 2 .Pattern = xlSolid End With 'desactive les barres With ActiveWindow .DisplayHeadings = False .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With 'ActiveSheet.EnableSelection = xlUnlockedCells ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Range("A1").Select Next P Sheets("Sheet1").Select Range("A1").Select 'desactive les onglets et toutes les sessions excel n'apparaissent qu'une fois dans la barre des taches 'pour eviter d'ouvrir d'autres fichiers excel. ActiveWindow.DisplayWorkbookTabs = False Application.ShowWindowsInTaskbar = False
'desactivation barre outils GestionBarreOutils 'desactivation clavier Dim K, I As Integer On Error Resume Next For Each K In Array("^", "%", "+^", "+%", "^%", "+^%") For I = 32 To 255 Application.OnKey K & Chr$(I), "" Next I Next K 'desactivation des touches fonctions With Application For I = 1 To 12 .OnKey "{F" & I & "}", "" Next End With
ActiveWorkbook.Protect Structure:=True, Windows:úlse Application.ScreenUpdating = True End Sub Sub nerienverrouiller() Application.ScreenUpdating = False ActiveWorkbook.Unprotect
For P = 1 To Sheets.Count Sheets(P).Visible = True Sheets(P).Select ActiveSheet.Unprotect With ActiveWindow .DisplayHeadings = True .DisplayHorizontalScrollBar = True .DisplayVerticalScrollBar = True End With
'activation barre outils GestionBarreOutils False 'activation clavier Dim K, I As Integer On Error Resume Next For Each K In Array("^", "%", "+^", "+%", "^%", "+^%") For I = 32 To 255 Application.OnKey K & Chr$(I), "" Next I Next K 'activation des touches fonctions With Application For I = 1 To 12 If I = 2 Then Else .OnKey "{F" & I & "}" End If Next End With
'reactive copy/cut du click de droite Application.CommandBars("Cell").Reset Application.ScreenUpdating = True End Sub Sub FERMERFICHIER() Application.ScreenUpdating = False fermfich = "OK" ActiveWorkbook.Unprotect For P = 1 To Sheets.Count Sheets(P).Visible = True Sheets(P).Select ActiveSheet.Unprotect Cells.Select Selection.Locked = True Selection.FormulaHidden = True ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Range("A1").Select If ActiveSheet.Name = "Sheet2" Then Else Sheets(P).Visible = False End If Next P ActiveWorkbook.Protect Structure:=True, Windows:úlse Application.Quit End Sub Sub GestionBarreOutils(Optional etat As Boolean = True) Static TblCb() As Boolean Static TblEtat(1) As Boolean Static NbCb As Integer Dim Cb As Integer Select Case etat Case True 'bloquage With Application .ScreenUpdating = False NbCb = .CommandBars.Count ReDim TblCb(1 To NbCb) For Cb = 1 To NbCb With .CommandBars(Cb) TblCb(Cb) = .Enabled .Enabled = False End With Next Cb TblEtat(0) = .DisplayFormulaBar TblEtat(1) = .DisplayStatusBar .DisplayFormulaBar = False .DisplayStatusBar = False End With Case False 'debloquage With Application .ScreenUpdating = False For Cb = 1 To NbCb .CommandBars(Cb).Enabled = TblCb(Cb) Next Cb .DisplayFormulaBar = TblEtat(0) .DisplayStatusBar = TblEtat(1) End With End Select End Sub
Voila....voila..... Et aujourd'hui je peux egalement verrouiller les fichiers annexes relies au fichier central avec une variable. donc impossible a utiliser sans le fichier central..... cooooool. Quand penses-tu ? @+ Michel.
"JS" wrote in message news:017f01c3a2a6$91c455a0$ Salut, je viens aux nouvelles... J'étais très stress en fin de semaine. Merci de me dire ce que tu en penses et de me donner également ta soloce
La mienne je l'ai testée, et cela semble fonctionner correctement, même si tu fais tourner une macro dans un autre classeur pour réactiver la sélection, dès que tu reviens dans le classeur à protégér et que tu sélectionne une plage de cellules, la protection de la sélection se réactive automatiqement
Ciao et A+
Je récapitule ma soluce : Les cellules non modifiables sont verrouillees. Le classeur est protégé La feuille est protégée Le projet est protégé
Au niveau Workbook : Private Sub WorkBook_Open() LangueEnCours = Range("LangueRegion").Value ActiveWorkbook.Unprotect password:="XXX" Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = True Case Is = 2 Worksheets("Lohnmasse").Visible = True End Select If ActiveSheet.Name = "MasseSalariale" _ or ActiveSheet.Name = "Lohnmasse" Then Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells End If ActiveWorkbook.Protect password:="XXXXX", Structure:=True, Windows:úlse End Sub
Private Sub Workbook_SheetActivate(ByVal NomFeuille As Object)
If NomFeuille.Name = "MasseSalariale" _ Or NomFeuille.Name = "Lohnmasse" Then Worksheets(NomFeuille.Name).EnableSelection xlUnlockedCells End If End Sub
Private Sub WorkBook_BeforeClose(Calcel As Boolean) LangueEnCours = Range("LangueRegion").Value ActiveWorkbook.Unprotect password:="XXXXX" Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = False Case Is = 2 Worksheets("LohnMasse").Visible = False End Select ActiveWorkbook.Protect password:="XXXXX", Structure:=True, Windows:úlse End Sub
Private Sub WorkbookActivate(ByVal NomFeuille As Workbook) LangueEnCours = Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 Worksheets("MasseSalariale").Visible = True Case Is = 2 Worksheets("Lohnmasse").Visible = True End Select Worksheets(ClasseurEnCours).EnableSelection xlUnlockedCells End Sub
Private Sub Worksheets_SelectionChange(ByVal Plage As Range) Set Plage = Selection LangueEnCours = Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 FeuilleEnCours = ActiveSheet.Name Case Is = 2 FeuilleEnCours = ActiveSheet.Name End Select If ActiveSheet.Name = FeuilleEnCours Then If Selection.Rows > 0 Then Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells End If End If End Sub
Même si réactive la sélection de cellule par une macro externe, dès que tu sélectionne une plage dans la feuille protégée, la sélection se désactive.
Au niveau Sheet : (plus de sécutité ?)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Plage As Range) Set Plage = Selection LangueEnCours = Workbooks(ActiveWorkbook.Name).Sheets ("LEsDates").Range("LangueRegion").Value Select Case LangueEnCours Case Is = 1 FeuilleEnCours = ActiveSheet.Name Case Is = 2 FeuilleEnCours = ActiveSheet.Name End Select If ActiveSheet.Name = FeuilleEnCours Then Worksheets(FeuilleEnCours).EnableSelection xlUnlockedCells End If End Sub