|
Trouver une ressource
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
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
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
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.
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|