CLIQUER SUR UN LIEN JAVASCRIPT / CONTRÔLE DE INTERNET EXPLORER / REMPLIR UN FORM

Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
- - Dernière réponse : Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
- 11 juil. 2008 à 11:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46366-cliquer-sur-un-lien-javascript-controle-de-internet-explorer-remplir-un-formulaire-automatiquement-robot

capo666
Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
Ta une petite erreur , quand tu click sur un bouton tu dois faire cela :

Do While IE.ReadyState <> 3
DoEvents
Loop

Do While IE.ReadyState <> 4
DoEvents
Loop
mzfr
Messages postés
17
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2008
-
Ca ne reviens pas au mème puisque quand readystate=4 c'est que la page est complétement chargée ?
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
3, 4 fichtre !que c'est parlant...

Membres de SHDocVwCtl.tagREADYSTATE :
Const READYSTATE_INTERACTIVE = 3
Const READYSTATE_COMPLETE = 4

leur doc ( http://msdn2.microsoft.com/en-us/library/bb268229(VS.85).aspx ) nous dit:
READYSTATE_INTERACTIVE
Object is interactive, but not all of its data is available.
READYSTATE_COMPLETE
Object has received all of its data.

-----------------

a lire également:
http://groups.google.com/group/microsoft.public.inetsdk.programming.dhtml_editing/browse_thread/thread/f54cc97916235519

----------

en somme, je ne comprends pas le bien fondé de ta remarque, Capo666
dhcp
Messages postés
3
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
25 avril 2008
-
Propre et élégant!

J'ai un petit souci, sous VBA access le code fonctionne parfait, mais je n'ai pas la complétude des méthodes et propriétés, ni d'aide en ligne sur les objet IE.
Par exemple pour "IE.ReadyState" ReadyState est inconnu de l'aide et quand je tape "IE." l'environnement de dev ne propose aucune méthodes objets ou propriétés.

Merci par avance
capo666
Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
Observe bien :
Quand tu appelles une URL (avec Navigate), le ReadyState passe par les états suivants :
Uninitialized, Loading, Interactive, Complete
Puis, quand tu cliques sur un bouton, les états sont :
Interactive, Complete

Donc, il te suffit de créer autant de boucle Do-Loop que tu as d'état à voir défiler :
Quand tu appelles l'URL, ce qui t'intéresse, c'est l'état final :
Do While ie.ReadyState <> 4
DoEvents
Loop
Ensuite, tu sais que tu vas cliquer sur un bouton, il faut attendre qu'apparaissent successivement Interactive, puis Complete :
Do While ie.ReadyState <> 3
DoEvents
Loop
Do While ie.ReadyState <> 4
DoEvents
Loop

voila
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
DHCP => ca vient du fait qu'il te faut ajouter la reference "Microsoft HTML Object Library"
et le composant "Microsoft Internet Controls"

de plus je vois:
Dim IE As Object
qu'il faudra modifier en :
Dim IE As InternetExplorer
mzfr
Messages postés
17
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2008
-
Ahh ouii ouii Capo666, je crois que je viens de comprendre ce aue tu veux dire, c'est à dire aue lorsque tu cliques sur un bouton IE est déjà dans l'état 4 (readystate Complete)
ce qui veut dire que le test de boucle passerai directement ???
capo666
Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
oui et que sa va faire un erreur car sa attent pas que la page soit charger
dhcp
Messages postés
3
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
25 avril 2008
-
Merci Renfield
Désormais la complétude est assurée, mais je n'ai toujours pas d'aide en ligne : "Mot clé introuvable".
Si tu as une idée
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
euh....
sur quelle ligne ?
mzfr
Messages postés
17
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2008
-
Ah oui, merci DHCP, c'est auand même beaucoup plus pratique avec la complétude du code...hihi honte à moi !!
mzfr
Messages postés
17
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2008
-
i = 0
(Capo666) Dites moi ce que vous pensez de ça :

object.Click
'attend que la page soit chargée
Do While IE.ReadyState <> READYSTATE_INTERACTIVE Or IE.ReadyState <> READYSTATE_LOADING
DoEvents
i = i + 1
If i > 30000 Then
Exit Do
End If
Loop

Do While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
dhcp
Messages postés
3
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
25 avril 2008
-
FM : Renfield le 25/04/2008 10:31:34
euh....
sur quelle ligne ?

En fait, dans environnement de dev, lorsque tu surligne un mot clé, la touche F1 appelle l'aide sur ce mot clé.
Mais pour les objet méthodes et propriétés de "Microsoft HTML Object Library" et "Microsoft Internet Controls" F1 me ramène "Mot clé introuvable".
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
l'aide ne comporte donc pas ses mots clé ^^

peux pas te dire : j'ai pas l'aide, je regarde sur le site MSDN
capo666
Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
Oui sa devrais marcher pour la loop
cernf
Messages postés
5
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
2 mai 2008
-
Bonjour à tous,
avec des pages comme yahoo ou google, ça marche très bien pour se logger :
'IE.Document.all("idUser").Value = "Jeannot"
Mais je tombe sur une erreur 91 quand je teste ça sur d'autres pages...
Même chose avec un code du genre :
'Set x = IE.document.getelementsByName("login")
'x.Item(0).Value = "Jeannot"
Quel est le souci à votre avis?
Merci d'avance !!
mzfr
Messages postés
17
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2008
-
Il me semble que l'erreur 91 apparait quand il n'y a pas l'objet que l'on indique, l'inputbox n'a peut etre pas de name ?
cernf
Messages postés
5
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
2 mai 2008
-
C'est possible et pourtant le code source a l'air de lui en donner un... voilà un extrait :





Si ça vous inspire + que moi, merci d'avance
capo666
Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
Si tu pourrais nous donner le lien du site en question ont pourraient t'aider plus facilement je crois.
cernf
Messages postés
5
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
2 mai 2008
-
Ok, voilà l'adresse : http://www.boursedirect.fr/
capo666
Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
pour te connecter essaie ceci:

IE.Document.all("login").Value = "ton_identifiant"
IE.Document.all("password").Value = "ton_mot_de_passe"
IE.Document.forms(0).submit
cernf
Messages postés
5
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
2 mai 2008
-
C'est bien comme ça que je faisais avant (ce qui marche très bien sur yahoo par ex), mais l'erreur 91 apparait toujours pour ce site.
Pour info voilà ma macro :

Sub BD()
Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = 1
IE.Navigate ("http://www.boursedirect.fr/")
Do While IE.readyState <> 4
Loop
IE.document.all("login").Value = "ton_identifiant"
IE.document.all("password").Value = "ton_mot_de_passe"
IE.document.forms(0).submit
End Sub

ça marche bien chez toi? Sinon il me manque peut etre une référence, mais laquelle!?
capo666
Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
Bon j'ai trouvé l'erreur. enfait, l'erreur affiche a cause que le login et password est dans une frame donc pour remplir les deux zone de texte il faut que tu sois dans la page de la frame

il suffit juste de mettre le url de la frame http://www.boursedirect.fr/frmTop.php

Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = 1
IE.Navigate ("http://www.boursedirect.fr/frmTop.php")
Do While IE.readyState <> 4
Loop
IE.document.All("login").Value = "ton_identifiant"
IE.document.All("password").Value = "ton_mot_de_passe"
IE.document.Forms(0).submit

j'ai tester et sa marche
cernf
Messages postés
5
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
2 mai 2008
-
Completement génial, bien vu !!
Merci, a+
bandifull
Messages postés
19
Date d'inscription
jeudi 7 décembre 2006
Statut
Membre
Dernière intervention
11 juillet 2008
-
Bonjour à tous !
Ceci ne marche pas chez moi
IE.Document.all("idUser").Value = "Jeannot" 'textbox...
En effet, apres Document, j'ai seulement Equals, GetHashCode, GetType ReferenceEquals ou ToString
Ceci est surement du à VB express 2008. Quelqu'un a t-il une idée pour trouver l'équivalent ?
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
ta variable semble ne pas avoir été typée
bandifull
Messages postés
19
Date d'inscription
jeudi 7 décembre 2006
Statut
Membre
Dernière intervention
11 juillet 2008
-
Pourtant je reprend exactement le même code :(
J'ai pourtant bien ajouté les 2 références
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
tu dois typer tes variables.... VB2008 est plus contraignant...

pas de
IE.Document.All ....

mais
Dim oDoc As ....
oDoc = IE.Document
oDoc.All ....
bandifull
Messages postés
19
Date d'inscription
jeudi 7 décembre 2006
Statut
Membre
Dernière intervention
11 juillet 2008
-
J'ai (enfin) reussit a la faire fonctionner, excellente source.
Savez vous comment on peut cocher un bouton radio d'un formulaire ?
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
checked = true

me semble