Erreur 91

Résolu
moi0033 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   4 724
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   4 724
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   4 724
 
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