Page 1 sur 1

Renvoyer la liste des personnes avec un Role précis

MessagePublié: 19 Avr 2012 à 13:54
par Sylvie35
Bonjour à Tous,

Après beaucoup de tests infructueux, je me
Je suis à la recherche d'une Formule permettant de renvoyer dans un champ de type Nom, le liste des personnes ayant un Role précis.
Exemple : 3 personnes Toto, Titi et Tata ayant accès à une base documentaire ont le rôle [Responsable]
En créant un nouveau document dans la base, avec un champ de type Nom calculé, celui-ci devra afficher Toto, Titi, Tata

j'ai cherché avec @username, @userrole, @list, @explode, @nameslookup, @name, mais sans succès...

Est-ce que quelqu'un a une idée ?

Merci d'avance.
Sylvie35

Re: Renvoyer la liste des personnes avec un Role précis

MessagePublié: 19 Avr 2012 à 13:56
par Michael DELIQUE
Salut

pas possible en formule, en formule tu ne peux avoir que les roles de l'utilisateur courant. par contre en LS sans probleme (mais avec du dev)

Re: Renvoyer la liste des personnes avec un Role précis

MessagePublié: 19 Avr 2012 à 13:58
par Michael DELIQUE
un exemple

Code : Tout sélectionner
Function ACLAccesRole(wDB As NotesDatabase,wRole As String) As Variant
   
   REM renvois la liste de tous les utilisateurs ou groupe ayant un role
   
   Dim DBCible As NotesDatabase
   Dim ACL As NotesACL
   Dim ACLEntry As NotesACLEntry
   Dim lstValue List As String
   Dim nbUser As Integer
   Dim nmUser As NotesName
   Dim Role As String
   
   On Error GoTo ErreurHandle
   
   ACLAccesRole = Null
   
   If Trim(wRole) = "" Then
      Exit Function
   End If
   
   If Left(Trim(wRole),1) = "[" Then
      Role = wRole
   Else
      Role = "["+wRole
   End If
   
   If Right(Trim(wRole),1) <> "]" Then
      Role = Role+"]"
   End If
   
   If Session Is Nothing Then
      Set Session = New NotesSession
   End If
   
   If wDB Is Nothing Then
      Set DBCible = Session.CurrentDatabase
   Else
      Set DBCible = wDB
   End If
   
   Set ACL = DBCible.ACL
   If ACL Is Nothing Then
      Error 9999,"ACL is Nothing"
      Exit Function
   End If
   
   nbUser = 0
   
   Set ACLEntry = ACL.getfirstEntry
   While Not ACLEntry Is Nothing
      ForAll ValueRole In ACLEntry.Roles
         If Trim(CStr(ValueRole)) <> "" Then
            If ACLEntry.IsGroup  =True Or ACLEntry.IsPerson = True Then
               If UCase(Trim(Role)) = UCase(Trim(CStr(ValueRole))) Then
                  Set nmUser = New NotesName(ACLEntry.Name)
                  lstValue(nbUser) = CStr(nmUser.Canonical)
                  Set nmUser = Nothing
                  nbUser = nbUser+1
               End If
            End If
         End If
      End ForAll
      Set ACLEntry = ACL.getNextEntry(ACLEntry)
   Wend
   
   Set ACL = Nothing
   Set DBCible = Nothing
   
   If nbUser > 0 Then
      ACLAccesRole = lstValue
      Erase lstValue
   End If
   
   Exit Function
ErreurHandle:
   MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   ACLAccesRole = Null
   Exit Function
End Function

Re: Renvoyer la liste des personnes avec un Role précis

MessagePublié: 19 Avr 2012 à 15:47
par Sylvie35
Merci pour la réponse.