Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2010, 15h26   #1
Membre du Club
 
Charles Taquet
Inscription : juillet 2010
Messages : 88
Détails du profil
Informations personnelles :
Nom : Charles Taquet
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : juillet 2010
Messages : 88
Points : 42
Points : 42
Par défaut Liaison entre access et Active directory

Bonjour

Je voudrais savoir s'il est possible de récupérer la liste des utilisateurs d'active directory et de insérer dans une base Access.

Pour l'instant j'ai juste un code qui me permet de récupérer tout l'active directory, ce que je voudrais, c'est pouvoir filtrer et récupérer seulement ce que je souhaite (Déscendre dans l'arborescence)

Cordialement
Merci de votre aide
charlingals1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 10h13   #2
Membre du Club
 
Charles Taquet
Inscription : juillet 2010
Messages : 88
Détails du profil
Informations personnelles :
Nom : Charles Taquet
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : juillet 2010
Messages : 88
Points : 42
Points : 42
Bonjour

J'explicite un peu plus mon problème, J'ai récupéré un morceau de code sur le net afin d'effectuer une connexion entre Access et VBA, voici le code de connexion :

Code :
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
'Déclaration des variables
    Dim strScope As String, strAttrs As String, strFilter As String, strBase As String, strDomainDN As String, strPath As String
    Dim LDAP As String, group As String, login As String, nom As String, mbrf As String
    Dim prenom As String, validite As String, expi As String, org As String
    Dim tvar() As String
    Dim sql As String
    Dim mabd As Database
    Dim objconn As Object, objRS As Object, objuser As Object
    Dim member As Variant
    Dim i As Integer
 
    Set mabd = CurrentDb() 'mabd est la base de donnée dans laquel on travaille
    strDomainDN = "mon domaine"
    strBase = "<LDAP://" & strDomainDN & ">;" 'Définition de l'objet
    strFilter = "(&(objectclass=user)(objectcategory=person));" 'Filtre le jeu d'enregistrement afin de garder que les utilisateurs dans l'objet AD
    strAttrs = "distinguishedname;" 'Correspond à l'attribut de l'objet que l'on va regarder
    strScope = "subtree" 'On pourra rechercher les utilisateurs dans l'arborescence
    i = 1
 
    'Connection à la base
    Set objconn = CreateObject("ADODB.Connection") 'Création d'un objet pour la connexion
    objconn.Provider = "ADsDSOObject" 'Définition du pilote de connexion
    objconn.Open "Active Directory Provider" 'Ouverture de la base
 
    'Validation de la connexion
    Set objRS = objconn.Execute(strBase & strFilter & strAttrs & strPath & strScope)
    objRS.MoveFirst 'Requête d'action sur la recherche.
 
    'Suppression des données existante dans la base.
    sql = "DELETE * FROM TP_Utilisateur_importer"
    DoCmd.SetWarnings False
    DoCmd.RunSQL sql
    DoCmd.SetWarnings True
 
    Do Until objRS.EOF
        LDAP = (objRS.Fields(0).Value)  'Obtient le lien LDAP de l'objet trouver
        Set objuser = GetObject("LDAP://" & LDAP & "")
 
        Traitement...
    Loop
 
mabd.Close
Set objRS = Nothing
Set objconn = Nothing
End Sub
Ce code fonctionne parfaitement il me récupére bien tous les utilisateurs de l'active directory. Le soucis c'est que je voudrais récupérer qu'une partie de l'AD. L'active directory est classé en dossier
Premier niveau pays (france, indonésie,...)
Deuxiéme niveau ville (Paris, Rouen,...)
Troisiéme niveau Statut (utilisateur, Manageur,Administrateur)
Moi ce que je voudrais récupérer c'est seleument le troisiéme niveau d'une ville donnée et d'un pays donnée (france\Rouen\utilisateur, france\Rouen\Manageur, france\Rouen\Administrateur)

J'ai trouvé sur le net que l'on pouvez écrire le chemin ldap comme ça :
strDomainDN = "OU=france\Rouen\utilisateur,DC=Domaine,Dc=Extension"
strBase = "<LDAP://" & strDomainDN & ">;"

Mais ça me mes une erreur "Le tableau n'existe pas"

Est ce que quelqu'un aurai une idée car la je sèche complétement.

Cordialement
Et je vous remercie de votre aide
charlingals1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 10h44   #3
Membre du Club
 
Charles Taquet
Inscription : juillet 2010
Messages : 88
Détails du profil
Informations personnelles :
Nom : Charles Taquet
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : juillet 2010
Messages : 88
Points : 42
Points : 42
Bonjour

Personne a une idée pour pouvoir régler mon problème. Est ce que je me suis mal exprimer .

Une idée, une piste, une direction, Peut importe la solution donnée ça m'aiderai beaucoup

Merci
J'attends votre retour.
charlingals1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 12h21   #4
Membre expérimenté
 
Inscription : juillet 2005
Messages : 555
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2005
Messages : 555
Points : 578
Points : 578
Par défaut on regarde

Bonjour,

sur ce forum peut de personne ont accès à une arborescence dans un domaine.

J'ai l'opportunité d'avoir accès à une arbo, je fais les tests en ce moment même.

Je n'ai jamais tenté d'y accéder avec access ...

je te tiens informé de mes pérégrinations.

a+
naphta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 16h53   #5
Membre expérimenté
 
Inscription : juillet 2005
Messages : 555
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juillet 2005
Messages : 555
Points : 578
Points : 578
Par défaut la suite ..

Bonjour,

Voici du code qui fonctionne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
Function extractionLDAP()
 
Dim conn
Dim lareq
Dim nomserveur
 
Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADSDSOObject"
nomserveur = "LDAP://nomduserveur"
conn.Properties("User ID") = "domaine\administrateur"
conn.Properties("Password") = "motdepasse"
conn.Properties("Encrypt Password") = True
conn.Open "ADs Provider"
 
 
Set lareq = conn.Execute("SELECT ADsPath, cn FROM '" + nomserveur + "' WHERE objectClass='user' and objectCategory ='Person'")
 
    While Not lareq.EOF
        Debug.Print lareq("cn").Value
        lareq.MoveNext
    Wend
 
End Function

pour le filtrage de la requête
j'ai installé "adsi edit" , puis je suis allé voir les catégories en visualisant les propriétés des objets pour effectuer le filtrage désiré, pour ensuite les ajouter à la condition (where),

dans l'exemple on filtre seulement les personnes, souci c'est qu'il peut y avoir des personnes logiques ...

l'intégration dans une table c'est gâteau.

a+
naphta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 16h01   #6
Membre du Club
 
Charles Taquet
Inscription : juillet 2010
Messages : 88
Détails du profil
Informations personnelles :
Nom : Charles Taquet
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : juillet 2010
Messages : 88
Points : 42
Points : 42
Par défaut Voici la solution

Bonjour

Après de multiple de recherche est un accès directe sur l'active directory, j'ai trouvé le moyen d'accéder à l'arborescence de celui ci. Le moyen d'y accédez est d'utiliser le mot clé "OU" dans le chemin Ldap.

Voici comment je l'ai écrit

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Déclaration de variable
    ...
    Set mabd = CurrentDb() 'mabd est la base de donnée dans laquel on travaille
    strDomainDN = "Ou=Arbo4,Ou=Arbo3,Ou=Arbo2,Ou=Arbo1, DC=mon domaine, DC=Extension"
    strBase = "<LDAP://" & strDomainDN & ">;" 'Définition de l'objet
    strFilter = "(&(objectclass=user)(objectcategory=person));" 'Filtre le jeu d'enregistrement afin de garder que les utilisateurs dans l'objet AD
    strAttrs = "distinguishedname;" 'Correspond à l'attribut de l'objet que l'on va regarder
    strScope = "subtree" 'On pourra rechercher les utilisateurs dans l'arborescence
    i = 1
 
    'Connection à la base
...
Fonction
Là où j'ai bloquer était que j'indiquai le chemin dans le sens de Lecture (Arbo1, arbo2,...). Alors qu'il faut partir du dossier source (Arbo4, arbo3, arbo2,...).

En espérant que ma réponse va aider d'autres personnes, Celle si peux être mis dans la FAQ

Cordialement
charlingals1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h12.


 
 
 
 
Partenaires

Hébergement Web