XL 2016 Vérouillage/devérouillage selectif fonction du username

pulelian

XLDnaute Nouveau
Bonjour à tous :)

Voilà j'avance plutôt bien sur mon projet (cool pour moi^^') mais je tourne tout de même en rond depuis des jours.. sur une volonté de déverrouiller certaines cellules sur une feuille bloquée par mot de passe. Par conséquent je souhaite que chaque username ai un accès restreint selon mes souhaits.

je pensais qu'en :

- bloquant toutes mes feuilles

- bloquant toutes les cellules

- débloquant sélectivement selon le username, certaines cellules

cela fonctionnerai mais ce n'est pas le cas :/ .. mes cellules AB8 et AL8 quand je suis manger ne se déverrouille pas. Excel me demande toujours :

image
Si quelqu'un sait où je plante, ce serait top :) d'avance merci pour ceux qui regarde mon "code" dégueux

Voici mon code "allégé" des trucs inutiles, présent sur ThisWorkbook de mon fichier en copie :

Private Sub Workbook_Open()
On Error Resume Next
Dim sh As Worksheet
Dim dLig As Long
Dim Reponse As String

'"=>Pour tout le monde
'<<<<<<<<<<<<<Protection et blocage cellules
For Each sh In ThisWorkbook.Worksheets
'Les feuilles sont protégées
sh.Protect "ndf"
'les cellules bloquées
sh.Cells.Locked = True
Next sh

'Limiter le scrollArea à chaque onglet, ainsi cela évite d'ouvrir 1048576 lignes et d'alourdir inutilement le fichier excel !!
ThisWorkbook.Sheets(1).ScrollArea = "A1:AW250"

ActiveSheet.Name = ActiveSheet.Range("I11").Value

'""En fonction de ce que renvoie le Username, pour chaque personne
Select Case Application.UserName

'"=>MANAGER CASE
Case Application.UserName 'aka Manager test en utilisant ici mon username

''<<<<<<<<<<<<<Protection et blocage cellules
Sheets(1).Unprotect "ndf"
Sheets(1).Cells.Locked = True

Sheets(1).Range("AB8").Locked = False 'je souhaite dévérouiller précisément celle-ci
Sheets(1).Range("AL8").Locked = False 'je souhaite dévérouiller précisément celle-ci aussi

MsgBox "Current user is " & Application.UserName & " and get MANAGER access"
Sheets(1).Range("W:Z").EntireColumn.Hidden = True
Sheets(1).Range("AB:AS").EntireColumn.Hidden = False
Sheets(1).Range("AB7").Select
MsgBox "Please make a short review and approve/reject fees by clicking on corresponding sending icon. Before sending, you can also attach an explanatory comment in the blue area. Thanks you."

Sheets(1).Protect "ndf"

''"=>OTHERS CASE(here EMPLOYEES)
'Case Else 'aka others
''masquage zone controller
'Sheets(1).Range("W:Z").EntireColumn.Hidden = True
''masquage zone manager
'Sheets(1).Range("AB:AS").EntireColumn.Hidden = True
End Select
End Sub
 

Pièces jointes

  • qsh-expense-claim-xx-xxxx-aaaa-aa-cnyllll-copie.xlsm
    107.8 KB · Affichages: 7

Jacky67

XLDnaute Barbatruc
Bonjour à tous :)

Voilà j'avance plutôt bien sur mon projet (cool pour moi^^') mais je tourne tout de même en rond depuis des jours.. sur une volonté de déverrouiller certaines cellules sur une feuille bloquée par mot de passe. Par conséquent je souhaite que chaque username ai un accès restreint selon mes souhaits.

je pensais qu'en :

- bloquant toutes mes feuilles

- bloquant toutes les cellules

- débloquant sélectivement selon le username, certaines cellules

cela fonctionnerai mais ce n'est pas le cas :/ .. mes cellules AB8 et AL8 quand je suis manger ne se déverrouille pas. Excel me demande toujours :

image
Si quelqu'un sait où je plante, ce serait top :) d'avance merci pour ceux qui regarde mon "code" dégueux

Voici mon code "allégé" des trucs inutiles, présent sur ThisWorkbook de mon fichier en copie :

Private Sub Workbook_Open()
On Error Resume Next
Dim sh As Worksheet
Dim dLig As Long
Dim Reponse As String

'"=>Pour tout le monde
'<<<<<<<<<<<<<Protection et blocage cellules
For Each sh In ThisWorkbook.Worksheets
'Les feuilles sont protégées
sh.Protect "ndf"
'les cellules bloquées
sh.Cells.Locked = True
Next sh

'Limiter le scrollArea à chaque onglet, ainsi cela évite d'ouvrir 1048576 lignes et d'alourdir inutilement le fichier excel !!
ThisWorkbook.Sheets(1).ScrollArea = "A1:AW250"

ActiveSheet.Name = ActiveSheet.Range("I11").Value

'""En fonction de ce que renvoie le Username, pour chaque personne
Select Case Application.UserName

'"=>MANAGER CASE
Case Application.UserName 'aka Manager test en utilisant ici mon username

''<<<<<<<<<<<<<Protection et blocage cellules
Sheets(1).Unprotect "ndf"
Sheets(1).Cells.Locked = True

Sheets(1).Range("AB8").Locked = False 'je souhaite dévérouiller précisément celle-ci
Sheets(1).Range("AL8").Locked = False 'je souhaite dévérouiller précisément celle-ci aussi

MsgBox "Current user is " & Application.UserName & " and get MANAGER access"
Sheets(1).Range("W:Z").EntireColumn.Hidden = True
Sheets(1).Range("AB:AS").EntireColumn.Hidden = False
Sheets(1).Range("AB7").Select
MsgBox "Please make a short review and approve/reject fees by clicking on corresponding sending icon. Before sending, you can also attach an explanatory comment in the blue area. Thanks you."

Sheets(1).Protect "ndf"

''"=>OTHERS CASE(here EMPLOYEES)
'Case Else 'aka others
''masquage zone controller
'Sheets(1).Range("W:Z").EntireColumn.Hidden = True
''masquage zone manager
'Sheets(1).Range("AB:AS").EntireColumn.Hidden = True
End Select
End Sub
Bonjour à tous
Une piste..
Il semble que les cellules AB8 et AL8 soient fusionnées.
S'ils doivent le rester, il faudra les déverrouiller tous...
Du genre = Range("AB8:Ai13").Locked = False
Idem pour les autres

**Hello mapomme
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Vos cellules à ne pas protéger sont des cellules fusionnées, écrivez:
VB:
Sheets(1).Range("AB8").MergeArea.Locked = False
Sheets(1).Range("AL8").MergeArea.Locked = False

AB7 est verrouillée. Pour être logique, sélectionnez plutôt AB8 que AB7 :
VB:
Sheets(1).Range("AB8").Select
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa