Correction d'un code [Résolu]

Signaler
-
Messages postés
4
Date d'inscription
lundi 31 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020
-
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

Messages postés
12331
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 septembre 2020
694
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
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 :)
Messages postés
12331
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 septembre 2020
694 >
Messages postés
4
Date d'inscription
lundi 31 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020

pourquoi ne pas plutôt utiliser alors:
Doc.getElementsByClassName("resultat-content-categorie")
Messages postés
4
Date d'inscription
lundi 31 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020
>
Messages postés
12331
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 septembre 2020

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 ?

Messages postés
12331
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 septembre 2020
694 >
Messages postés
4
Date d'inscription
lundi 31 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020

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
Messages postés
4
Date d'inscription
lundi 31 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020
>
Messages postés
12331
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 septembre 2020

Excellent :) (je crois que le problème venait des déclarations). Ci-dessous le code avec incrémentation du résultat dans une cellule et la recherche se fait en fonction du contenu des cellules nommées "Lien" et "Test2" pour ceux que ça peut intéresser.

Encore une question si c'est possible ^^, si je souhaite récupérer d'autres informations de classes différentes, j'ai essayé de "doubler" une partie du code mais il me renvoi toujours la 1er valeur.

Private Sub tst()
Dim Ie As New InternetExplorer
Ie.Visible = False
Ie.Navigate Range("Lien").Value & Range("test2").Value
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)
Range("C1").Value = sDD
MsgBox sDD
Else
MsgBox ("tag pas present")
End If

Set Doc = Ie.document
Dim sDD2 As String, elm2, sss2
Set elm2 = Doc.getElementsByClassName("resultat-content-categorie nowrap")
If Not elm2 Is Nothing Then
Dim ccc2
For Each ccc2 In elm2
Debug.Print "ccc2", ccc2.innerText
Next ccc2
Set sss2 = elm2(1)
sDD2 = Trim(sss.innerText)
Range("C2").Value = sDD2
MsgBox sDD2
Else
MsgBox ("tag pas present")

Ie.Stop

End If

End Sub

Messages postés
4
Date d'inscription
lundi 31 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020
>
Messages postés
4
Date d'inscription
lundi 31 août 2020
Statut
Membre
Dernière intervention
1 septembre 2020

Désolé, j'avais pas vu qu'il me manquait un 2 sur cette ligne (sDD2 = Trim(sss2.innerText)). Ca fonctionne maintenant.

Merci encore pour ton aide :)