en fait j'avais bien mon code de bon, mais un petit bug bidon sur ma requête
pour ceux que ça intéresse, voici le code qui est destiné à m'afficher dans une listeview affichée en mode rapport nommée "lstliste" les comptes utilisateurs d'une OU spécifiée s'ils n'ont pas été utilisés depuis 60 jours et s'ils ont été désactivés.
la liste comporte 3 colonnes :
- Nom d'utilisateur
- durée d'inactivité du compte
- compte désactivé ?
Sub Listage_Comptes()
On Error Resume Next
Dim objCon, strQuery, strADSPath, objUser 'Déclaration des variables
Dim itmX As ListItem, Interm As String, Date_Contrôle As String
Dim Ecart_Date
strQuery = "SELECT cn, adspath FROM 'LDAP://ou=aaa,ou=bbb,ou=ccc,dc=dc,dc=toto,dc=com' WHERE objectclass='User' AND objectcategory='Person'" 'Définition de la requête à exécuter
Set objrecset = objCon.Execute(strQuery) 'Exécution de la requête
Do While Not objrecset.EOF 'Boucle dans le recordset jusqu'à la fin du tableau
Set objUser = GetObject(objrecset.Fields("adspath").Value) 'Connexion à l'objet utilisateur par le biais de son adspath
Interm = Format(objUser.LastLogin, "dd-mm-yy") 'Récupération de la propriété "lastlogin" et formattage de type "jj-mm-aa"
Ecart_Date = DateDiff("y", Interm, Date_Contrôle) 'Calcul du nombre de jours entre la dernière connexion et la date du jour
If Ecart_Date >= 60 Then 'Si l'écart de date est supérieur à 60 jours :
Set itmX = lstListe.ListItems.Add(, , objrecset.Fields("cn").Value) 'Ajoute le common name à la liste
itmX.SubItems(1) = Interm 'Affichage de la date de dernière connexion dans la seconde colonne
itmX.SubItems(2) = Ecart_Date & " jours" 'Affichage du nombre de jours sans connexion
If objUser.AccountDisabled Then itmX.SubItems(3) = "Oui" 'Affiche si le compte est désactivé
End If
DoEvents 'Accorde du temps au processeur pour les tâches d'arrière plan
objrecset.movenext 'passe à l'enregistrement suivant
Loop
objCon.Close 'ferme la connexion à l'Active Directory
end sub
Le code est testé et approuvé sur un site comportant environ 600 comptes utilisateurs...