IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer groupe AD d'un utilisateur [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut Récupérer groupe AD d'un utilisateur
    Bonjour à tous,

    J'utilise actuellement ce code pour récupérer le nom de l'utilisateur (nom de session windows) qui ouvre mon document Excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Const PremiereLigneTableau As Integer = 11
    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
    (ByVal lpBuffer As String, nSize As Long) As Long
    Option Compare Text
    '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
    J'aimerai maintenant savoir comment faire pour récupérer le groupe AD associé à mon utilisateur...

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    Trouvé !!

    Voici le code que j'associe au code précédent afin de récupérer l'ensemble des groupes d'un utilisateur ... (Pensez à remplacer NomDomaineEntreprise et ExtensionNomDomaineEntreprise) :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Function RecupGroupeUser(UserName As String) As String
        Dim adoConnection As ADODB.Connection
        Dim adoCommand As ADODB.Command
        Dim adoRecordset As ADODB.Recordset
        Dim strBase, strFilter, strAttributes, strQuery As String
        Dim listGroups() As Variant
        Dim i As Integer
     
        'Initialisation des objets ADO
        Set adoCommand = New ADODB.Command
        Set adoConnection = New ADODB.Connection
        Set adoRecordset = New ADODB.Recordset
     
        adoConnection.Provider = "ADsDSOObject"
        adoConnection.Open "Active Directory Provider"
        adoCommand.ActiveConnection = adoConnection
     
        'Recherche du domaine Active Directory
        strBase = "<LDAP://dc=NomDomaineEntreprise ;dc=ExtensionNomDomaineEntreprise>"
     
        'Filtre sur l'utilisateur
        strFilter = "(&(objectCategory=user)(samAccountName=" & UserName & "))"
     
        'On récupère l'ensemble des groupes de l'utilisateur
        strAttributes = "memberOf"
     
        'Construction de la requête LDAP
        strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
        adoCommand.CommandText = strQuery
        adoCommand.Properties("Page Size") = 300
        adoCommand.Properties("Timeout") = 30
        adoCommand.Properties("Cache Results") = False
     
        'Exécution de la requête
        Set adoRecordset = adoCommand.Execute
     
        'Parcours des résultats de la requête
        Do Until adoRecordset.EOF
     
            'On stocke l'ensemble des groupes dans un tableau de variants
            listGroups = adoRecordset.Fields("memberOf").Value
     
            'Pour chaque élément du tableau
            For i = 0 To UBound(listGroups)
                Dim chaine_groupe As Variant
                Dim groupTmp As String
     
                chaine_groupe = listGroups(i)
                'On extrait la donnée qui nous intéresse (le nom exact du groupe)
                groupTmp = Mid(chaine_groupe, InStr(chaine_groupe, "CN=") + 3, InStr(chaine_groupe, ",OU=") - 4)
                MsgBox groupTmp
                If groupTmp = "LABO" Then
                    RecupGroupeUser = "LABO"
                Else
                    If groupTmp = "Unite" Then
                        RecupGroupeUser = "Unite"
                    End If
                End If
     
            Next
     
            ' Move to the next record in the recordset.
            adoRecordset.MoveNext
        Loop
     
        ' Clean up.
        adoRecordset.Close
        adoConnection.Close
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOS] Récupérer les infos du profil utilisateur
    Par Amélie Ladoque dans le forum Windows
    Réponses: 2
    Dernier message: 13/01/2006, 17h41
  2. Récupérer le login de mes utilisateurs
    Par priest69 dans le forum ASP
    Réponses: 8
    Dernier message: 22/12/2005, 08h56
  3. Delphi - récupérer les infos d'un utilisateur
    Par jlf dans le forum Débuter
    Réponses: 2
    Dernier message: 26/06/2004, 11h34
  4. Réponses: 3
    Dernier message: 07/05/2004, 10h01
  5. Récupérer le nom de l'utilisateur sous linux
    Par Michaël dans le forum POSIX
    Réponses: 7
    Dernier message: 25/12/2003, 21h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo