Erreur 91 : Variable objet ou variable bloc With non définie

Résolu
fred.toto Messages postés 73 Date d'inscription mardi 10 avril 2001 Statut Membre Dernière intervention 4 mars 2009 - 26 févr. 2009 à 08:32
fred.toto Messages postés 73 Date d'inscription mardi 10 avril 2001 Statut Membre Dernière intervention 4 mars 2009 - 4 mars 2009 à 12:53
Bonjour à tous,
j'ai un problème récurrent:
j'ai l'erreur "Erreur n°: 91 - Description: Variable objet ou variable bloc With non définie"entre le             
            Debug.Print "Magic - i: " & i
et le
            Debug.Print "Magic - f_inet.Document.body.innerHTML: " & Right(f_inet.Document.body.innerHTML, 50)
du code suivant.

Perso, je ne comprends pas bien pourquoi mais bon. Quand je mets un point d'arrêt sur le second debug, tout se passe bien, mais aussitot qu'il se lance tout seul, il plante...
Au cas où vous auriez une idée, je joinds le code.
Merci d'avance.
Fred.

Sub Magic()
   
Dim i As Integer
Dim j As Integer
Dim f_inet As Object

Dim k As Integer
   
    On Error GoTo ErrorHandler
   
    Debug.Print "*************************************************************************************************************************"
   
    Set f_inet = CreateObject("InternetExplorer.Application")
   
    f_inet.Visible = False
      
    CreateDatabase
    CreateTables
   
    Debug.Print "Magic - CreateDatabase"
   
    For j = 1 To 24
   
        f_inet.Navigate ("
http://www.magiccorporation.com/mc.php?rub=cartes&file=search&search=2&bool_capacite=0&word=&titre=nom&lang_vf=1&lang_vo=1&num_couleur%5B%5D=5&bool_mana=0&mana%5B%5D=G&signe_mana=0&nb_mana=&num_rarete%5B%5D=3&force=&signe_force=0&endurance=&signe_endurance=0&aff%5Bcouleur%5D=1&aff%5Brarete%5D=1&aff%5Bid%5D=1&aff%5Bnom_vo%5D=1&aff%5Bnom_fr%5D=1&aff%5Bmana%5D=1&aff%5Btype%5D=1&aff%5Batkdef%5D=1&aff%5Bedition%5D=1&aff%5Bdate%5D=1&page=2&page
=" & j)
 
        
        Do While Not f_inet.ReadyState = 4
        Loop
       
        Debug.Print " "
        Debug.Print "Magic - Entete f_inet.Document.body.innerHTML"
       
        Entete f_inet.Document.body.innerHTML
       
        Debug.Print "Magic - Liste_Carte_HTML f_inet.Document.body.innerHTML"
       
        Liste_Carte_HTML f_inet.Document.body.innerHTML
       
        For i = 1 To gp_Index
       
            f_inet.Navigate (gp_Carte_Magic(i).Lien)
           
            Do While Not f_inet.ReadyState = 4
            Loop
       
            Debug.Print " "
            Debug.Print "Magic - i: " & i
            Debug.Print "Magic - f_inet.Document.body.innerHTML: " & Right(f_inet.Document.body.innerHTML, 50)
            
            Debug.Print "Magic - Avant Affecte_Carte_HTML"
       
            Affecte_Carte_HTML i, f_inet.Document.body.innerHTML
           
            Debug.Print "Magic - Après Affecte_Carte_HTML " & i & ", f_inet.Document.body.innerHTML"
           
            gp_Carte_Magic(i).Desc_francais = Supp_Balises(i)
           
            If ExisteDeja("extension", gp_Carte_Magic(i).Edition) Then
               f_id_extension = Lecture("extension", gp_Carte_Magic(i).Edition)
            Else
               f_id_extension = Insert_Extension(i)
            End If
          
            If ExisteDeja("type", gp_Carte_Magic(i).Type) Then
               f_id_type = Lecture("type", gp_Carte_Magic(i).Type)
            Else
               f_id_type = Insert_Type(i)
            End If
          
            If ExisteDeja("langue", "Français") Then
               f_id_langue = Lecture("langue", "Français")
            Else
               f_id_langue = Insert_Langue(i)
            End If
          
            If ExisteDeja("dessinateur", gp_Carte_Magic(i).Illustrateur) Then
               f_id_dessinateur = Lecture("dessinateur", gp_Carte_Magic(i).Illustrateur)
            Else
               f_id_dessinateur = Insert_Dessinateur(i)
            End If
          
            If Not ExisteDeja("carte", gp_Carte_Magic(i).VO, f_id_extension) Then
           
               Insert_Carte i, _
                           f_id_extension, _
                           f_id_type, _
                           f_id_langue, _
                           f_id_dessinateur
            End If
          
        Next
   
    Next
        
    Set f_inet = Nothing
   
    Exit Sub
   
ErrorHandler:   ' Routine de gestion d'erreur.



    MsgBox "Erreur n°: " & Err.Number & " - Description: " & Err.Description
    End
   

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 févr. 2009 à 09:06
la faute à ton ReadyState = 4
faut tester d'abord la valeur 3 (interactive) :
en gros, tester qu'il est bien en train de bosser pour toi. Sans cela, tu testes en gros le complete de la page chargée auparavant


With CreateObject("InternetExplorer.Application")
.Visible = True

.Navigate "http://www.google.com/"
Do
DoEvents
Loop Until .ReadyState = 3
Do
DoEvents
Loop Until .ReadyState = 4
MsgBox .Document.getElementsByTagName("body")(0).innerHTML

.Navigate ("http://www.ebay.fr/")
Do
DoEvents
Loop Until .ReadyState = 3
Do
DoEvents
Loop Until .ReadyState = 4
MsgBox .Document.getElementsByTagName("body")(0).innerHTML
End With


pour info:
Const READYSTATE_COMPLETE = 4
Const READYSTATE_INTERACTIVE = 3
Const READYSTATE_LOADED = 2
Const READYSTATE_LOADING = 1
Const READYSTATE_UNINITIALIZED = 0
3