Bonjour bonjour,

Pour permettre d'identifier les droits de l'utilisateur qui a ouvert le fichier xls, je récupère l'identifiant de l'utilisateur.
Ensuite, j'aimerai récupérer le(s) groupe(s) auquel il appartient, sur Active Directory, par l'intermédiaire d'une requête LDAP.

Le code que j'utilise est celui-ci :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
' Parametrage du LDAP
Dim objConnection As ADODB.Connection
Dim objCommand As ADODB.Command
Dim objRecordset As ADODB.Recordset
 
Set objConnection = New ADODB.Connection
Set objCommand = New ADODB.Command
Set objRecordset = New ADODB.Recordset
 
Const ADS_SCOPE_SUBTREE = 2
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
 
' Commande d'interrogation
objCommand.CommandText = "SELECT * FROM 'LDAP://dc=domaine,dc=fr' WHERE objectCategory='User' And samAccountName = '" & login & "'"
Set objRecordset = objCommand.Execute
MsgBox Str(objRecordset.Fields.Count)
objRecordset.MoveFirst
 
For i = 0 To objRecordset.Fields.Count - 1
        MsgBox objRecordset.Fields(i).Name
        MsgBox objRecordset.Fields(i).Value
Next
 
' Cloture de la connexion
objRecordset.Close
Set objRecordset = Nothing
Set objCommand = Nothing
Set objConnection = Nothing
Le code fonctionne, mais je ne récupère pas d'informations concernant le(s) groupe(s).

J'ai trouvé un autre code, mais en VB 2005, qui pourrait permettre de le récupérer :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
Dim searcher As DirectorySearcher = Nothing
Dim colEntry As New Collections.Generic.List(Of String) 
Try
 
'Objet de notre utilisateur de la hiérarchie Active Directory.
searcher = New DirectorySearcher(New DirectoryEntry("LDAP://" & domain, username, password)) 
'On va chercher ici un objet de type user et dont le nom d'ouverture de session = <username>.
searcher.Filter = String.Concat("(&(objectClass=User) (sAMAccountName=", username, "))") 
'Ne récupère que la propriété MemberOf.
searcher.PropertiesToLoad.Add("MemberOf") 
'Recherche et retourne la première entrée trouvée.
Dim result As SearchResult = searcher.FindOne 
'Parcours le contenu de la propriété MemberOf de notre entrée trouvée.
For i As Integer = 0 To result.Properties("MemberOf").Count - 1 
'Récupère la chaine LDAP.
Dim sProp As String = result.Properties("MemberOf")(i) 
'Extrait le nom du groupe de la chaine.
colEntry.Add(sProp.Substring(3, sProp.IndexOf(",") - 3)) 
Next
Catch ex As Exception 
exeption = ex
 
Finally
 
'Libère les ressources.
 
searcher.Dispose()
 
End Try
Est-ce qu'il est possible de convertir ce code pour Excel ? Quelles références dois-je importer ?

Merci.