Protéger et (unprotect)

Résolu/Fermé
VDB.57 - 25 juil. 2016 à 22:02
 VDB.57 - 26 juil. 2016 à 12:04
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

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
25 juil. 2016 à 23:00
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 :

Private Sub Workbook_Open()
Worksheets("Feuil1").Protect UserInterfaceOnly:=True
End Sub


0
Bonjour Thau Theme,

Merci pour ta réponse rapide.

Code impeccable ça fonctionne.

Bonne journée
0