Bonjour, bonjour,
merci d'utiliser l'icône # dédiée au balisage du code conformément aux règles du forum,
cela aurait certainement favorisé des intervenants à répondre plus tôt …
Avant d'attaquer le VBA, de bonnes notions en langage HTML sont nécessaires afin de décoder la page Web source,
ne pas hésiter à utiliser l'outil d'inspection intégré aux navigateurs …
Deux possibilités pour extraire les liens :
• fonctions texte parmi la batterie intégrée au VBA comme Instr, Mid, Split, …
• Méthodes d'un navigateur ou de bibliothèques web. (consulter le forum Contribuez pour IE, sinon documentation sur le site MSDN)
Cette dernière est utilisée dans l'exemple suivant (mieux vaut se passer de piloter Internet Explorer si possible),
code à copier directement dans le module de la feuille recevant les liens en raison du bonus du double-clic :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| Sub Demo()
Const URL$ = "http://dubai.dubizzle.com/property-for-rent/residential/?bedrooms__gte=0&" & _
"bedrooms__lte=12&places__id__in=Start+typing+here&" & _
"building__in=Start+typing+here&is_basic_search_widget=0&is_search=1"
With CreateObject("MSXML2.XMLHTTP")
.Open "POST", URL, False: .send: If .Status = 200 Then T$ = .responseText
End With
If T > "" Then
With CreateObject("HTMLFile")
.Write T
With .GetElementById("results-list").GetElementsByTagName("h3")
ReDim AR$(1 To .Length, 1 To 1)
For N& = 1 To .Length
T = .Item(N - 1).GetElementsByTagName("a")(0).href: P& = InStr(T, "?")
If P Then AR(N, 1) = Left$(T, P - 1) Else AR(N, 1) = T
Next
[A1].CurrentRegion.Clear: [A1].Resize(.Length).Value = AR
End With
End With
End If
End
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Left(Target.Value, 7) = "http://" Then
Cancel = True
On Error Resume Next
ThisWorkbook.FollowHyperlink Target.Value
End If
End Sub |
_______________ ____________________________________ ______________________________
Merci de cliquer sur
pour chaque message ayant aidé puis sur
pour clore cette discussion …
Partager