agadiroufla
XLDnaute Junior
Bonsoir tout le monde,
La question est dans le titre, je n'arrive pas à boucler sur tous les tableaux contenus dans une page web pour choisir celui qui contient un texte donné en colonne 1, ligne 1.
J'arrive bien à récupérer les données que je veux pour certains codes ISIN, mais dès que le nombre de tableaux change l'information récupérée n'est plus correct.
Merci pour votre contribution
Nb: le site web en question n'est pas accessible au grand public :
Voici le code :
La question est dans le titre, je n'arrive pas à boucler sur tous les tableaux contenus dans une page web pour choisir celui qui contient un texte donné en colonne 1, ligne 1.
J'arrive bien à récupérer les données que je veux pour certains codes ISIN, mais dès que le nombre de tableaux change l'information récupérée n'est plus correct.
Merci pour votre contribution
Nb: le site web en question n'est pas accessible au grand public :
Voici le code :
Code:
Sub récup_cours_ok()
Application.ScreenUpdating = True
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim InputftidZoneTexte As HTMLInputElement
Dim htmlProfil As HTMLGenericElement
Dim Element As IHTMLElementCollection
Dim Cotation As HTMLSpanElement
Dim htmlSelectElem As HTMLSelectElement
Dim htmlGeneric As HTMLGenericElement
Dim cours As HTMLGenericElement
On Error Resume Next
Application.DisplayAlerts = False
'Chargement d'une page Web
IE.navigate "monsite"
'On attend le chargement complet de la page
Do
DoEvents
Loop Until IE.readyState = READYSTATE_COMPLETE And Not IE.Busy
'Affichage de la fenêtre IE
IE.Visible = True
Sheets("Feuil1").Select
derligne = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
z = 1
For z = 2 To derligne
'On pointe le membre Document
Set IEDoc = IE.document
Do Until IEDoc.readyState = "complete"
DoEvents
Loop
Set IEDoc = IE.document
'On va sur l'objet qui contient la liste des indices
Set htmlSelectElem = IEDoc.all("CTYPE")
'On sélectionne l'indice "ter" via sa valeur unique
htmlSelectElem.Value = "ISIN"
'On pointe notre Zone de texte
Set InputftidZoneTexte = IEDoc.all("CCODE")
'On définit le texte que l'on souhaite placer à l'intérieur
InputftidZoneTexte.Value = Range("A" & z).Value
Set IEDoc = IE.document
Set htmlSelectElem = IEDoc.all("findbutton")
Set ObjectIE = IEDoc.getElementById("IMAGE")
ObjectIE.Click
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set IEDoc = IE.document
Do Until IEDoc.readyState = "complete"
DoEvents
Loop
Dim maTable As IHTMLTable
Dim Htable As IHTMLElementCollection
Set IEDoc = IE.document
'objet type table
Set Htable = IEDoc.getElementsByTagName("table")
'6eme tableau dans la page Web
Set maTable = Htable(10)
'Range("B" & z).Value = maTable.Rows(0).Cells(1).innerText
Range("B" & z).Value = maTable.Rows(1).Cells(3).innerText
Range("C" & z).Value = maTable.Rows(1).Cells(5).innerText
Range("D" & z).Value = maTable.Rows(1).Cells(6).innerText
'On pointe le membre Document
Set IEDoc = IE.document
Do Until IEDoc.readyState = "complete"
DoEvents
Loop
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set IEDoc = IE.document
Do Until IEDoc.readyState = "complete"
DoEvents
Loop
'On pointe le membre Document
Set IEDoc = IE.document
Do Until IEDoc.readyState = "complete"
DoEvents
Loop
Next
IE.Quit
'On libère les variables
Set IE = Nothing
Set IEDoc = Nothing
Application.ScreenUpdating = True
End Sub