Correction d'un code

Résolu
Youyou -  
Youyou337005478 Messages postés 4 Statut Membre -
Bonjour Le forum,

J'ai essayé d'adapter un code de Dontfretbrett mais j'ai une erreur d'execution type 91 sur la ligne sDD = Trim(Doc.getElementsByTagName("resultat")(1).innerText). Pourtant la variable est définie (Dim sDD As String) ? Merci pour votre aide.

"
Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Row = Range("Lien_entreprise").Row And _
 Target.Column = Range("Lien_entreprise").Column Then
Dim Ie As New InternetExplorer
Ie.Visible = True

Ie.Navigate "https://www.pappers.fr/recherche?q=" & Range("Lien_entreprise").Value

Do
 DoEvents
Loop Until Ie.readystate = READYSTATE_COMPLETE
Dim Doc As HTMLDocument
Set Doc = Ie.document
Dim sDD As String
sDD = Trim(Doc.getElementsByTagName("resultat")(1).innerText)

MsgBox sDD
End If
End Sub

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, suggestion pour éviter cette erreur:
    Dim sDD As String, elm, sss
    elm = Doc.getElementsByTagName("resultat")
    If Not elm Is Nothing Then
        sss = elm(1)
        sDD = Trim(sss.innerText)
        MsgBox sDD
    Else
        MsgBox ("tag resultat pas present")
    End If
    Ie.Stop
    0
  2. Youyou
     
    Bonjour yg_be,

    Merci pour ta réponse, cela a en effet supprimer l'erreur. Par contre je n'ai aucune valeurs qui ressort, j'ai essayé avec plusieurs div class présente dans le code source mais aucune ne semble revenir. Une idée ? Merci :)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      une idée pour obtenir quoi?
      as-tu analysé la source HTML de la page, et déterminé ce que tu voulais récupérer?
      0
    2. Youyou337005478 Messages postés 4 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Oui, j'ai fais inspecté et j'ai ciblé le contenu d'une balise class dont je souhaitais obtenir le contenu (voir photo jointe)

      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Youyou337005478 Messages postés 4 Statut Membre
       
      pourquoi ne pas plutôt utiliser alors:
      Doc.getElementsByClassName("resultat-content-categorie")
      0
    4. Youyou337005478 Messages postés 4 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Je touche au but (grâce à ton aide précieuse). J'ai une erreur d'exécution sur la ligne " sss = elm(1)". Il me semble que dans la demo du code d'origine il précisait une position de la balise mais je n'ai pas bien saisie cette partie. Peux-tu m'en dire plus ?

      0
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Youyou337005478 Messages postés 4 Statut Membre
       
      tu ne montres pas ton code.
      chez moi, ceci fonctionne:
      Private Sub tst()
      Dim Ie As New InternetExplorer
      Ie.Visible = False
      Ie.Navigate "https://www.pappers.fr/recherche?q=" & "test"
      Do
       DoEvents
      Loop Until Ie.ReadyState = READYSTATE_COMPLETE
      Dim Doc As HTMLDocument
      Set Doc = Ie.Document
      Dim sDD As String, elm, sss
      Set elm = Doc.getElementsByClassName("resultat-content-categorie")
      If Not elm Is Nothing Then
          Dim ccc
          For Each ccc In elm
              Debug.Print "ccc", ccc.innerText
          Next ccc
          Set sss = elm(1)
          sDD = Trim(sss.innerText)
          MsgBox sDD
      Else
          MsgBox ("tag pas present")
      End If
      Ie.Stop
      End Sub
      0