1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| Const PremiereLigneTableau As Integer = 11
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
'Récupération nom de session Windows
'extrait d'un code trouvé sur : http://forum.rue-montgallet.com/ruemontgallet/Programmation/vb-vba/resolu-recuperation-windows-sujet_22341_1.htm
Function OSUserName() As String
Dim Buffer As String * 256
Dim BuffLen As Long
BuffLen = 256
If GetUserName(Buffer, BuffLen) Then _
OSUserName = Left(Buffer, BuffLen - 1)
End Function
Private Sub Workbook_Open()
Dim wbkSuiviRege As Workbook
Dim shRege As Worksheet
Dim shSechage As Worksheet
Set shRege = wbkSuiviRege.Sheets(" régé"): Set shSechage = wbkSuiviRege.Sheets("séchage")
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim ZoneDeGroupeLabo As Range
Dim ZoneDeGroupeProd As Range
If Sh.Name = shRege Then
ZoneDeGroupeLabo = Sh.Range("Labo_Rege")
ZoneDeGroupeProd = Sh.Range("Prod_Rege")
Else
ZoneDeGroupeLabo = Sh.Range("Labo_Sechage")
ZoneDeGroupeProd = Sh.Range("Prod_Sechage")
End If
'Si utilisateur est de la prod (ici STAG3) il ne doit pas accéder au groupe de cellules Labo ...
If OSUserName = "STAG3" Then
If Not Intersect(Target, ZoneDeGroupeLabo) Is Nothing Then
'Si l'utilisateur veut accéder au groupe de cellules labo on décale la sélection en dehors du groupe de cellules
Sh.Range("A1").Select
End If
'Sinon si autre utilisateur il n'a accès qu'aux cellules de Prod
Else
If Not Intersect(Target, ZoneDeGroupeProd) Is Nothing Then
'Si l'utilisateur veut accéder au groupe de cellule prod on décale la sélection en dehors du groupe de cellules
ZoneDeGroupeProd.Cells(1, 1).Select
End If
End If
End Sub |