Récupérer lien URL depuis le Web

Bonjour à tous,

Je suis dans une impasse, et j'espère bien trouver plus malin que moi ici !

J'ai créé une macro qui va chercher des données sur le web et me les copie sur ma feuille Excel appelée "TEMP". Jusque là tout va bien.

Sauf que sur cette page internet, il y a des liens hypertext pour lesquels je voudrais récupérer l'URL.

En intégrant les données de ma page web (en conservant le format HTML) cela fonctionne pour la plupart des liens présents sauf ceux qui m'intéressent !

J'ai remarqué en passant ma souris dessus, que les liens qui m'intéressent mettent un peu plus de temps à s'afficher en bas de mon écran quel les autres. Auquel cas est-il possible de ralentir ma macro, pour qu'elle copie le lien un fois chargé ?

J'ai ensuite testé en copiant/collant simplement ma page web sur Excel et là, même problème ! (cependant l'URL qui m'intéresse est aussi présente dans une petite image qui est collée. Mais là non plus je n'arrive pas à le récupérer par une macro...)

Pour plus de clarté, le site en question est http://www.encheres-publiques.com/vente-appartement-t1.html?nbrpp=100&page=1&idtb=1&devise=1

Sur cette page vous avez une liste de biens commençant par "APPARTEMENT / ..."

C'est justement cette URL que j'aimerai récupérer.

Merci d'avance à tous ceux qui prendront le temps d'y réfléchir !

Ma macro qui va chercher les données :

    Application.CutCopyMode = False
    With Sheets("TEMP").QueryTables.Add(Connection:="URL;http://www.encheres-publiques.com/vente-appartement-t1.html?nbrpp=100&page=1&idtb=1&devise=1", Destination:=Sheets("TEMP").Range("$A$1"))
        .Name = "www.encheres-publiques"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With

slt,

est ce que tes liens (hyperlink) sont dans des céllules de ta feuille? si oui c'est faisable je pense

ou bien tu les insére à chaque fois manuellement dans ta macro? j'ai essaié le lien suivant avec ta macro est ca fonctionne

With Sheets("TEMP").QueryTables.Add(Connection:="URL;http://www.encheres-publiques.com/vente-appartement-t1.html?nbrpp=100&page=1&idtb=1&devise=1", Destination:=Sheets("TEMP").Range("$A$1"))

Bonjour arth_931, m3ellem1

Je ne connais pas bien QueryTables, c'est un tort je le reconnais.

Sinon tu peux aussi utiliser une autre méthode : getElementsByTagName

Merci (encore) à Pierre56 pour son code !

Option Explicit

Sub Go()
Dim oHtml As New HTMLDocument, objLink As Object, lig As Integer, url As String

    [www].CurrentRegion.Offset(2, 0).ClearContents
    On Error GoTo errhdlr
    oHtml.body.innerHTML = pageHTML([www])
    lig = 3
    For Each objLink In oHtml.getElementsByTagName("a")
        url = objLink.getAttribute("HREF")
        If url Like "*annonce*" Then
            Cells(lig, 1) = url
            lig = lig + 1
        End If
    Next objLink

Exit Sub

errhdlr:
    MsgBox "Mise à jour non réalisée"
End Sub

Function pageHTML(url As String) As String
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", url, False
        .send
        pageHTML = .responseText
    End With
End Function

Bonjour Steelson, m3ellem1

Je vous remercie d'avoir pris le temps de jeter un oeil à mon problème. La solution de Steelson semble fonctionner en se fiant au fichier Excel, mais j'ai un message d'erreur en actualisant la macro ou en le reportant sur un autre fichier :

"Erreur de compilation:

Type défini par l'utilisateur non défini"

et cela me surligne la partie : oHtml As New HTMLDocument dans la macro.

J'avoue ne pas comprendre parfaitement comment ta macro fonctionne, ce qui ne m'aide pas à identifier le problème. Je précise travailler avec Excel 2019 sur Mac.

EDIT : en essayant sur un PC, cela fonctionne. Est-il possible de l'adapter pour un fonctionnement sur mac ?

Merci encore pour votre aide

Je précise travailler avec Excel 2019 sur Mac.

Oui c'est bien cela la cause.

Mets à jour ton profil en précisant mac.

Là je ne peux pas t'aider, je ne connais pas le monde mac. Désolé.

Je vais mettre à jour le profil, merci.

En revanche, quand je teste ton fichier sur un PC ça fonctionne, mais quand je cherche à l'intégrer (toujours sur PC) à mon fichier j'obtiens la même erreur.

Merci encore pour ton retour

En revanche, quand je teste ton fichier sur un PC ça fonctionne, mais quand je cherche à l'intégrer (toujours sur PC) à mon fichier j'obtiens la même erreur.

Vérifie les références par

Outils > Références dans le VBE

Coche la référence en bleu ci-dessous, voire celle au-dessus

capture d ecran 470

C'est étrange mais c'était bien activé sur mon ordi...

J'ai contourné le problème en ouvrant on fichier en l'état en copiant les données et en le fermant par une macro.

C'est vraiment pas propre, mais je ne trouve pas d'autre solution.

Je passe le sujet en résolu.

Encore merci pour ton aide,

Rechercher des sujets similaires à "recuperer lien url web"