[VB6] Problème Gestion d'erreur

Korangar Messages postés 9 Statut Membre -  
 toto -
Bonjour,
Le but du script est de récupérer les comptes administrateurs des machines d'un domaine dans un fichier texte.
J'ai récupéré la majeur partie du code source sur le site de microsoft, cependant il ne gère pas deux problèmes concernant la récupération à savoir "Erreur 70: Accès refusé" et "Erreur -2147024843: Chemin Réseau introuvable".

J'ai tenté de gérer l'erreur de cette façon, mais lors de l'execution le "On Error Go To Erreur" est ignoré. Lors de l'execution manuelle, si je reviens sur la condition "If Err.Number <> 70 And Err.Number <> -2147024843 Then", le bloc est bien ignoré.

J'utilise VB6 SP6

Serait il possible d'avoir de l'aide sur ce problème ?
Merci d'avance.

Private Sub recuperation_Click()


Open "C:\sauvegarde.txt" For Append As #1

Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
    "Select Name, Location from 'LDAP://DC=mondomaine,DC=com' " _
        & "Where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
 
    strComputer = objRecordSet.Fields("Name").Value
    strGroup = "Administrateurs"
    resultat = resultat & objRecordSet.Fields("Name").Value & ";"
Erreur:
    Err.Clear
    If Err.Number <> 70 And Err.Number <> -2147024843 Then
        On Error GoTo Erreur
        Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup & ",group")
        
        For Each objMember In objGroup.Members

            resultat = resultat & objMember.Name & ";"

        Next
    End If

    Print #1, resultat
    
    resultat = ""
    objRecordSet.MoveNext

Loop



resultat.Caption = "Récupération Terminée"


Close

End Sub

3 réponses

  1. Korangar Messages postés 9 Statut Membre 2
     
    Bonjour,

    Je me permets de vous relancer car ce problème m'enquiquine et que je n'ai toujours pas trouvé de réponse.

    Merci d'avance
    1
  2. toto
     
    OOOPS ! moi aussi j'ai mis mon Erreur: et son traitement au mauvais endroit. Ils devraient être à la fin du sub, après un exit sub pour éviter leur exécution quand il n'y a pas d'erreur
    1
  3. toto
     
    Bonjour
    If Err.Number <> 70 And Err.Number <> -2147024843 Then
    Ce test est inutile : il est toujours vrai après un Err.clear

    Ton traitement d'erreur n'est pas conventionnel. Normalement, chaque appel à On Error goto ne doit être exécuté qu'une fois, ou 'refermé' par un appel à On Error goto 0, et le traitement correspondant au cas d'erreur se trouver dans un bloc séparé.
    ( pas testé)
    ...
    Err.Clear
    Do Until objRecordSet.EOF
     
        strComputer = objRecordSet.Fields("Name").Value
        strGroup = "Administrateurs"
        resultat = resultat & objRecordSet.Fields("Name").Value & ";"
        On Error GoTo Erreur
        Set objGroup = GetObject("WinNT://" & strComputer & "/" & strGroup & ",group")
        On Error goto 0
         For Each objMember In objGroup.Members
            resultat = resultat & objMember.Name & ";"
        Next
        End If
    
        Print #1, resultat
    Suite:    
        resultat = ""
        objRecordSet.MoveNext
    Erreur:
      If Err.Number = 70 OR Err.Number = -2147024843 Then resume Suite ' erreurs attendues
      Msgbox "Erreur " & Err.Number & " : " & Err.Description 'erreurs innattendues
      End
    Loop
    
    
    
    resultat.Caption = "Récupération Terminée"
    
    
    
    0