Erreur 91

Résolu/Fermé
moi0033 Messages postés 3 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018 - 21 mars 2018 à 18:10
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 22 mars 2018 à 09:53
Bonjour à tous,

petit problème: lorsque j'exécute le code ci-dessous, j'ai une erreur 91 qui s'affiche, variable objet ou variable de bloc non définie (il arrive également que dans de rares cas, cette erreur ne s'affiche pas, étrange!). Cela fait quelques temps que je cherche mais impossible d'en comprendre la cause (c'est sûrement un problème tout simple!). Des suggestions?


Dim IE As Object

Dim form As Variant

Dim button As Variant

Dim LR As Integer

Dim var As String

Dim var1 As Variant

LR = cells(Rows.Count, 1).End(xlUp).Row

For x = 2 To LR

var = cells(x, 1).Value

Set IE = CreateObject("internetexplorer.application")

IE.Visible = True

With IE

.Visible = True

.navigate "http://lite.qwant.com"

While Not .readyState = READYSTATE_COMPLETE

Wend

End With

'Wait some to time for loading the page

While IE.Busy

DoEvents

Wend

Application.Wait (Now + TimeValue("0:00:02"))

IE.document.getElementById("homesearch").Value = var

'Here we are clicking on search Button

IE.document.getElementById("resultsearchbutton").Click


'wait for page to load

While IE.Busy

DoEvents

Wend

Application.Wait (Now + TimeValue("0:00:02"))

IE.document.getElementsByClassName("title")(0).all(0).Click

While IE.Busy

DoEvents

Wend

Application.Wait (Now + TimeValue("0:00:02"))

Set var1 = IE.document.getElementsByClassName("lien numdisplay")(0)

cells(x, 2).Value = var1.innerText

IE.Quit

Set IE = Nothing

Next x




La ligne qui semble porter le problème est la suivante: cells(x, 2).Value = var1.innerText

Merci beaucoup!

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
21 mars 2018 à 18:26
Bonjour,

Lorsque tu fais
Set var1 = IE.document.getElementsByClassName("lien numdisplay")(0)

tu tentes de créer un objet mais si la création ne se fais pas il faut le tester
if var1 is nothing then
      msgbox "erreur"
else
      cells(x, 2).Value = var1.innerText
End if
0
moi0033 Messages postés 3 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018
21 mars 2018 à 18:39
Bonjour, oui merci je m'étais demandée s'il se créait bien mais en vérifiant sur la page la donnée que je veux récupérer a bien une classe lien numdisplay! Donc je ne comprends pas pourquoi le problème
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
21 mars 2018 à 22:07
Bonsoir,

en vérifiant sur la page la donnée que je veux récupérer a bien une classe lien numdisplay
Je ne doute pas de tes dires sauf que VBA ne le trouve pas avec ton paramétrage et que var1 = nothing : comme toujours c'est le code qui commande et sans doute que le nom de la classe est mal codé dans ta page.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
21 mars 2018 à 23:59
Bonjour,

et si tu mets une petite tempo après le Set var1 au cas où ?
eric
0
moi0033 Messages postés 3 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018
22 mars 2018 à 06:02
Bonsoir, la tempo n'a rien donné.

Gbinforme tu avais raison bien sûr mais ce qui me posait question c'est que j'ai cette erreur 1/3 en ne changeant rien sans que je comprenne pourquoi. Ton code me permet toutefois d'aller au bout de ma macro même s'il y a une erreur alors merci 1000 fois!
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
22 mars 2018 à 09:53
Bonjour,

la tempo n'a rien donné
Normal à mon avis, car ton problème vient du fait que le nom de ta classe dans ta page n'est pas encodé correctement.
Il faudrait peut-être que tu utilises une autre façon de choisir ta référence à sélectionner.
0