Tu peux par exemple utiliser un filtre type de Classe d'objet sur ta variable objet.
Set objRootDSE = GetObject("LDAP://rootDSE" )
Set objOU = GetObject("LDAP://OU=PRES," & objRootDSE.Get("defaultNamingContext" ))
objOU.Filter = Array("user" )
...
quelques types de Classe: "organizationalUnit", "user", "group", "computer"... on peut mettre plusieurs critères ex: Array("organizationalUnit", "user" ) Limités à 2 de mémoire.
Ensuite dans ta boucle, tu testes le nom du type de classe de l'objet de ta collection filtrée.
For Each objItem In objOU
If objItem.Class = "user" Then
Wscript.Echo ObjItem.Name & vbcrlf
...
End If
If objitem.Class = "organizationalUnit" Then
...
End If
Next
Pour le deuxième problème, exploite la récursivité si ton objItem est une Ou. Donc il serait pratique de passer l'Ou en paramètre.
Reste à peaufiner en pratique...