Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LISTE TÉLÉPHONIQUE VIA ACTIVE DIRECTORY


Information sur la source

Catégorie :VB.NET Source .NET ( DotNet ) Classé sous : téléphonique, activedirectory, ldap, liste Niveau : Débutant Date de création : 26/07/2007 Date de mise à jour : 30/07/2007 14:03:20 Vu / téléchargé: 9 025 / 501

Note :
Aucune note

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Bonjour,

Je suis heureux de vous présenter mon tout premier programme que j'ai réalisé en VB .NET!
Bien sûr je n'aurais rien pu faire sans l'immense aide que mon apporté jmfmarques et Renfield! Encore un grand merci!
Je l'avais créé dans l'unique but de m'entraîner, mais je suis dit que je pourrais en faire profiter les autres, et c'est une bonne occasion d'avoir des critiques sur mon travail.

Le principe est simple:

Le programme scan toute l'active directory et relève les informations dont vous aurez choisi (Liste téléphonique pour mon cas)
Il va ensuite écrire ces données dans un fichiers excel et va ensuite améliorer un peu la mise en page. La mise en page du fichier est bien personnalisable. Le fichier sera ensuite enregistré à l'endroit désiré.

Comme je l'ai dis plus haut, les informations que vous voulez avoir sont totalement personnalisable. Mais pour mon cas il s'agissait de faire une liste téléphonique (utile pour une entreprise qui à besoin d'une liste téléphonique interne).

J'ai commenté un maximum mon code alors j'espère qu'il sera assez clair. Si ce n'est pas le cas, dite le moi

Si vous avez des critiques, des idées d'amélioration ou autres, n'hésitez pas! C'est aussi pour ça que je partage mon code.

PRES-REQUIS:

Références:
System.DirectoryServices
Microsoft Excel 9.0 Object library

PS: IMPORTANT!! Ce code est adapté si vous avez office en Français! si vous avez en anglais, il faut adapté le code pour modifier le nom de la feuille! Au lieu de Feuil1 il fraudra mettre Tabelle1 (allemand) ou Sheet1(anglais).
 

Source

  • Imports System.Reflection
  • Imports System.DirectoryServices
  • Module Module1
  • Sub Main()
  • '================================================================================================================
  • ' LISTE TELEPHONIQUE
  • '
  • ' auteur: Johan Tanner
  • ' Language: Visual Basic .NET
  • '================================================================================================================
  • Dim Ldap As DirectoryEntry = New DirectoryEntry("LDAP://NOMDUSERVEUR", "USERNAME", "PASSWORD")'Connexion au serveur Active directory
  • Dim searcher As DirectorySearcher = New DirectorySearcher(Ldap)
  • Dim DirEntry As DirectoryEntry
  • Dim excel As New Excel.Application
  • Dim wb As Excel.Workbook
  • Dim ws As Excel.Worksheet
  • Dim Li As Long
  • searcher.Filter = "(objectClass=user)"
  • excel.Visible = True 'la fenêtre excel est visible
  • wb = excel.Workbooks.Add(1) 'on ouvre un classeur dans excel
  • ws = wb.Worksheets(1) 'on ouvre une feuille dans le classeur excel
  • wb.Sheets("Feuil1").Select() 'on séléectionne la feuille nommé "Feuil1"
  • wb.Sheets("Feuil1").Name = "XXX" 'on renomme la feuil1 (XXX étant le nom que vous pouvez modifier à volonté)
  • Li = 4 'on assigne la valeur de 4 à Li
  • For Each result As SearchResult In searcher.FindAll
  • ' On récupère l'entrée trouvée lors de la recherche
  • DirEntry = result.GetDirectoryEntry
  • Dim a = DirEntry.Properties("displayName").Value 'on relève le nom et prénom
  • Dim b = DirEntry.Properties("TelephoneNumber").Value 'on relève le numéro de téléphone
  • Dim c = DirEntry.Properties("physicalDeliveryOfficeName").Value 'on relève le bureau
  • Dim d = DirEntry.Properties("initials").Value 'on relève les initiales
  • If c = "XXX" Then ' Si le champ Office(bureau) contient "XXX" (XXX étant la donnée du champ Office(bureau) dans active directory. Si un utilisateur n'as pas XXX dans le champs Offie, il ne sera pas pris. Ceci est modifiable bien sûr)
  • ws.Range("A" & Li).Value = a 'Ecriture de la valeur de a dans la cellule
  • ws.Range("A" & Li, "B" & Li).MergeCells = True 'fusion entre la cellule Ax et Bx
  • ws.Range("A" & Li, "B" & Li).Borders.LineStyle = 1 'ajout d'une bordure à la cellule
  • ws.Range("C" & Li).Value = d 'Ecriture de la valeur de d dans la cellule
  • ws.Range("C" & Li, "D" & Li).MergeCells = True 'fusion entre la cellule Cx et Dx
  • ws.Range("C" & Li, "D" & Li).Borders.LineStyle = 1 'ajout d'une bordure à la cellule
  • ws.Range("E" & (Li)).Value = b 'Ecriture de la valeur de b dans la cellule
  • ws.Range("E" & (Li), "F" & (Li)).MergeCells = True 'fusion entre la cellule Ex et Fx
  • ws.Range("E" & Li, "F" & Li).Borders.LineStyle = 1 'ajout d'une bordure à la cellule
  • Li = Li + 1 'on adition 1 à la valeur existante de Li
  • End If
  • Next
  • '================================================================================================================
  • ' PARTIE MISE EN PAGE DU FICHIER EXCEL
  • '================================================================================================================
  • ws.Range("A" & Li, "B" & Li).MergeCells = True 'fusion entra la cellule Ax et Bx
  • ws.Range("C" & Li, "D" & Li).MergeCells = True 'fusion entra la cellule Cx et Dx
  • ws.Range("E" & (Li), "F" & (Li)).MergeCells = True 'fusion entra la cellule Ex et Fx
  • ws.Range("A4:F" & Li).Sort(Key1:=ws.Range("A4"), Order1:=Global.Excel.XlSortOrder.xlAscending, Header:=Global.Excel.XlYesNoGuess.xlGuess, _
  • OrderCustom:=1, MatchCase:=False, Orientation:=Global.Excel.XlSortOrientation.xlSortColumns) 'Tri des données dans ordre alphabétique en sélectionnant les 3 colonnes
  • ws.Range("A1").Font.Bold = True 'Texte en gras
  • ws.Range("A1").Font.Size = 10 'Taille du texte
  • ws.Range("A1").Value = "NOM DE L'ENTREPRISE" 'Texte affiché
  • ws.Range("A1", "G1").MergeCells = True 'fusion des cellule A1 et G1
  • ws.Range("A1", "G1").Borders.LineStyle = 12 'bordure de la cellule (12 étant un style, 1 = style de base)
  • ws.Range("A2").Value = "Tél. direct : 058 534" 'Texte affiché
  • ws.Range("A2", "G2").MergeCells = True 'fusion entre la cellule A2 et G2
  • ws.Range("A3").Value = "Nom et Prénom" 'Texte affiché
  • ws.Range("A3").Font.Bold = True 'Texte en gras
  • ws.Range("A3", "B3").MergeCells = True 'fusion entre la cellule A3 et B3
  • ws.Range("A3", "B3").Borders.LineStyle = 1 'Bordure de la cellule (style standard)
  • ws.Range("C3").Value = "Visa" 'Texte affiché
  • ws.Range("C3").Font.Bold = True 'Texte en gras
  • ws.Range("C3", "D3").MergeCells = True 'fusion entre la cellule C3 et D3
  • ws.Range("C3", "D3").Borders.LineStyle = 1 'Bordure de la cellule (style standard)
  • ws.Range("E3").Value = "Téléphone" 'Texte affiché
  • ws.Range("E3").Font.Bold = True 'Texte en gras
  • ws.Range("E3", "F3").MergeCells = True 'fusion entre la cellule E3 et F3
  • ws.Range("E3", "F3").Borders.LineStyle = 1 'Bordure de la cellule (style standard)
  • wb.SaveAs("C:\Liste_tel.xls") 'Enregistrement du fichier (A choix)
  • End Sub
  • End Module
Imports System.Reflection
Imports System.DirectoryServices

Module Module1

    Sub Main()

        '================================================================================================================
        ' LISTE TELEPHONIQUE
        '
        ' auteur: Johan Tanner
        ' Language: Visual Basic .NET
        '================================================================================================================
        Dim Ldap As DirectoryEntry = New DirectoryEntry("LDAP://NOMDUSERVEUR", "USERNAME", "PASSWORD")'Connexion au serveur Active directory
        Dim searcher As DirectorySearcher = New DirectorySearcher(Ldap)
        Dim DirEntry As DirectoryEntry
        Dim excel As New Excel.Application
        Dim wb As Excel.Workbook
        Dim ws As Excel.Worksheet
        Dim Li As Long

        searcher.Filter = "(objectClass=user)"
        excel.Visible = True 'la fenêtre excel est visible 
        wb = excel.Workbooks.Add(1) 'on ouvre un classeur dans excel
        ws = wb.Worksheets(1) 'on ouvre une feuille dans le classeur excel

        wb.Sheets("Feuil1").Select() 'on séléectionne la feuille nommé "Feuil1"
        wb.Sheets("Feuil1").Name = "XXX" 'on renomme la feuil1 (XXX étant le nom que vous pouvez modifier à volonté)

        Li = 4 'on assigne la valeur de 4 à Li
        For Each result As SearchResult In searcher.FindAll

            ' On récupère l'entrée trouvée lors de la recherche
            DirEntry = result.GetDirectoryEntry
            Dim a = DirEntry.Properties("displayName").Value 'on relève le nom et prénom
            Dim b = DirEntry.Properties("TelephoneNumber").Value 'on relève le numéro de téléphone
            Dim c = DirEntry.Properties("physicalDeliveryOfficeName").Value 'on relève le bureau
            Dim d = DirEntry.Properties("initials").Value 'on relève les initiales

            If c = "XXX" Then ' Si le champ Office(bureau) contient "XXX" (XXX étant la donnée du champ Office(bureau) dans active directory. Si un utilisateur n'as pas XXX dans le champs Offie, il ne sera pas pris. Ceci est modifiable bien sûr)

                ws.Range("A" & Li).Value = a 'Ecriture de la valeur de a dans la cellule
                ws.Range("A" & Li, "B" & Li).MergeCells = True 'fusion entre la cellule Ax et Bx
                ws.Range("A" & Li, "B" & Li).Borders.LineStyle = 1 'ajout d'une bordure à la cellule

                ws.Range("C" & Li).Value = d 'Ecriture de la valeur de d dans la cellule
                ws.Range("C" & Li, "D" & Li).MergeCells = True 'fusion entre la cellule Cx et Dx
                ws.Range("C" & Li, "D" & Li).Borders.LineStyle = 1 'ajout d'une bordure à la cellule

                ws.Range("E" & (Li)).Value = b 'Ecriture de la valeur de b dans la cellule
                ws.Range("E" & (Li), "F" & (Li)).MergeCells = True 'fusion entre la cellule Ex et Fx
                ws.Range("E" & Li, "F" & Li).Borders.LineStyle = 1 'ajout d'une bordure à la cellule

                Li = Li + 1 'on adition 1 à la valeur existante de Li

            End If

        Next

        '================================================================================================================
        ' PARTIE MISE EN PAGE DU FICHIER EXCEL
        '================================================================================================================

        ws.Range("A" & Li, "B" & Li).MergeCells = True 'fusion entra la cellule Ax et Bx
        ws.Range("C" & Li, "D" & Li).MergeCells = True 'fusion entra la cellule Cx et Dx
        ws.Range("E" & (Li), "F" & (Li)).MergeCells = True 'fusion entra la cellule Ex et Fx

        ws.Range("A4:F" & Li).Sort(Key1:=ws.Range("A4"), Order1:=Global.Excel.XlSortOrder.xlAscending, Header:=Global.Excel.XlYesNoGuess.xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=Global.Excel.XlSortOrientation.xlSortColumns) 'Tri des données dans ordre alphabétique en sélectionnant les 3 colonnes

        ws.Range("A1").Font.Bold = True 'Texte en gras
        ws.Range("A1").Font.Size = 10 'Taille du texte
        ws.Range("A1").Value = "NOM DE L'ENTREPRISE" 'Texte affiché
        ws.Range("A1", "G1").MergeCells = True 'fusion des cellule A1 et G1
        ws.Range("A1", "G1").Borders.LineStyle = 12 'bordure de la cellule (12 étant un style, 1 = style de base)

        ws.Range("A2").Value = "Tél. direct : 058 534" 'Texte affiché
        ws.Range("A2", "G2").MergeCells = True 'fusion entre la cellule A2 et G2

        ws.Range("A3").Value = "Nom et Prénom" 'Texte affiché
        ws.Range("A3").Font.Bold = True 'Texte en gras
        ws.Range("A3", "B3").MergeCells = True 'fusion entre la cellule A3 et B3
        ws.Range("A3", "B3").Borders.LineStyle = 1 'Bordure de la cellule (style standard)

        ws.Range("C3").Value = "Visa" 'Texte affiché
        ws.Range("C3").Font.Bold = True 'Texte en gras
        ws.Range("C3", "D3").MergeCells = True 'fusion entre la cellule C3 et D3
        ws.Range("C3", "D3").Borders.LineStyle = 1 'Bordure de la cellule (style standard)

        ws.Range("E3").Value = "Téléphone" 'Texte affiché
        ws.Range("E3").Font.Bold = True 'Texte en gras
        ws.Range("E3", "F3").MergeCells = True 'fusion entre la cellule E3 et F3
        ws.Range("E3", "F3").Borders.LineStyle = 1 'Bordure de la cellule (style standard)

        wb.SaveAs("C:\Liste_tel.xls") 'Enregistrement du fichier (A choix)

    End Sub

End Module

Conclusion

Mon code sera mis à jour très prochainement afin d'y ajouter quelques truc.

J'aimerais pouvoir scanner uniquement un OU et non tout l'active directory.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

26 juillet 2007 11:55:42 :
Correction de commentaire
27 juillet 2007 11:27:59 :
Ajout de mon projet dans un fichier ZIP
27 juillet 2007 11:31:36 :
Modification du code
27 juillet 2007 11:35:37 :
Modification de commentaires
27 juillet 2007 12:45:11 :
Ajout d'un commentaire de présentation du code
30 juillet 2007 14:03:20 :
Ajout du pres-requis dans la présentation de la source

Commentaires et avis

signaler à un administrateur
Commentaire de thonyboy le 30/07/2007 10:20:35

Bonjour,

Voilà un travail qui m'interesse puisque je cherche a faire quelque chose en vbnet pour creer une liste téléphonique, sauf que dans mon cas je voudrais pouvoir réaliser des mises à jours.

Enfin donc voici de quoi me mettre le pied a l'étrier.

Sauf que, je suis débutant, et sans vouloir etre critique j'ai l'impression que tu as un peu mélangé tes sources. On a un fichier projet qui fait appel a des sources innexistantes (loginform1, listecontact_tempory_key etc)

Donc a cause de cela, et parceque je suis un gros nul je n'arrive pas a faire tourner le truc

signaler à un administrateur
Commentaire de julienlami le 30/07/2007 12:18:41

mais il est plein d'erreur

signaler à un administrateur
Commentaire de apache88 le 30/07/2007 13:51:47

Julienlami ==> C'est sûrement parcequ'il te faut ajouter la référence System.DirectoryServices et Microsoft Excel truc du genre.

Thonyboy ==> Bizzard je vais revoir un peu... mais si tu copies mon code et que tu créé un nouveau projet ça ne fonctionne pas?

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Retirer des composantes [ par Amonbofis ] Bonjour!Quelqu'un peux me dire comment retirer des composantes de la listede VB6?Ici je veux dire, quand on veux ajouter une composante au projet,par Problème de DBGRID [ par Steph ] Bonjour à tousDans un control DBGRID contenant une liste de nom par exempleComment faire pour que le contenu du DBGRID affiche la liste à partir d'une liste déroulante dans un datagrid [ par elfnoir ] bonjour a tous, je galere depuis plusieur jour sur un datagrid j'aimerai savoir comment on rempli la liste déroulante integré a un datagridmerci d'ava liste box [ par Wind ] J'aimerais lier une listbox avec un fichier de données (pas de basse de donnée mais genre fichier .ini ou txt).et en plus je voudrais que quand je cli Liste imprimante!!! [ par Le J ] Salut,Comment optenir la liste des imprimantes installés sur mon ordinateurs????MerciALPLe J Limiter le nombre de processus [ par Adrien ] à partir d'une liste d'adresses IP, je lance des batchs sur chacune des adresses mais le lancement en shell("batch.bat") m'ouvre les process "cmd" en liste déroulante et datagrid [ par g.hamel ] Comment activer un e liste déroulante intégrée associée à un buttondabs un controle datagridex: datagrid1.columns(2).button=truele click sur le bouton Liste des couleurs [ par $hawn ] Bonjour je voudrai savoir s'il existe une liste assez complète avec toutes les couleurs en HéxadecimalMerci beaucoup d'avance Comment enregistrer le contenu d'une liste box... [ par fatcat ] Comment enregistrer et ouvrir le contenut d'une listbox en utilisant l'ocx common dialog.Merci.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.