Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pour Michel Holderit

2 réponses
Avatar
JS
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

2 réponses

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

Columns("J:IV").Select
Selection.EntireColumn.Hidden = False
Rows("31:65536").Select
Selection.EntireRow.Hidden = False
Cells.Select
Selection.Interior.ColorIndex = xlNone
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.EnableSelection = xlNoRestrictions
Range("A1").Select
Next P

Sheets("Sheet1").Select
ActiveWindow.DisplayWorkbookTabs = True
Application.ShowWindowsInTaskbar = True

'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