Protéger et (unprotect)
Résolu
VDB.57
-
VDB.57 -
VDB.57 -
Bonsoir,
J’ai encore un petit souci avec mon outil.
J’ai un userform avec des buttons, qui lorsque je clic dessus colle leur nom en colonne AB de mon onglet caisse
J’aimerai que mon onglet caisse (à minima les colonnes AB à AE) soit protégé en permanence sauf au moment du clic sur les buttons afin de permettre le collage de leur nom.
Ci-dessous mon code.
Merci pour votre aide
Private Sub UserForm_Initialize()
'Application.ScreenUpdating = False
With Worksheets("caisse")
derlig = .Range("E" & Rows.Count).End(xlUp).Row
.Range("I1").Resize(derlig) = .Range("E1:E" & derlig).Value
.Range("I1").Resize(derlig).RemoveDuplicates Columns:=1, Header:=xlNo
.Range("I1").Resize(derlig).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
derlig = .Range("F" & Rows.Count).End(xlUp).Row
.Range("K1").Resize(derlig) = .Range("F1:F" & derlig).Value
.Range("K1").Resize(derlig).RemoveDuplicates Columns:=1, Header:=xlNo
.Range("K1").Resize(derlig).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
derlig = .Range("G" & Rows.Count).End(xlUp).Row
.Range("M1").Resize(derlig) = .Range("G1:G" & derlig).Value
.Range("M1").Resize(derlig).RemoveDuplicates Columns:=1, Header:=xlNo
.Range("M1").Resize(derlig).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End With
Application.ScreenUpdating = True
Range("A1").Select 'Actualise le nom des boutons avec la Feuille stock
UserForm2.CommandButton20.Caption = "VALIDER" & Chr(10) & "SELECTION"
Dim BT As Byte
Dim LI As Byte
Dim COL As Byte
ReDim Tbo(1 To 1)
For BT = 1 To 36
Select Case BT
Case 1 To 24
LI = BT + 1: COL = 9
Case 25 To 30
LI = BT - 23: COL = 11
Case 31 To 36
LI = BT - 29: COL = 13
End Select
Me.Controls("CommandButton" & BT).Caption = Sheets("caisse").Cells(LI, COL).Value
Me.Controls("CommandButton" & BT).Tag = BT & "/" & LI & "/" & COL
Set Tbo(UBound(Tbo)).cbt = Me.Controls("CommandButton" & BT)
ReDim Preserve Tbo(1 To UBound(Tbo) + 1)
Next BT
End Sub
J’ai encore un petit souci avec mon outil.
J’ai un userform avec des buttons, qui lorsque je clic dessus colle leur nom en colonne AB de mon onglet caisse
J’aimerai que mon onglet caisse (à minima les colonnes AB à AE) soit protégé en permanence sauf au moment du clic sur les buttons afin de permettre le collage de leur nom.
Ci-dessous mon code.
Merci pour votre aide
Private Sub UserForm_Initialize()
'Application.ScreenUpdating = False
With Worksheets("caisse")
derlig = .Range("E" & Rows.Count).End(xlUp).Row
.Range("I1").Resize(derlig) = .Range("E1:E" & derlig).Value
.Range("I1").Resize(derlig).RemoveDuplicates Columns:=1, Header:=xlNo
.Range("I1").Resize(derlig).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
derlig = .Range("F" & Rows.Count).End(xlUp).Row
.Range("K1").Resize(derlig) = .Range("F1:F" & derlig).Value
.Range("K1").Resize(derlig).RemoveDuplicates Columns:=1, Header:=xlNo
.Range("K1").Resize(derlig).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
derlig = .Range("G" & Rows.Count).End(xlUp).Row
.Range("M1").Resize(derlig) = .Range("G1:G" & derlig).Value
.Range("M1").Resize(derlig).RemoveDuplicates Columns:=1, Header:=xlNo
.Range("M1").Resize(derlig).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End With
Application.ScreenUpdating = True
Range("A1").Select 'Actualise le nom des boutons avec la Feuille stock
UserForm2.CommandButton20.Caption = "VALIDER" & Chr(10) & "SELECTION"
Dim BT As Byte
Dim LI As Byte
Dim COL As Byte
ReDim Tbo(1 To 1)
For BT = 1 To 36
Select Case BT
Case 1 To 24
LI = BT + 1: COL = 9
Case 25 To 30
LI = BT - 23: COL = 11
Case 31 To 36
LI = BT - 29: COL = 13
End Select
Me.Controls("CommandButton" & BT).Caption = Sheets("caisse").Cells(LI, COL).Value
Me.Controls("CommandButton" & BT).Tag = BT & "/" & LI & "/" & COL
Set Tbo(UBound(Tbo)).cbt = Me.Controls("CommandButton" & BT)
ReDim Preserve Tbo(1 To UBound(Tbo) + 1)
Next BT
End Sub
A voir également:
- Protéger et (unprotect)
- Proteger cellule excel - Guide
- Protéger un dossier par mot de passe - Guide
- Protéger un pdf par mot de passe - Guide
- Comment protéger sa photo de profil whatsapp - Guide
- Protéger un document word - Guide
2 réponses
Bonsoir VDB, bonsoir le forum,
Une des méthode les plus courante et de déprotéger, agir, reprotéger. On peut aussi utiliser l'argument UserInterfaceOnly de la méthode Protect en lui donnant la valeur True. Cela permet de protéger l'onglet et donc l'utilisateur ne pourra pas modifier directement dedans mais laisse la possibilité à une UserForm d'aller modifier sans déprotéger.
Pour des raisons que j'ai oubliées, il faut écrire ce code à l'ouverture du classeur si on veut qu'il soit fiable. D'ailleurs je lance un appel à une âme charitable pour m'en rappeler ces raisons...
Pour l'onglet Feuil1, par exemple, ça donnerait un code du type :
Une des méthode les plus courante et de déprotéger, agir, reprotéger. On peut aussi utiliser l'argument UserInterfaceOnly de la méthode Protect en lui donnant la valeur True. Cela permet de protéger l'onglet et donc l'utilisateur ne pourra pas modifier directement dedans mais laisse la possibilité à une UserForm d'aller modifier sans déprotéger.
Pour des raisons que j'ai oubliées, il faut écrire ce code à l'ouverture du classeur si on veut qu'il soit fiable. D'ailleurs je lance un appel à une âme charitable pour m'en rappeler ces raisons...
Pour l'onglet Feuil1, par exemple, ça donnerait un code du type :
Private Sub Workbook_Open() Worksheets("Feuil1").Protect UserInterfaceOnly:=True End Sub