Bonjour,
Après avoir tenté par tous les moyens d'associer partage et protection je rend les armes. J'essaie maintenant de créer une macro et j'ai besoin d'un petit peu d'aide...
J'ai deux groupes de cellule :
- Labo
- Prod
J'aimerai en fonction de l'utilisateur de session Windows que je récupère via la fonction OSUserName :
Si le UserName = "STAG3"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Function OSUserName() As String 'extrait d'un code trouvé sur : http://forum.rue-montgallet.com/ruemontgallet/Programmation/vb-vba/resolu-recuperation-windows-sujet_22341_1.htm Dim Buffer As String * 256 Dim BuffLen As Long BuffLen = 256 If GetUserName(Buffer, BuffLen) Then _ OSUserName = Left(Buffer, BuffLen - 1) End Function
Si l'utilisateur sélectionne une cellule dans la zone Labo déplacer la sélection en dehors de la zone ...
Si le UserName = "Autres"
Si l'utilisateur sélectionne une cellule dans la zone Prod déplacer la sélection en dehors de la zone...
Un peu comme ouskel'n'or dans cette discussion.
Code ouskel'n'or :
Cependant, je débute en vba et j'ai du mal à écrire ce code, j'ai commencé et fais différents tests mais j'ai du mal ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Plage() Plage = Array("$C$14", "$D$13", "$E$12", "$F$11", "$G$15", "$F$19") 'cellules interdites For i = 0 To UBound(Plage) If Target.Address = Plage(i) Then Cells(Target.Row + 1, Target.Column).Select Exit For End If Next End Sub
J'ai testé un truc dans le genre :
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim Plage As Range Dim Cel As Range 'Si utilisateur est STAG3 il ne doit pas accéder au groupe de cellules Labo ... If OSUserName = "STAG3" Then If Not Intersect(Target, Range("Labo")) Is Nothing Then For Each Cel In Target If Not Intersect(Cel, Range("Labo")) Is Nothing Then Set Plage = Cel.Offset(1, 0) End If Next Cel End If End If End Sub
Oh et meilleurs voeux à tous![]()
Partager