Bonjour,
Merci de votre aide, le code fait environ 3000 lignes (c'est d'ailleurs peut-être la cause)
En voici une partie fonctionnelle (sur mon infra) qui reprend le fonctionnement que j'utilise systématiquement pour construire mes tableaux puis les afficher:
Peut-être que je peux vous le transmettre en message privé car ce code comporte beaucoup d'informations concernant mon entreprise?
Merci de votre aide
<html>
<head>
<meta http-equiv= "Content-Type" content="text/html; charset=windows-1252">
<title>ADSearch</title>
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="bin/css/ADS_Style.css">
<script type="text/javascript">
function FocusOnInput()
{
document.getElementById("inputRecherche").focus();
}
</script>
<script language="vbscript">
Dim sNTDomain, sRootUserOU, acctLocked, acctdisable, sAgreed
Set objShell = CreateObject("WScript.Shell")
Const strDomainPath = "dc=Domsyn,dc=fr"
Const Path = "\\domsyn.fr\dfs\Communs\Tous\ADSearch\ADSearch_Dev"
Const ForReading 1, ForWriting 2, ForAppending = 8
AppData = objShell.ExpandEnvironmentStrings("%APPDATA%") & "\ADSearch"
Set filesys = CreateObject("Scripting.FileSystemObject")
if not filesys.FolderExists(AppData) then filesys.CreateFolder (AppData)
on error resume next
sAgreed = objShell.RegRead("HKCU\Software\ADSearch\License")
on error goto 0
Sub window_OnLoad()
End Sub
'#################################################################################################################################################
' SUB RECHERCHE
'#################################################################################################################################################
Sub Recherche
if len(trim(struserid.value)) = 0 then exit sub
Const ADS_UF_ACCOUNTDISABLE = &H02
Const E_ADS_BAD_PATHNAME= &h80005000
datej = Now
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOOBject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("DefaultNamingContext")
'###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################"'
' RECHERCHE UTILISATEURS
'###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################"'
acctdisable = "Activé"
acctlocked = "Non verrouillé"
if struserid.value = "*" then
strQuery = "SELECT sAMAccountName,sn,givenName,distinguishedname,userAccountControl,cn,title FROM 'LDAP://OU=Agences,OU=_RACINE,dc=domsyn,dc=fr' WHERE objectCategory='user'"
else
strFilter = "(&(objectCategory=person)(objectClass=user) (|(sAMAccountName=*" & struserid.value & "*) (displayName=*" & struserid.value & "*)))"
strQuery = "<LDAP://" & strDNSDomain & ">;" & strFilter & ";sAMAccountName,sn,givenName,distinguishedname,userAccountControl,cn,title"
end if
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 750
objCommand.Properties("Timeout") = 60
objCommand.Properties("Cache Results") = False
Set objRecordset = objCommand.execute
x = 0
Tableau_User = "\" & _
\"----
Nom |Nom complet |Fonction |Site |Etat |Date d'expiration |\"
Do Until objRecordset.EOF
affiche = \"oui\"
filtre_on = \"aucun\"
strDN = objrecordset.fields(\"distinguishedName\")
intFlag = objRecordSet.Fields(\"userAccountControl\")
lngFlag = objRecordSet.Fields(\"userAccountControl\")
Tampon = Split(strDN,\",\",2)
UserOuName = (Tampon(1))
OUdn = \"LDAP://\" & UserOuName
Tampon1 = Split(strDN,\",\",2)
Tampon2 = Split(Tampon1(1),\"=\",2)
Tampon3 = Split(Tampon2(1),\",\",2)
Txt_OU = Tampon3(0)
Txt_useridcolor = objRecordSet.Fields(\"SamAccountName\")
Txt_userid = objRecordSet.Fields(\"SamAccountName\")
Txt_fullname = objRecordset.Fields(\"cn\")
Txt_Title = objRecordset.Fields(\"title\")
Set objUser = GetObject(\"LDAP://\" & strDN & \"\")
intUAC = objUser.Get(\"UserAccountControl\")
acctdisable = \"Activé\"
If (intFlag And ADS_UF_ACCOUNTDISABLE) <> 0 Then
acctdisable = \"Désactivé\"
End If
Txt_expire = left(objUser.AccountExpirationDate,10)
datee = CDate(Txt_expire)if Txt_expire \"01/01/1970\" or Txt_expire \"01/01/1601\" thenif acctdisable \"Désactivé\" then Txt_Expire \"\"if acctdisable \"Activé\" then Txt_Expire \"Jamais\"
else
if DateValue(Datej) < DateValue(datee) Then Txt_expire = \"\" & Txt_expire & \"\"
if DateValue(Datej) > DateValue(datee) Then
Txt_expire = \"\" & Txt_expire & \"\"
if acctdisable = \"Activé\" then
Txt_useridcolor = \"\" & Txt_useridcolor & \"\"
filtre_on = \"actifexpire_on\"
end if
end if
end if
if filtre.value = \"actifexpire\" thenif not filtre_on \"actifexpire_on\" then affiche \"non\"
end if
if filtre.value = \"actif\" thenif acctdisable \"Désactivé\" then affiche \"non\"
end if
if filtre.value = \"inactif\" thenif acctdisable \"Activé\" then affiche \"non\"
end if
if x Mod 2 = 0 then
classpi = \" class=\"\"odd\"\"\"
else
classpi = \"\"
end if
if affiche = \"oui\" then
Tableau_User = Tableau_User & \"----
" & Txt_useridcolor & ", " & objRecordSet.Fields("cn") & ", " & Txt_Title & ", " & Txt_OU & ", " & acctdisable & ", " & Txt_expire & ", \"
x=x+1
end if
objRecordset.MoveNext
Loop
If x = 0 Then
Tableau_User = \"\"
Else
Tableau_User = Tableau_User & "<caption> " & x & " utilisateur(s) </caption>
"
End If
'#################################################################################################################################################
' RECHERCHE RESULTAT
'#################################################################################################################################################
document.getElementById("Infos").innerHTML = ""
document.getElementById("Titre").innerHTML = Tableau_User
document.getElementById("Listes").innerHTML = ""
End Sub
'#################################################################################################################################################
' BODY
'#################################################################################################################################################
</script>
</head>
,
<script type="text/javascript">
document.getElementById('inputRecherche').onkeypress = function(ev) {
ev = ev || window.event;
if (ev.keyCode==13)
Recherche();
};
</script>
<select style="border-width: 0px;" name="filtre"><option value="aucun">Filtre...</option><option value="actifexpire">Comptes actifs et expirés</option><option value="actif">Comptes actifs</option><option value="inactif">Comptes inactifs</option></select>
<script language="vbscript">
######################################"'
' IDENTIFICATION DE L'UTILISATEUR CONNECTE A ADSEARCH ET DEFINITION DU NIVEAU DE SECURITE
'#################################################################################################################################################
on error resume next
Set WshNet = CreateObject("WScript.Network")
Host = WshNet.ComputerName
ADS_User = WshNet.Username
Set objADSysInfo = CreateObject("ADSystemInfo")
ADS_strUserDN = objADSysInfo.username
Set objUser = Getobject("LDAP://" & ADS_strUserDN)
Nom = objUser.Get("name")
Prenom = objUser.Get("givenName")
Initiales = left(Prenom, 1) & left(Nom, 1)
if not Prenom = "" then
Qui = Prenom
Else
Qui = ADS_User
End If
objmemberOf = objUser.GetEx("memberOf")
n=0
For Each objGroup in objmemberOf
if objGroup = "CN=ADSearch_N1,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+1
if objGroup = "CN=ADSearch_N2,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+2
if objGroup = "CN=ADSearch_N3,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+4
if objGroup = "CN=ADSearch_N4,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+8
if objGroup = "CN=ADSearch_N5,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+16
Next
if n=0 then
document.getElementById("status_bar").innerHTML = "\" & _
\"" & _
" " & _
"
"
document.getElementById("spnStatusDomain").innerHTML = "Bienvenue sur ADSearch"
msgbox "Bonjour " & Prenom & ", vous n'êtes pas autorisé(e) à utiliser cette application. Veuillez contacter votre administrateur"
else
if n=>1 then Niveau = 1
if n=>2 then Niveau = 2
if n=>4 then Niveau = 3
if n=>8 then Niveau = 4
if n=>16 then Niveau = 5
if Niveau > 1 then
MySQLDir = "C:\Program Files (x86)\MySQL"
if not filesys.FolderExists(MySQLDir) then
if left(Host, 5) = "APPLI" then
msgbox "Il manque un produit sur votre session, occasionnant un fonctionnement de ADSearch en mode dégradé. Veuillez contacter voitre administrateur en cas de besoin"
else
msgbox "Pour utiliser ADSearch, vous devez installer un connecteur ODBC Mysql." & Chr(13) & Chr(13) & "Cliquez sur OK pour débuter l'installation", VbInformation, "Attention"
objShell.run Path & "\bin\sources\mysql.msi"
end if
end if
document.getElementById("BoutonNiveau").innerHTML = ""
document.getElementById("spnStatusDomain").innerHTML = "Bonjour " & Qui & ", bienvenue sur ADSearch. "
else
document.getElementById("spnStatusDomain").innerHTML = ""
document.getElementById("status_bar").innerHTML = ""
Call GetOu(replace(ADS_strUserDN,"'","'") & "~FicheUtilisateur")
end if
end if
</script>
</html>