Erreur d'execution 70, permission refusée avec execScript [Résolu]

Signaler
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013
-
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013
-
Bonjour à tous,

J'ai un gros soucis, je dois executer une fonction javascript à partir de VBA, et depuis une semaine je ne trouve pas de solutions. Je voulais executer la fonction en la passant dans l'url de la page internet explorer en faisant:

ie.Navigate (url & "onclick= if(redirectionOnglets(document.forms[0],this)){document.forms[0].marqueSelectionnee.value='onglet.marque.giea';document.forms[0].submit();}")

Sans succès!

Donc j'ai voulu tenter avec le WebBrowser, j'ai donc écris :

Set mapage = ie.Document

mapage.parentWindow.execScript  "onclick= if(redirectionOnglets(document.forms[0],this)){document.forms[0].marqueSelectionnee.value='onglet.marque.giea';document.forms[0].submit();}", "Javascript"

ie.Navigate (url)

Et là j'ai une erreur: "Erreur d'execution '70' Permission refusée".
Que faire?
Merci beaucoup d'avance!

13 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
non testé, mais faire en gros:


Dim oLink As Object
For Each oLink In IE.Document.getElementsByTagName("a")
If oLink.InnerHTML = "MarqueC" Then
oLink.Click
Exit For
End If
Next oLink
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
tu attend bien que le document soit exploitable ?

(status COMPLETE)

le pas a pas accorde peut etre suffisemment de temps au webbrowser pour rappatrier la page...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
pas clair, pas clair...
quellé étrange URL...

tu peux surement utiliser FireEvent pour déclencher un onClick, et ainsi appeler le script qui va bien.
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013

Bonjour Renfield,
merci de ta réponse.

En fait la page que je veux appeler, elle contient des onglets. et ces onglets, quand on clique dessus, ça déclenche la fonction javascript Onclick pour afficher l'onglet.
Et je veux faire ça à partir de VBA, donc ce que je voulais c'etait recharger la page et lancer onclick, pour que le 2e onglet s'affiche.
ça sera possible avec FireEvent? tu peux me donner la syntaxe?
(je ne suis pas très douée en vba...)

Merci beaucoup!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
tu peux simplement demander un Click de la chose...

quel est le code HTML de ta page (au moins la partie des onglets) ?

jouer avec FireEvent est parfois nécessaire, pour déclencher le code js qui traine ici ou là et est executé en temps normal (onfocus, onkeydown, etc.)
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013

Voici le code de la page partie onglet:

  
 
    
  
   MarqueA
  
  
  
   [#
    MarqueB
   ]
    
  
  
   [#
    MarqueC
   ]
  
  
  
   
   [#
    MarqueD
   ]
  

J'ai mis de la couleur pour que ce soit plus clair, il y a donc 4 onglet, celui qui est affiché pour l'instant c'est le premier (Marque A), et le code c'est span qqch...
Moi j'aimerai afficher les 3 auutres à la suite avec VBA, pour récupérer le code source généré par la page.

Merci beaucoup!
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013

Merci pour l'info, mais cela ne fonctionne pas malheureusement....

J'ai écris ceci :

 ie.Navigate (url)
 ie.Visible = True

 Dim oLink As Object
    For Each oLink In ie.Document.getElementsByTagName("onglets")
        If oLink.innerHTML Like "MarqueC" Then
            oLink.Click
            Exit For
        End If
    Next oLink

Et j'ai débbugger, en fait on ne rentre pas dans le fort, le curseur passe sur la premiere ligne en rouge, et sort directement... bizarre.

Aurez-tu une idée?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
pourquoi "onglets"

pas confondre getElementById et getElementsByTagName
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013

CA FONCTIONNE!!!!!!!!!!!
excuse moi, j'avais écris For Each oLink In ie.Document.getElementsByTagName("onglets") aulieu de
For Each oLink In ie.Document.getElementsByTagName("a"), je suis bête!!!!!!!

Mon dieu, les heures que j'ai apssé dessuq tu m'enlèves un arbre du pied!!!!!!
merciiiiiiiiiiiii!
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013

Je viens de voir ton post! poui j'ai confondu les 2 en effet!!!, je re test une deuxième fois! je te tiens au courant si ça plante, mais pour l'instant ça à l'aire de fonctionner!!!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
dans mon code, on itère sur chaque lien, et on teste le contenu texte

le test est peut etre pas bon (sauts de lignes etc.)
je te laisse le corriger si besoin, a l'aide d'un Instr, par exemple.

une fois le lien identifié, on lance un click tout bête et on quitte la boucle
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013

Bon j'ai du crier victoire un peu trop vite!
bon c'est un peu bizare, car quand j'execute mon code pas à pas, cela fonctionne parfaitement! mais quand je lance mon code d'un coup cela ne fonctionne pas!

J'ai utilisé des msgbox pour voir ce que contenait oLink.innerHTML, lorsque c'est pas à pas, je vois le texte défilé, lorsque c'est l'execution totale, toute les msgbox sont vides.

tu as une idée du problème?
Merci beaucoup.
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013

Visiblement, tu as vraiment TOUT COMPRIS!!!!
J'ai ajouter une petite fonction AttendreIE() juste avant de faire le For each, j'ai testé 5 fois, ça fonctionne!
Merci beaucoup pour ton aide Renfield!!!