Je ne comprend pas bien les lignes de code pourrais tu m'expliquer ?
Plus globalement, pour interroger un site il y a plusieurs méthodes :
1- ouvrir la page dans un userform
ce que tu as dû expérimenter au début, mais je ne sais pas comment récupérer les infos et les scripts font hurler excel
2- utiliser PowerQuery, la Rolls
mais cela va bien pour avoir les favoris par exemple https://forum.excel-pratique.com/viewtopic.php?p=702283#p702283 mais pas du tout pour la page d'en-tête ! rien, nada !
3- faire digérer le site et interroger vie GetElementByX
il s'agit de l'utilisation des propriétés du DOM
on peut le faire de 2 façons ici :
- soit interroger par .getElementsByTagName("a")
mais c'est un peu la foire-fouille ...
- soit interroger par .getElementsByTagName("li")
mais je n'ai récupéré que le texte du lien, pas le lien lui-même !
4- traiter directement le texte
c'est moins élégant, mais plus rapide et efficace à 99% (il n'y a que les cas où les données sont issues de javascript avec interrogation à distance que cela devient complexe !)
donc je pratique allègrement le saucissonnage à coups de split
grosso modo :
ma_tranche_de_saucisson = split(split(mon_texte , texte_juste_avant)(1) , texte_juste_apres)(0)
d'où pour ici :
Sub adresses()
Dim tbl
' effacement des lignes à partir de la deuxième sous la zone appelée www
Range("www").CurrentRegion.Offset(2, 0).ClearContents
On Error Resume Next
DoEvents
With CreateObject("MSXML2.XMLHTTP")
' requête web, l'URL est contenu dans la zone www
.Open "GET", [www].Value, False
.Send
If .Status = 200 Then
' on récupère la page html (.responseText) que l'on va saucissonner à coups de couteau split !
' je découpe la page au niveau de <li class=" btnCourse"> (attention à bien doubler les ")
tbl = Split(.responseText, "<li class="" btnCourse"">")
' pour chaque élément du saucisson, sauf le début de la page html, donc à partir du second élément ...
For i = LBound(tbl) + 1 To UBound(tbl)
' je prend le texte avant </li>
' et ensuite je cherche le texte entre href=" et " (attention à bien doubler les ")
' auquel j'ajoute la racine du site web pour reformer l'url complète
Cells(i + 2, 1) = "http://www.geny.com" & Split(Split(Split(tbl(i), "</li>")(0), "href=""")(1), """>")(0)
Next
End If
End With
End Sub
le tour est joué, on peut du reste filtrer sur les liens qui nous intéressent (like "*cotes", like "*rapport*")
5- les sites renvoient parfois du json ou du xml, c'est un autre sujet !