Erreur Do Until ie.readyState = READYSTATE_COMPLETE And ie.Busy = False

Bonjour

J'ai ce code pour essayer d'extraire les donnés d'un site web

Sub data()
Dim ie As InternetExplorer
Dim ht As HTMLDocument
Set ie = New InternetExplorer
ie.Visible = True
ie.navigate "Lien ici"
    Do Until ie.readyState = READYSTATE_COMPLETE And ie.Busy = False
            DoEvents
Loop
Application.Wait (Now + TimeValue("00:00:05"))
Set ht = ie.Document
pg = 1
While pg < 1000
            Set elems = ht.getElementsByClassName("MA-yaxYe")
            For Each elem In elems
            lr = Sheet1.cells(Rows.Count, 1).End(xlUp).Row + 1
            cells(lr, 1).Value = elem.getElementsByClassName("_3ZYtlagS")(0).innerText
            cells(lr, 2).Value = elem.getElementsByClassName("z9YfZM2U")(0).innerText
            cells(lr, 3).Value = elem.getElementsByClassName("_1bDQo_qc")(0).innerText
 Next

 Set pgbar = ht.getElementsByClassName("_2MOMDC2X")(0).getElementByTagName("li")
        pgbar(pgbar.Length - 1).Click
        If Err.Number <> 0 Then
            pg = 1001
        Else
            Do Until ie.readyState = READYSTATE_COMPLETE And ie.Busy = False
                DoEvents
             Loop
           Application.Wait (Now + TimeValue("00:00:05"))
         End If
    Wend
   ie.Quit

End Sub

mais ça donne toujours erreur sur ce ligne de code

je débute en vba

Do Until ie.readyState = READYSTATE_COMPLETE And ie.Busy = False

merci

NB:je ne peux pas encore publier des liens sur le forum

Bonjour eric,

Pour moi, vouloir utiliser IE qui est devenu obsolète et non sécurisé sur des sites bien souvent fait avec du CSS est impossible

Essayez d'utiliser PQ (Power Query) mais sous toute réserve

Ceci dit, vous semblez vouloir faire du Web Scraping
donc petit rappel de la charte de ce forum :

  • Ne demandez rien d'illégal ou d'éthiquement discutable (comme par exemple le retrait d'un mot de passe VBA, l'extraction de données d'un site qui ne l'autorise pas, etc).

Cordialement.

merci beaucoup @Bruno

Est-ce méchant de proposer de remplacer READYSTATE_COMPLETE par le chiffre 4

 Do Until ie.readyState = 4 And ie.Busy = False
   
Rechercher des sujets similaires à "erreur until readystate complete busy false"