lange521
Messages postés16Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention 1 avril 2008
-
19 mars 2008 à 08:23
lange521
Messages postés16Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention 1 avril 2008
-
1 avril 2008 à 12:37
Bonjour à tous,
Voilà j'ai un petit soucis.
On me demande de créer un programme sous Excel permettant à l'aide d'un bouton mais aussi d'une variable saisi dans un champ, qui est le nombre de semaines avant expiration, d'envoyer des mails à tous les utilisateurs d'active directory.
Mais je n'y connais rien à Active directory et à comment se connecter à active directory en vba, mais aussi comment accéder aux utilisateurs et récupérer leur informations.
Je sais pas si ce que je dis est compréhensible mais merci d'avance à ceux qui ont une réponse.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 mars 2008 à 15:04
Je te cherche ca dans la doc.
reste que le code que je t'ai indiqué peut être remanié ainsi :
Private Property Get PasswordExpirationDate(ByRef vsDomain As String, ByRef vsUser As String) As Date
Dim oUser As Object
On Local Error Resume Next
Set oUser = GetObject("WinNT://" & vsDomain & "/" & vsUser & ",user")
If Not Nothing Is oUser Then
PasswordExpirationDate = oUser.PasswordExpirationDate
End If
End Property
lange521
Messages postés16Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention 1 avril 2008 27 mars 2008 à 15:43
Bonjour
j'ai trouvé un bout de code sur internet permettant de savoir quand arrive à expiration le mot de passe d'un utilisateur, mais j'ai un problème lorsque je l'éxécute, il me met une erreur d'automation.
Sub bouton12_Quandclic()
'========================================
' First, get the domain policy.
'========================================
'Dim oDomain As IADsContainer
'Dim oUser As IADsUser
Dim maxPwdAge As LargeInteger
'========================================
' Declaring numDays as Currency, due to a
' large number calculation.
'========================================
Dim numDays As Currency
Dim sQuery As String
Set oRoot = GetObject("LDAP://RootDSE")
sDomain = oRoot.Get("defaultNamingContext")
Set conn = CreateObject("ADODB.Connection")
Set comm = CreateObject("ADODB.Command")
conn.Provider = "ADsDSOObject"
conn.Open "ADs Provider"
Set comm.ActiveConnection = conn
strDomainDN = oRoot.Get("defaultNamingContext")
Set oDomainDN = GetObject("LDAP://" & strDomainDN)
Set oDomain = GetObject("LDAP://" & strDomainDN)
Set maxPwdAge = oDomain.Get("maxPwdAge")
'========================================
' Calculate the number of days that are
' held in this value. 'numDays ((maxPwdAge.HighPart * 2 ^ 32) + _
maxPwdAge.LowPart) / -864000000000@
Debug.Print "Maximum Password Age: " & numDays
'========================================
' Determine the last time that the user
' changed his or her password. 'Set oUser GetObject("LDAP://" & strUserDN) ' erreur sur cette ligne, erreur d automation
'========================================
' Add the number of days to the last time
' the password was set. 'whenPasswordExpires DateAdd("d", numDays, oUser.PasswordLastChanged)
Debug.Print "Password Last Changed: " & oUser.PasswordLastChanged
Debug.Print "Password Expires On: " & whenPasswordExpires
'========================================
' Clean up. 'Set oUser Nothing
Set maxPwdAge = Nothing
Set oDomain = Nothing
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 27 mars 2008 à 15:49
Ma fonction ne te plait donc pas ?
Private Property Get PasswordExpirationDate(ByRef vsDomain As String, ByRef vsUser As String) As Date
Dim oUser As Object
On Local Error Resume Next
Set oUser = GetObject("WinNT://" & vsDomain & "/" & vsUser & ",user")
If Not Nothing Is oUser Then
PasswordExpirationDate = oUser.PasswordExpirationDate
End If
End Property
Tout ce qu'il te reste a faire, c'est de pouvoir lister les user, afin de tester l'expiry de chacun...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 27 mars 2008 à 16:18
doit venir du fait que tu sembles faire du VBS (je t'ai filé du VB6)
ca donnerait en gros:
Private Property Get PasswordExpirationDate(vsDomain, vsUser)
Dim oUser
On Local Error Resume Next
Set oUser = GetObject("WinNT://" & vsDomain & "/" & vsUser & ",user")
If Not Nothing Is oUser Then
PasswordExpirationDate = oUser.PasswordExpirationDate
End If
End Property
lange521
Messages postés16Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention 1 avril 2008 28 mars 2008 à 09:31
salut
c'est encore moi.
bon j'ai essayé pleins de trucs pour avoir l'expiration du mot de passe mais j'y arrive pas, soit le champs est vide soit j'ai 00:00:00 comme valeur. Il doit y avoir un problème, les champs de l'ad nécessaire ne sont peut être pas renseignés ou je ne c quoi d'autre.
Qu'en pensez vous ?
Si quelqu'un a une réponse merci.
lange521
Messages postés16Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention 1 avril 2008 28 mars 2008 à 09:48
mon code pour récupérer l'expiration de la date, c ta fonction qui me retourne 00:00:00
mais j'ai déjà essayé une autre fonction mais elle marche pas non plus, pwdLastSet est null.