Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Malgré mes recherches, je n'arrive pas à solutionner le problème suivant :
Je voudrais récupérer un prix sur une page web dont voici le code source.
<span class="price" id="rate_2482">97,00 €</span>
Ce prix pouvant être variable de la dizaine à la centaine, comment faire pour récupérer le prix situé entre >< ??
Cette page contenant plusieurs prix, je pensais que la macro devait identifier dans la page "rate_2482" et récupérer l'info située X caractère plus loin.
Je vous remercie par avance pour votre aide précieuse car je séche complétement.
Hello patrick,
en fait le site bloque les connexions qui viennent de France : en passant par mon VPN connecté par un serveur à Montréal, j'accède à la page.
Sinon pour le code ceci aurait du fonctionner :
VB:
Sub testCexcelCoco()
Dim IE As Object, elems As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-8-pi-panneau-de-cloison-seche-ultra-leger/1000686028"
Do While IE.ReadyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop
a = IE.document.body.querySelector("span.hdca-product__description-pricing-price-value").innerText
MsgBox a
End Sub
mais Internet explorer est trop ancien pour le site et la page ne s'affiche pas entièrement et ça bloque alors sur le test Ready_State_Complete. Avec Edge en utilisant CDP, il y a un autre problème, la page est truffée de publicité et de pop-up si bien que le prix ne s'affiche pas si on ne répond pas à toutes les questions. Il faut avoir un bloqueur de pubub.
Hello patrick,
en fait le site bloque les connexions qui viennent de France : en passant par mon VPN connecté par un serveur à Montréal, j'accède à la page.
Sinon pour le code ceci aurait du fonctionner :
VB:
Sub testCexcelCoco()
Dim IE As Object, elems As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-8-pi-panneau-de-cloison-seche-ultra-leger/1000686028"
Do While IE.ReadyState <> READYSTATE_COMPLETE Or IE.Busy: DoEvents: Loop
a = IE.document.body.querySelector("span.hdca-product__description-pricing-price-value").innerText
MsgBox a
End Sub
mais Internet explorer est trop ancien pour le site et la page ne s'affiche pas entièrement et ça bloque alors sur le test Ready_State_Complete. Avec Edge en utilisant CDP, il y a un autre problème, la page est truffée de publicité et de pop-up si bien que le prix ne s'affiche pas si on ne répond pas à toutes les questions. Il faut avoir un bloqueur de pubRegarde la pièce jointe 1209333ub.
J'ai essayé ton code, est effectivement ça bloque avec internet explorer qui n'affiche pas tout. Existe-t-il un code pour Edge ?
j'ai aussi essayé ce code
VB:
Sub HomeDepot()
code = htmlCodePage("https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-10-pi-panneau-de-cloison-seche-ultra-leger/1000115026")
code = regexExtract(code, "<span class="hdca-product__description-pricing-price-value">(\d+) $</span>")(0)
MsgBox code
End Sub
Mais dans le code source pour la formule regexExtract, il y a déjà des guillemets en plus des miens pour ma formule.
Boîte de dialogue:
Erreur de compilation:
Attendu : séparateur de liste ou )
j'ai modifié pour :
Code:
Sub HomeDepot2()
code = htmlCodePage("https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-10-pi-panneau-de-cloison-seche-ultra-leger/1000115026")
code = regexExtract(code, "<span class=""hdca-product__description-pricing-price-value"">(\d+) $</span>")
Dim web As String
web = """hdca-product__description-pricing-price-value"""
Debug.Print web & " "
MsgBox code
End Sub
Le code fonctionne cette fois, mais je n'obtient pas ma réponse dans le msgbox (elle apparait vide)
sinon, que puis-je faire pour envoyer la réponse dans la cellule A1 par exemple ?
La réponse que je cherche est (\d+) qui remplace le prix actuelle sur le site web
Hello,
Fais un point d'arrêt sur le deuxième code = et regarde ce qu'il y a dans la variable code . Normalement tu ne peux pas accéder à la page par autre chose qu'un navigateur et tu devrais avoir un Acces denied dans la réponse.
moi ça ne passe pas avec ce code :
VB:
Public Sub GetContents()
Dim XMLReq As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument
XMLReq.Open "Get", "https://www.homedepot.ca/produit/cgc-sheetrock-1-2-po-x-4-pi-x-10-pi-panneau-de-cloison-seche-ultra-leger/1000115026"
XMLReq.send
HTMLDoc.body.innerHTML = XMLReq.responseText
msgBox XMLReq.responseText
End Sub
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD