Exécution de JavaScript

Fermé
Matt_r Messages postés 11 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 27 février 2014 - Modifié par Matt_r le 21/08/2013 à 08:11
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 21 août 2013 à 11:31
Bonjour,



Dans un macro, je navigue sur internet et cherche à exécuter un JavaScript définie comme suit dans le code source :

<div class = "Niveau 2" id="DivElement" NbFils="0" IdPere="1" Ouvert="1" Niveau="2" IdElement="5">
<a href="javascript:LoadReqPredef('36');">
Texte - Recherche avancée


En fait, le travail se fait sur un site uniquement disponible en Intranet de ma boite, donc pas moyen de tester sur un autre poste que ceux de mon bureau...
Quand j'exécute le code ci-dessous, rien ne se passe, tout simplement...

Mon code VBA est le suivant :

Sub Rechercher()
On Error Resume Next

Dim oIe as New InternetExplorer
oIe.Visible = True

oIe.Navigate = "http://actif/"

Do Until oIe.readystate = READYSTATE_COMPLETE
DoEvents
Loop

oIe.Document.parentWindow.execScript "LoadReqPredef('36')", "JavaScript"

[...]

End Sub


Les références suivantes sont cochées :
Visual Basic for Applications - Microsoft Excel 14.0 Object Library - OLE Automation - Microsoft Office 14.0 Object Library - Microsoft HTML Object Library - Microsoft Internet Controle - JavaWebStart 1.0 Type Library - Microsoft Shell Controls and Automation.

Merci d'avance pour vorte aide précieuse !

Matt

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
Modifié par pijaku le 21/08/2013 à 09:38
Bonjour,

Essaye avec l'affectation, à une variable HTMLDocument, de ta page Internet.
Comme ceci :
Sub Rechercher()
Dim oIe as New InternetExplorer
Dim oIeDoc As HTMLDocument

'SUPPRIME MOI CETTE LIGNE!!!!!!!!!!!!!
'On Error Resume Next

oIe.Navigate = "http://actif/"
oIe.Visible = True

Do Until oIe.readystate = READYSTATE_COMPLETE
    DoEvents
Loop

'ICI On affecte notre variable HTMLDocument :
Set oIeDoc = oIe.document

oIeDoc.parentWindow.execScript "LoadReqPredef('36')", "JavaScript"

End Sub


Après, sans accès au code source, difficile de t'aider davantage...

Note : On Error Resume Next n'est à utiliser que lorsque l'on "maîtrise" l'erreur. Si tu ne sais pas d'où peut bien provenir ton ou tes erreurs, fait des tests.
Cordialement,
Franck
0
Matt_r Messages postés 11 Date d'inscription mercredi 21 août 2013 Statut Membre Dernière intervention 27 février 2014
21 août 2013 à 10:27
Merci beaucoup !

Après avoir fait ce que tu conseillais, j'obtiens un message d'erreur :

Erreur d'exécution '-2147352319 (80020101)':
Erreur Automation


A méditer donc :D

J'ai également utilisé un espion sur oIeDoc, la variable HTMLDocument relative à l'objet IE. En observant les anchors, j'ai été surpris de voir qu'ils ne contenaient aucun item, alors que le JavaScript à exécuter est défini par la balise <a> ...

Enfin, Franck, je peux te fournir le code source de la page si tu le souhaites, mais qu'est ce qu'il t'apporterai de plus que les lignes définissant le JavaScript que j'ai déjà postées dans mon premier message ?

En tout cas, je te remercie pour cette réponse rapide.

Ps : je dis probablement d'énormes bêtises mais je débute en HTML ... j'espère que l'excuse est suffisante :p
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
21 août 2013 à 11:31
J'ai bien médité....
je peux te fournir le code source de la page si tu le souhaites, mais qu'est ce qu'il t'apporterai de plus que les lignes définissant le JavaScript que j'ai déjà postées dans mon premier message ?
Ca permet, éventuellement, de tester en "condition réelle"...

Le code fournit précédemment fonctionne, chez moi, sur une page html, sans souci.
Du coup, il faudrait que je puisses tester sur ta page...
Lorsque j'exécute ce code en "pas à pas", la variable oIeDoc contient "[object]".
0