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])
lfk qsans titre

Au cas où (éléments de l'item1):

dsfsans titre kdfsans titre qsklsans titre

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 with

Mais 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 . J'ai l'impression qu'on s'est fourvoyés depuis le début, à moins que ça dépende d'un code javascript... J'aimerais bien avoir la réponse malheureusement je ne m'y connais pas assez.

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).Click

J'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 element

Mais 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 ! Enfin j'ai cru qu'on y arriverait jamais. Et merci pour ce retour, ça me fait plaisir.

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 Sub

Bonjour,

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,

Rechercher des sujets similaires à "cliquez element hypertexte fonction valeur innertext"