Cliquez sur un élément hypertexte en fonction de sa valeur de innertext
Merci pour votre réponse,
J'ai essayé:
Set collElem = IE.document.getelementsbyname("mainFrame").item(1)Mais l'espion m'indique collElem=nothing en valeur. j'ai donc essayé
Set collElem = IE.document.getelementsbyname("mainFrame").item("mainFrame",1)
Set collElem = IE.document.getelementsbyname("mainFrame").item("mainFrame")
Set collElem = IE.document.getelementsbyname("mainFrame").item(["mainFrame"],[1])
Au cas où (éléments de l'item1):
J'ai également essayé:
Set collElem = .getelementsbytagname("A")
For Each element In collElem
temporiser
If element.textcontent like "TG01*" then
Msgbox "trouvé"
'element.click
Exit For
End If
Next element
end withMais avec l'espion collElem=nothing en valeur. je pense qu'il faut d'abord choisir l'item1 et ensuite faire -->.getelementsbytagname("A") (dans item1) mais j'ai essayé sans réussite (erreur de syntaxe).
Je ne sais pas si cette syntaxe fonctionne mais ça peut carrément être une bonne idée de tester :
Set collElem = IE.document.getelementsbyname("mainFrame").getelementsbytagname("A")
Set collElem = IE.document.getelementsbyname("mainFrame").all("A")
Set collElem = IE.document.getelementsbyname("mainFrame").getelementsbyclassname("pMenu")Bonjour,
Oui j'avais essayé ces manipulations mais erreur 438 "Propriété ou méthode non gérée par cet objet"
J'ai également essayé:
Set oHTML = IE.document
Set collElem = IE.document.getelementsbyname("mainFrame").contentDocument.getelementsbytagname("A") 'ou getelementsbyclassname("pMenu") mais erreur 438 "Propriété ou méthode non gérée par cet objet"
Set oHTML = IE.document
oHTML.getelementsbyName("mainFrame")
Set collElem = oHTLM.getelementsbytagname("A") 'ou getelementsbyclassname("pMenu") Avec la deuxième manipulation j'ai bien collElem='object' mais aucun élément dedans.
J'ai regardé sur internet mais impossible de trouver la solution, je ne comprends pas très bien pourquoi.
Bonjour Asma,
Ah ! Donc il est non vide pour la seconde méthode ?
Est-ce qu'il contient des collections, anchors notamment ?
Je ne saurais pas dire pourquoi, ça aurait été plus simple si j'avais pu tester
Bonjour,
Je m'excuse pour la réponse tardive mais j'apporte de bonnes nouvelles. J'ai réussi !
Le chemin d'accès est le suivant:
Item1 --> contentdocument -->links--> Item numero 22
Dim collectionElem1 As IHTMLElementCollection
Dim collectionElem2 As HTMLElementCollection
Dim collectionElem3 As HTMLElementCollection
Dim collectionElem4 As IHTMLElementCollection
Set collectionElem1 = oHTML.getElementsByName("mainFrame")
Set collectionElem2 = collectionElem1.Item(0)
Set collectionElem3 = collectionElem2.contentWindow.document ' ou contentdocument sur Firefox
Set collectionElem4 = collectionElem3.Links
Call collectionElem4.Item(21).ClickJ'aurais aimé faire avec
For Each element In collectionElem4
If element.innerHTML="SMQ01-PC - Ancienneté du stock filiale depuis Ecom et réseau depuis facturation ou Ecom (SMQ01_PC) "
'ou .innerText="SMQ01-PC - Ancienneté du stock filiale depuis Ecom et réseau depuis facturation ou Ecom (SMQ01_PC) " ou .textContent="SMQ01-PC - Ancienneté du stock filiale depuis Ecom et réseau depuis facturation ou Ecom (SMQ01_PC) " then
element.click
Exit For
End If
Next elementMais le problème c'est qu'il y a 125 items dans "collectionElem4" et donc mon excel mouline/crash alors je suis obligé d'arrêter la macro... Vous avez peut-être une idée ou utilisez un code pour ne vérifier que les 40 premiers éléments par exemple (ce qui laisse une grosse marge si d'autres éléments sont ajoutés à l'avenir).
Je vous remercie encore, vous m'avez énormément aidé et j'ai pu comprendre et apprendre beaucoup de choses. Je vous remercie beaucoup ! J'espère que pour la prochaine étape, je n'aurai pas de problème haha
Bonjour Asma,
Bravo !
Pour l'instant, je dirais que le mieux est l'ennemi du bien. Mais si tu as du temps, regarde bien le tutoriel de Qwazerty qui pourraient t'apprendre plein de choses. Comme je t'ai dit, je n'ai pas pratiqué depuis un moment, et je n'ai que de vagues connaissances. Si j'avais eu l'URL, j'aurais fait des tests mais là je ne peux pas vraiment m'avancer. Mais je suis quasiment certain qu'il existe des méthodes plus simples.
En tout cas, maintenant que tu as l'élément, tu peux éventuellement regarder les propriétés name ou classname. Ca pourrait être un raccourci car il y a fort à parier que les collections contiennent moins d'éléments...
Oui, je te le souhaite et j'espère surtout qu'il reste peu d'étapes, sinon bonjour les prises de têtes
Bon courage en tout cas et peut-être à bientôt sur le fil
Bonjour,
Au cas où, j'ai trouvé la solution finale et cela prend 1 seconde a Excel
Dim collectionElem1 As IHTMLElementCollection
Dim collectionElem2 As HTMLElementCollection
Dim collectionElem3 As HTMLElementCollection
Dim collectionElem4 As IHTMLElementCollection
Set collectionElem1 = oHTML.getElementsByName("mainFrame")
Set collectionElem2 = collectionElem1.Item(0)
Set collectionElem3 = collectionElem2.contentWindow.document ' ou contentdocument sur Firefox
Set collectionElem4 = collectionElem3.Links
Dim item as Variant
For Each item In collectionElem4
If element.innerHTML="xxxx" then
item.click
Exit for
End if
Next item
End SubBonjour,
Bravo Asma ! Et merci de ton retour !
J'espère que ça te fera gagner un temps précieux quotidien. C'est de toute façon un investissement certainement utile.
Bonne soirée,