connection site web avec mdp

Le
Tendasque
Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en https
avec la page d'accueil publique et une connexion par login et mdp dans des
champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes suivantes
ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #5382491
Bonjour.
Le code suivant fonctionne pour moi : j'ai deux identifiants et un mot de
passe. Quand IE est lancé, il faut compter le nombre de tabulations
nécéssaires pour atteindre la première zone à remplir (9 dans mon cas)

AppActivate ("Internet Explorer")
Application.Wait Now() + TimeValue("00:00:01")
For i = 1 To 9
SendKeys "{TAB}"
Application.Wait Now() + TimeValue("00:00:01")
Next i
SendKeys "id1{TAB}id2{TAB}motdepasse~"
Cordialement.
Daniel
"Tendasque" %23j$
Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en https
avec la page d'accueil publique et une connexion par login et mdp dans des
champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes
suivantes ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide



Tendasque
Le #5382401
Merci Daniel, çà fonctionne.
Seul bémol: le nombre de Tabs dépend de la configuration du navigateur: si
on a une barre d'outil google par exemple, on rajoute un Tab...Il doit y
avoir un moyen plus direct si on connait le nom du champ, quelqu'un le
connait-il ?


"Daniel.C" ua2qgn%
Bonjour.
Le code suivant fonctionne pour moi : j'ai deux identifiants et un mot de
passe. Quand IE est lancé, il faut compter le nombre de tabulations
nécéssaires pour atteindre la première zone à remplir (9 dans mon cas)

AppActivate ("Internet Explorer")
Application.Wait Now() + TimeValue("00:00:01")
For i = 1 To 9
SendKeys "{TAB}"
Application.Wait Now() + TimeValue("00:00:01")
Next i
SendKeys "id1{TAB}id2{TAB}motdepasse~"
Cordialement.
Daniel
"Tendasque" %23j$
Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en https
avec la page d'accueil publique et une connexion par login et mdp dans
des champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes
suivantes ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide







Tendasque
Le #5382101
J'ai trouvé autre chose qui fonctionne sans les Tabs:

Dim Identifiant As String
Dim Pass As String
Dim htmldata As IHTMLElementCollection

Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate ("https://www.unss.org/")
Do While IE.Busy
Application.Wait (Now + 0.5 / 3600 / 24)
Loop
Application.Wait (Now + 1 / 3600 / 24)
Set maPageHtml = IE.document
Set htmldata = maPageHtml.getElementsByTagName("input")
Identifiant = "XXXX"
Pass = "YYYY"
htmldata(0).innerText = Identifiant
htmldata(1).innerText = Pass

htmldata(2).Click 'validation des identifiants et mdp

Cela fonctionne bien, la page se réactualise avec 4 boutons qui apparaissent
à la place des champs de saisie, mais là, je n'arrive pas à faire cliquer
l'un des boutons; j'ai essayé:

htmldata(1).Click 'ou d'autres numéros sans succès...

Merci de vos lumières



"Tendasque" %2327Wbc$
Merci Daniel, çà fonctionne.
Seul bémol: le nombre de Tabs dépend de la configuration du navigateur: si
on a une barre d'outil google par exemple, on rajoute un Tab...Il doit y
avoir un moyen plus direct si on connait le nom du champ, quelqu'un le
connait-il ?


"Daniel.C" ua2qgn%
Bonjour.
Le code suivant fonctionne pour moi : j'ai deux identifiants et un mot de
passe. Quand IE est lancé, il faut compter le nombre de tabulations
nécéssaires pour atteindre la première zone à remplir (9 dans mon cas)

AppActivate ("Internet Explorer")
Application.Wait Now() + TimeValue("00:00:01")
For i = 1 To 9
SendKeys "{TAB}"
Application.Wait Now() + TimeValue("00:00:01")
Next i
SendKeys "id1{TAB}id2{TAB}motdepasse~"
Cordialement.
Daniel
"Tendasque" %23j$
Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en https
avec la page d'accueil publique et une connexion par login et mdp dans
des champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation
objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes
suivantes ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide











Tendasque
Le #5382061
Bon, je bidouille...et je m'en sors en mettant chaque fois l'adresse de la
page:

IE.Navigate ("https://lesite.org/?m=2") 'par exemple; je ne suis pas sûr que
ce soit une façon bien élégante...

ça marche jusqu'à une page où je dois renseigner des formulaires avec des
choix dans boites déroulantes:

par exemple code source:
SELECT NAME="SEL0" onchange="this.form.submit();"><OPTION value="0" >Critère
1</OPTION>
<OPTION value="2" >N° licence</OPTION>
<OPTION value="4" >Privé/Public</OPTION>
<OPTION value="5" >Département</OPTION>
<OPTION value="6" >N° de district</OPTION>
<OPTION value="8" >Sexe</OPTION>
<OPTION value="9" >Nom</OPTION>
<OPTION value="10" >Catégorie</OPTION>
</SELECT>

qui ouvre une nouvelle boite avec d'autres choix...
comment valider les boites avec les choix que j'ai pré-choisis ?
Merci


"Tendasque" eemnB%
J'ai trouvé autre chose qui fonctionne sans les Tabs:

Dim Identifiant As String
Dim Pass As String
Dim htmldata As IHTMLElementCollection

Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate ("https://www.unss.org/")
Do While IE.Busy
Application.Wait (Now + 0.5 / 3600 / 24)
Loop
Application.Wait (Now + 1 / 3600 / 24)
Set maPageHtml = IE.document
Set htmldata = maPageHtml.getElementsByTagName("input")
Identifiant = "XXXX"
Pass = "YYYY"
htmldata(0).innerText = Identifiant
htmldata(1).innerText = Pass

htmldata(2).Click 'validation des identifiants et mdp

Cela fonctionne bien, la page se réactualise avec 4 boutons qui
apparaissent à la place des champs de saisie, mais là, je n'arrive pas à
faire cliquer l'un des boutons; j'ai essayé:

htmldata(1).Click 'ou d'autres numéros sans succès...

Merci de vos lumières



"Tendasque" %2327Wbc$
Merci Daniel, çà fonctionne.
Seul bémol: le nombre de Tabs dépend de la configuration du navigateur:
si on a une barre d'outil google par exemple, on rajoute un Tab...Il doit
y avoir un moyen plus direct si on connait le nom du champ, quelqu'un le
connait-il ?


"Daniel.C" ua2qgn%
Bonjour.
Le code suivant fonctionne pour moi : j'ai deux identifiants et un mot
de passe. Quand IE est lancé, il faut compter le nombre de tabulations
nécéssaires pour atteindre la première zone à remplir (9 dans mon cas)

AppActivate ("Internet Explorer")
Application.Wait Now() + TimeValue("00:00:01")
For i = 1 To 9
SendKeys "{TAB}"
Application.Wait Now() + TimeValue("00:00:01")
Next i
SendKeys "id1{TAB}id2{TAB}motdepasse~"
Cordialement.
Daniel
"Tendasque" %23j$
Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en
https avec la page d'accueil publique et une connexion par login et mdp
dans des champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation
objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes
suivantes ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide















Misange
Le #5099941
Bonjour

Là je crains que tu ne cherches à aller trop loin avec VBA.
Tout dépend de la méthode de codage de la page pour aller chercher les
infos dans le formulaire. Ce que tu montres ne permet pas de savoir si
les données sont envoyées par put ou get et par conséquent si tu peux ou
non les coder en dur dans l'adresse de la page.
Une fois que tu as entré les bonnes données sur le formulaire et validé,
regarde l'adresse de la page. Si tu vois des trucs du genre
.....php?nom=toto&prenom=zaza
alors reconstruis l'adresse de ta page en incluant les valeur à passer.
Si cela n'apparait pas alors tu es bon pour continuer à bidouiller avec
des tabs... et là je ne sais pas comment t'aider

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bon, je bidouille...et je m'en sors en mettant chaque fois l'adresse de la
page:

IE.Navigate ("https://lesite.org/?m=2") 'par exemple; je ne suis pas sûr que
ce soit une façon bien élégante...

ça marche jusqu'à une page où je dois renseigner des formulaires avec des
choix dans boites déroulantes:

par exemple code source:
SELECT NAME="SEL0" onchange="this.form.submit();"><OPTION value="0" >Critère
1</OPTION>
<OPTION value="2" >N° licence</OPTION>
<OPTION value="4" >Privé/Public</OPTION>
<OPTION value="5" >Département</OPTION>
<OPTION value="6" >N° de district</OPTION>
<OPTION value="8" >Sexe</OPTION>
<OPTION value="9" >Nom</OPTION>
<OPTION value="10" >Catégorie</OPTION>
</SELECT>

qui ouvre une nouvelle boite avec d'autres choix...
comment valider les boites avec les choix que j'ai pré-choisis ?
Merci


"Tendasque" eemnB%
J'ai trouvé autre chose qui fonctionne sans les Tabs:

Dim Identifiant As String
Dim Pass As String
Dim htmldata As IHTMLElementCollection

Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate ("https://www.unss.org/")
Do While IE.Busy
Application.Wait (Now + 0.5 / 3600 / 24)
Loop
Application.Wait (Now + 1 / 3600 / 24)
Set maPageHtml = IE.document
Set htmldata = maPageHtml.getElementsByTagName("input")
Identifiant = "XXXX"
Pass = "YYYY"
htmldata(0).innerText = Identifiant
htmldata(1).innerText = Pass

htmldata(2).Click 'validation des identifiants et mdp

Cela fonctionne bien, la page se réactualise avec 4 boutons qui
apparaissent à la place des champs de saisie, mais là, je n'arrive pas à
faire cliquer l'un des boutons; j'ai essayé:

htmldata(1).Click 'ou d'autres numéros sans succès...

Merci de vos lumières



"Tendasque" %2327Wbc$
Merci Daniel, çà fonctionne.
Seul bémol: le nombre de Tabs dépend de la configuration du navigateur:
si on a une barre d'outil google par exemple, on rajoute un Tab...Il doit
y avoir un moyen plus direct si on connait le nom du champ, quelqu'un le
connait-il ?


"Daniel.C" ua2qgn%
Bonjour.
Le code suivant fonctionne pour moi : j'ai deux identifiants et un mot
de passe. Quand IE est lancé, il faut compter le nombre de tabulations
nécéssaires pour atteindre la première zone à remplir (9 dans mon cas)

AppActivate ("Internet Explorer")
Application.Wait Now() + TimeValue("00:00:01")
For i = 1 To 9
SendKeys "{TAB}"
Application.Wait Now() + TimeValue("00:00:01")
Next i
SendKeys "id1{TAB}id2{TAB}motdepasse~"
Cordialement.
Daniel
"Tendasque" %23j$
Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en
https avec la page d'accueil publique et une connexion par login et mdp
dans des champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation
objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes
suivantes ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide
















Tendasque
Le #5099801
Merci Migratteuse,

Voila le code source plus complet du formulaire de départ (c'est par Post
apparemment):
<TD alignÎnter valign=top ><FORM NAMEª method=post
action="?mod¬adas&g1=lic"
ENCTYPE="multipart/form-data"

<TABLE width0% border=0 ><TR><TD align=left >

<TABLE border=0>
<TR >
<TD CLASS="TABLEHEAD2" alignÎnter>
<TABLE>
<TR>
<TD CLASS="TABLEHEAD2" >Dernière mise à jour:</TD>
</TR>
<TR>
<TD CLASS="TABLEDATA2">12/12/2007 à 23:02</TD>
</TR>
<TR><td alignÎnter><input TYPE=IMAGE NAME="BOUT_TELE_TXT"
SRC="/img/bt/bt_hdownload_txt.gif" alt="Télécharger le fichier complet"
title="Télécharger le fichier complet au format texte"></td><td
alignÎnter><input TYPE=IMAGE NAME="BOUT_TELE_DBF"
SRC="/img/bt/bt_hdownload_dbf.gif" alt="Télécharger le fichier complet"
title="Télécharger le fichier complet au format dbf"></td></TR>
</TABLE>
</TD>
<TD CLASS="TABLEHEAD1" alignÎnter>
<TABLE>
<TR CLASS="TABLEHEAD1">
<TD colspan=2 alignÎnter CLASS="TABLEHEAD1">Recherche de
licenciés<br> pour votre académie<br>pour dsd034<br> </TD>
</TR>
<TR valign='middle'><TD class="TABLEHEAD2" height% align=right><SELECT
NAME="SEL0" onchange="this.form.submit();"><OPTION value="0" >Critère
1</OPTION>
<OPTION value="2" >N° licence</OPTION>
<OPTION value="4" >Privé/Public</OPTION>
<OPTION value="5" >Département</OPTION>
<OPTION value="6" >N° de district</OPTION>
<OPTION value="8" >Sexe</OPTION>
<OPTION value="9" >Nom</OPTION>
<OPTION value="10" >Catégorie</OPTION>
</SELECT></TD><TD class="TABLEDATA1" align=left >VIDE &nbsp;</TD></TR>

<TR class="TABLEHEAD1" >
<TD alignÎnter >
<FONT COLOR=WHITE>
Nouvelle recherche
</A>
</FONT>
</TD>
<TD alignÎnter class="TABLEHEAD1" >
<INPUT TYPE=IMAGE NAME="CMD_SEARCH" src="/img/bt/bt_chercher1.gif"
onMouseOver="MM_nbGroup('over','CMD_SEARCH','/img/bt/bt_chercher2.gif','/img/bt/bt_chercher1.gif');"
onMouseOut=" MM_nbGroup('out'); "

</TD>

</TR>

</TABLE>
</TD>
<TD CLASS="TABLEHEAD1" alignÎnter valign='top'>

</TD>
</TR>
<TR>
<TD colspan=3 alignÎnter >
<TABLE cellspacing=5 CLASS="TABLEHEAD1" border=0 cellpadding=0
width0% >

<TR alignÎnter valign='middle'>
<TD CLASS="TABLEHEAD1" width%% align=right >
&nbsp;
<TD CLASS="TABLEHEAD1" width%% align=left >
&nbsp;
</TD>
<TD CLASS="TABLEHEAD1" width%% alignÎnter>
&nbsp;
</TD>
<TD CLASS="TABLEHEAD1" width%% alignÎnter>
&nbsp;
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</TD></TR></TABLE>

</FORM>
</TD>
</TR>
</TABLE>Le premier choix (département par ex) ouvre un 2ème choix (quel
département)"Misange" news:
Bonjour

Là je crains que tu ne cherches à aller trop loin avec VBA.
Tout dépend de la méthode de codage de la page pour aller chercher les
infos dans le formulaire. Ce que tu montres ne permet pas de savoir si les
données sont envoyées par put ou get et par conséquent si tu peux ou non
les coder en dur dans l'adresse de la page.
Une fois que tu as entré les bonnes données sur le formulaire et validé,
regarde l'adresse de la page. Si tu vois des trucs du genre
.....php?nom=toto&prenom=zaza
alors reconstruis l'adresse de ta page en incluant les valeur à passer.
Si cela n'apparait pas alors tu es bon pour continuer à bidouiller avec
des tabs... et là je ne sais pas comment t'aider

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bon, je bidouille...et je m'en sors en mettant chaque fois l'adresse de
la page:

IE.Navigate ("https://lesite.org/?m=2") 'par exemple; je ne suis pas sûr
que ce soit une façon bien élégante...

ça marche jusqu'à une page où je dois renseigner des formulaires avec des
choix dans boites déroulantes:

par exemple code source:
SELECT NAME="SEL0" onchange="this.form.submit();"><OPTION value="0"
Critère 1</OPTION>

<OPTION value="2" >N° licence</OPTION>
<OPTION value="4" >Privé/Public</OPTION>
<OPTION value="5" >Département</OPTION>
<OPTION value="6" >N° de district</OPTION>
<OPTION value="8" >Sexe</OPTION>
<OPTION value="9" >Nom</OPTION>
<OPTION value="10" >Catégorie</OPTION>
</SELECT>

qui ouvre une nouvelle boite avec d'autres choix...
comment valider les boites avec les choix que j'ai pré-choisis ?
Merci


"Tendasque" eemnB%
J'ai trouvé autre chose qui fonctionne sans les Tabs:

Dim Identifiant As String
Dim Pass As String
Dim htmldata As IHTMLElementCollection

Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate ("https://www.unss.org/")
Do While IE.Busy
Application.Wait (Now + 0.5 / 3600 / 24)
Loop
Application.Wait (Now + 1 / 3600 / 24)
Set maPageHtml = IE.document
Set htmldata = maPageHtml.getElementsByTagName("input")
Identifiant = "XXXX"
Pass = "YYYY"
htmldata(0).innerText = Identifiant
htmldata(1).innerText = Pass

htmldata(2).Click 'validation des identifiants et mdp

Cela fonctionne bien, la page se réactualise avec 4 boutons qui
apparaissent à la place des champs de saisie, mais là, je n'arrive pas à
faire cliquer l'un des boutons; j'ai essayé:

htmldata(1).Click 'ou d'autres numéros sans succès...

Merci de vos lumières



"Tendasque" %2327Wbc$
Merci Daniel, çà fonctionne.
Seul bémol: le nombre de Tabs dépend de la configuration du navigateur:
si on a une barre d'outil google par exemple, on rajoute un Tab...Il
doit y avoir un moyen plus direct si on connait le nom du champ,
quelqu'un le connait-il ?


"Daniel.C" ua2qgn%
Bonjour.
Le code suivant fonctionne pour moi : j'ai deux identifiants et un mot
de passe. Quand IE est lancé, il faut compter le nombre de tabulations
nécéssaires pour atteindre la première zone à remplir (9 dans mon cas)

AppActivate ("Internet Explorer")
Application.Wait Now() + TimeValue("00:00:01")
For i = 1 To 9
SendKeys "{TAB}"
Application.Wait Now() + TimeValue("00:00:01")
Next i
SendKeys "id1{TAB}id2{TAB}motdepasse~"
Cordialement.
Daniel
"Tendasque" %23j$
Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en
https avec la page d'accueil publique et une connexion par login et
mdp dans des champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation
objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes
suivantes ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide

















Misange
Le #5099791
Ca semble effectivement être géré par post. Dans ce cas, la page est
appelée normalement en lui passant les paramètres comme je te l'ai
indiqué et il te suffit d'indiquer la bonne adresse de page.

du genre http://www.excelabo.net/moteurs/motsclefs.php?mot=web
(l'adresse est juste là pour te montrer l'agencement des ? et = dans
l'adresse)

C'est bien plus simple que de jouer avec les keycodes je trouve. De plus
si le web master de la page s'amuse à changer quelque chose tu aurais
tout à refaire. Alors que là tu es relativement à l'abri, tant qu'il ne
décide pas de mettre un cryptogramme à recopier à chaque connection...

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Merci Migratteuse,

Voila le code source plus complet du formulaire de départ (c'est par Post
apparemment):
<TD alignÎnter valign=top ><FORM NAMEª method=post
action="?mod¬adas&g1=lic"
ENCTYPE="multipart/form-data"
<TABLE width0% border=0 ><TR><TD align=left >
<TABLE border=0>
<TR >
<TD CLASS="TABLEHEAD2" alignÎnter>
<TABLE>
<TR>
<TD CLASS="TABLEHEAD2" >Dernière mise à jour:</TD>
</TR>
<TR>
<TD CLASS="TABLEDATA2">12/12/2007 à 23:02</TD>
</TR>
<TR><td alignÎnter><input TYPE=IMAGE NAME="BOUT_TELE_TXT"
SRC="/img/bt/bt_hdownload_txt.gif" alt="Télécharger le fichier complet"
title="Télécharger le fichier complet au format texte"></td><td
alignÎnter><input TYPE=IMAGE NAME="BOUT_TELE_DBF"
SRC="/img/bt/bt_hdownload_dbf.gif" alt="Télécharger le fichier complet"
title="Télécharger le fichier complet au format dbf"></td></TR>
</TABLE>
</TD>
<TD CLASS="TABLEHEAD1" alignÎnter>
<TABLE>
<TR CLASS="TABLEHEAD1">
<TD colspan=2 alignÎnter CLASS="TABLEHEAD1">Recherche de
licenciés<br> pour votre académie<br>pour dsd034<br> </TD>
</TR>
<TR valign='middle'><TD class="TABLEHEAD2" height% align=right><SELECT
NAME="SEL0" onchange="this.form.submit();"><OPTION value="0" >Critère
1</OPTION>
<OPTION value="2" >N° licence</OPTION>
<OPTION value="4" >Privé/Public</OPTION>
<OPTION value="5" >Département</OPTION>
<OPTION value="6" >N° de district</OPTION>
<OPTION value="8" >Sexe</OPTION>
<OPTION value="9" >Nom</OPTION>
<OPTION value="10" >Catégorie</OPTION>
</SELECT></TD><TD class="TABLEDATA1" align=left >VIDE &nbsp;</TD></TR>

<TR class="TABLEHEAD1" >
<TD alignÎnter >
<FONT COLOR=WHITE>
Nouvelle recherche
</A>
</FONT>
</TD>
<TD alignÎnter class="TABLEHEAD1" >
<INPUT TYPE=IMAGE NAME="CMD_SEARCH" src="/img/bt/bt_chercher1.gif"
onMouseOver="MM_nbGroup('over','CMD_SEARCH','/img/bt/bt_chercher2.gif','/img/bt/bt_chercher1.gif');"
onMouseOut=" MM_nbGroup('out'); "

</TD>

</TR>

</TABLE>
</TD>
<TD CLASS="TABLEHEAD1" alignÎnter valign='top'>

</TD>
</TR>
<TR>
<TD colspan=3 alignÎnter >
<TABLE cellspacing=5 CLASS="TABLEHEAD1" border=0 cellpadding=0
width0% >

<TR alignÎnter valign='middle'>
<TD CLASS="TABLEHEAD1" width%% align=right >
&nbsp;
<TD CLASS="TABLEHEAD1" width%% align=left >
&nbsp;
</TD>
<TD CLASS="TABLEHEAD1" width%% alignÎnter>
&nbsp;
</TD>
<TD CLASS="TABLEHEAD1" width%% alignÎnter>
&nbsp;
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</TD></TR></TABLE>

</FORM>
</TD>
</TR>
</TABLE>Le premier choix (département par ex) ouvre un 2ème choix (quel
département)"Misange" news:
Bonjour

Là je crains que tu ne cherches à aller trop loin avec VBA.
Tout dépend de la méthode de codage de la page pour aller chercher les
infos dans le formulaire. Ce que tu montres ne permet pas de savoir si les
données sont envoyées par put ou get et par conséquent si tu peux ou non
les coder en dur dans l'adresse de la page.
Une fois que tu as entré les bonnes données sur le formulaire et validé,
regarde l'adresse de la page. Si tu vois des trucs du genre
.....php?nom=toto&prenom=zaza
alors reconstruis l'adresse de ta page en incluant les valeur à passer.
Si cela n'apparait pas alors tu es bon pour continuer à bidouiller avec
des tabs... et là je ne sais pas comment t'aider

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bon, je bidouille...et je m'en sors en mettant chaque fois l'adresse de
la page:

IE.Navigate ("https://lesite.org/?m=2") 'par exemple; je ne suis pas sûr
que ce soit une façon bien élégante...

ça marche jusqu'à une page où je dois renseigner des formulaires avec des
choix dans boites déroulantes:

par exemple code source:
SELECT NAME="SEL0" onchange="this.form.submit();"><OPTION value="0"
Critère 1</OPTION>

<OPTION value="2" >N° licence</OPTION>
<OPTION value="4" >Privé/Public</OPTION>
<OPTION value="5" >Département</OPTION>
<OPTION value="6" >N° de district</OPTION>
<OPTION value="8" >Sexe</OPTION>
<OPTION value="9" >Nom</OPTION>
<OPTION value="10" >Catégorie</OPTION>
</SELECT>

qui ouvre une nouvelle boite avec d'autres choix...
comment valider les boites avec les choix que j'ai pré-choisis ?
Merci


"Tendasque" eemnB%
J'ai trouvé autre chose qui fonctionne sans les Tabs:

Dim Identifiant As String
Dim Pass As String
Dim htmldata As IHTMLElementCollection

Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate ("https://www.unss.org/")
Do While IE.Busy
Application.Wait (Now + 0.5 / 3600 / 24)
Loop
Application.Wait (Now + 1 / 3600 / 24)
Set maPageHtml = IE.document
Set htmldata = maPageHtml.getElementsByTagName("input")
Identifiant = "XXXX"
Pass = "YYYY"
htmldata(0).innerText = Identifiant
htmldata(1).innerText = Pass

htmldata(2).Click 'validation des identifiants et mdp

Cela fonctionne bien, la page se réactualise avec 4 boutons qui
apparaissent à la place des champs de saisie, mais là, je n'arrive pas à
faire cliquer l'un des boutons; j'ai essayé:

htmldata(1).Click 'ou d'autres numéros sans succès...

Merci de vos lumières



"Tendasque" %2327Wbc$
Merci Daniel, çà fonctionne.
Seul bémol: le nombre de Tabs dépend de la configuration du navigateur:
si on a une barre d'outil google par exemple, on rajoute un Tab...Il
doit y avoir un moyen plus direct si on connait le nom du champ,
quelqu'un le connait-il ?


"Daniel.C" ua2qgn%
Bonjour.
Le code suivant fonctionne pour moi : j'ai deux identifiants et un mot
de passe. Quand IE est lancé, il faut compter le nombre de tabulations
nécéssaires pour atteindre la première zone à remplir (9 dans mon cas)

AppActivate ("Internet Explorer")
Application.Wait Now() + TimeValue("00:00:01")
For i = 1 To 9
SendKeys "{TAB}"
Application.Wait Now() + TimeValue("00:00:01")
Next i
SendKeys "id1{TAB}id2{TAB}motdepasse~"
Cordialement.
Daniel
"Tendasque" %23j$
Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en
https avec la page d'accueil publique et une connexion par login et
mdp dans des champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation
objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes
suivantes ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide
















Tendasque
Le #5097401
Ok, merci, je vais approfondir la chose.

"Misange"
Ca semble effectivement être géré par post. Dans ce cas, la page est
appelée normalement en lui passant les paramètres comme je te l'ai indiqué
et il te suffit d'indiquer la bonne adresse de page.

du genre http://www.excelabo.net/moteurs/motsclefs.php?mot=web
(l'adresse est juste là pour te montrer l'agencement des ? et = dans
l'adresse)

C'est bien plus simple que de jouer avec les keycodes je trouve. De plus
si le web master de la page s'amuse à changer quelque chose tu aurais tout
à refaire. Alors que là tu es relativement à l'abri, tant qu'il ne décide
pas de mettre un cryptogramme à recopier à chaque connection...

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Merci Migratteuse,

Voila le code source plus complet du formulaire de départ (c'est par Post
apparemment):
<TD alignÎnter valign=top ><FORM NAMEª method=post
action="?mod¬adas&g1=lic"
ENCTYPE="multipart/form-data"
<TABLE width0% border=0 ><TR><TD align=left >
<TABLE border=0>
<TR >
<TD CLASS="TABLEHEAD2" alignÎnter>
<TABLE>
<TR>
<TD CLASS="TABLEHEAD2" >Dernière mise à jour:</TD>
</TR>
<TR>
<TD CLASS="TABLEDATA2">12/12/2007 à 23:02</TD>
</TR>
<TR><td alignÎnter><input TYPE=IMAGE NAME="BOUT_TELE_TXT"
SRC="/img/bt/bt_hdownload_txt.gif" alt="Télécharger le fichier complet"
title="Télécharger le fichier complet au format texte"></td><td
alignÎnter><input TYPE=IMAGE NAME="BOUT_TELE_DBF"
SRC="/img/bt/bt_hdownload_dbf.gif" alt="Télécharger le fichier complet"
title="Télécharger le fichier complet au format dbf"></td></TR>
</TABLE>
</TD>
<TD CLASS="TABLEHEAD1" alignÎnter>
<TABLE>
<TR CLASS="TABLEHEAD1">
<TD colspan=2 alignÎnter CLASS="TABLEHEAD1">Recherche de
licenciés<br> pour votre académie<br>pour dsd034<br> </TD>
</TR>
<TR valign='middle'><TD class="TABLEHEAD2" height%
align=right> value="0" >Critère 1</OPTION>
<OPTION value="2" >N° licence</OPTION>
<OPTION value="4" >Privé/Public</OPTION>
<OPTION value="5" >Département</OPTION>
<OPTION value="6" >N° de district</OPTION>
<OPTION value="8" >Sexe</OPTION>
<OPTION value="9" >Nom</OPTION>
<OPTION value="10" >Catégorie</OPTION>
</SELECT></TD><TD class="TABLEDATA1" align=left >VIDE &nbsp;</TD></TR>

<TR class="TABLEHEAD1" >
<TD alignÎnter >
<FONT COLOR=WHITE>
Nouvelle recherche
</A>
</FONT>
</TD>
<TD alignÎnter class="TABLEHEAD1" >
<INPUT TYPE=IMAGE NAME="CMD_SEARCH" src="/img/bt/bt_chercher1.gif"
onMouseOver="MM_nbGroup('over','CMD_SEARCH','/img/bt/bt_chercher2.gif','/img/bt/bt_chercher1.gif');"
onMouseOut=" MM_nbGroup('out'); "

</TD>

</TR>

</TABLE>
</TD>
<TD CLASS="TABLEHEAD1" alignÎnter valign='top'>

</TD>
</TR>
<TR>
<TD colspan=3 alignÎnter >
<TABLE cellspacing=5 CLASS="TABLEHEAD1" border=0 cellpadding=0
width0% >

<TR alignÎnter valign='middle'>
<TD CLASS="TABLEHEAD1" width%% align=right >
&nbsp;
<TD CLASS="TABLEHEAD1" width%% align=left >
&nbsp;
</TD>
<TD CLASS="TABLEHEAD1" width%% alignÎnter>
&nbsp;
</TD>
<TD CLASS="TABLEHEAD1" width%% alignÎnter>
&nbsp;
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</TD></TR></TABLE>

</FORM>
</TD>
</TR>
</TABLE>Le premier choix (département par ex) ouvre un 2ème choix (quel
département)"Misange" news:
Bonjour

Là je crains que tu ne cherches à aller trop loin avec VBA.
Tout dépend de la méthode de codage de la page pour aller chercher les
infos dans le formulaire. Ce que tu montres ne permet pas de savoir si
les données sont envoyées par put ou get et par conséquent si tu peux ou
non les coder en dur dans l'adresse de la page.
Une fois que tu as entré les bonnes données sur le formulaire et validé,
regarde l'adresse de la page. Si tu vois des trucs du genre
.....php?nom=toto&prenom=zaza
alors reconstruis l'adresse de ta page en incluant les valeur à passer.
Si cela n'apparait pas alors tu es bon pour continuer à bidouiller avec
des tabs... et là je ne sais pas comment t'aider

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bon, je bidouille...et je m'en sors en mettant chaque fois l'adresse de
la page:

IE.Navigate ("https://lesite.org/?m=2") 'par exemple; je ne suis pas
sûr que ce soit une façon bien élégante...

ça marche jusqu'à une page où je dois renseigner des formulaires avec
des choix dans boites déroulantes:

par exemple code source:
SELECT NAME="SEL0" onchange="this.form.submit();"><OPTION value="0"
Critère 1</OPTION>

<OPTION value="2" >N° licence</OPTION>
<OPTION value="4" >Privé/Public</OPTION>
<OPTION value="5" >Département</OPTION>
<OPTION value="6" >N° de district</OPTION>
<OPTION value="8" >Sexe</OPTION>
<OPTION value="9" >Nom</OPTION>
<OPTION value="10" >Catégorie</OPTION>
</SELECT>

qui ouvre une nouvelle boite avec d'autres choix...
comment valider les boites avec les choix que j'ai pré-choisis ?
Merci


"Tendasque" eemnB%
J'ai trouvé autre chose qui fonctionne sans les Tabs:

Dim Identifiant As String
Dim Pass As String
Dim htmldata As IHTMLElementCollection

Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.Navigate ("https://www.unss.org/")
Do While IE.Busy
Application.Wait (Now + 0.5 / 3600 / 24)
Loop
Application.Wait (Now + 1 / 3600 / 24)
Set maPageHtml = IE.document
Set htmldata = maPageHtml.getElementsByTagName("input")
Identifiant = "XXXX"
Pass = "YYYY"
htmldata(0).innerText = Identifiant
htmldata(1).innerText = Pass

htmldata(2).Click 'validation des identifiants et mdp

Cela fonctionne bien, la page se réactualise avec 4 boutons qui
apparaissent à la place des champs de saisie, mais là, je n'arrive pas
à faire cliquer l'un des boutons; j'ai essayé:

htmldata(1).Click 'ou d'autres numéros sans succès...

Merci de vos lumières



"Tendasque" %2327Wbc$
Merci Daniel, çà fonctionne.
Seul bémol: le nombre de Tabs dépend de la configuration du
navigateur: si on a une barre d'outil google par exemple, on rajoute
un Tab...Il doit y avoir un moyen plus direct si on connait le nom du
champ, quelqu'un le connait-il ?


"Daniel.C" ua2qgn%
Bonjour.
Le code suivant fonctionne pour moi : j'ai deux identifiants et un
mot de passe. Quand IE est lancé, il faut compter le nombre de
tabulations nécéssaires pour atteindre la première zone à remplir (9
dans mon cas)

AppActivate ("Internet Explorer")
Application.Wait Now() + TimeValue("00:00:01")
For i = 1 To 9
SendKeys "{TAB}"
Application.Wait Now() + TimeValue("00:00:01")
Next i
SendKeys "id1{TAB}id2{TAB}motdepasse~"
Cordialement.
Daniel
"Tendasque" %23j$
Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en
https avec la page d'accueil publique et une connexion par login et
mdp dans des champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation
objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes
suivantes ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide


















jipi
Le #5294081
Bonjour,

Quand j'essaie la sub j'ai une erreur sur "Getsystemmetrics32" => sub ou
fonction non définie.

De quoi s'agit il ? pb de référence ou autre ?

Merci de vos réponses

jipi


Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en https
avec la page d'accueil publique et une connexion par login et mdp dans des
champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes suivantes
ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide





Fistoulic
Le #5128731
Bonjour

Pour passer l'étape getsytem..... il suffit de mettre ça avant la sub :
Declare Function GetSystemMetrics32 Lib "user32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long

J'ai récupéré sur excelabo il y a qques jours une macro d'Isabelle, très
proche de celle-ci, mais que je n'ai pas non plus réussi à adapter.

Pour prendre un exemple, il s'agissait de compléter l'identifiant et le mdp
ici :
http://www.lemoniteur-expert.com/indices-index/
A priori, il suffirait d'envoyer quelques SendKeys "{TAB}" pour arriver au
bon endroit (sic) mais ça ne marche pas... et je me dis (intuitivement)
qu'il doit y avoir des solutions plus "propres", en s'intéressant au html.
Quelqu'un pourrait nous guider ?

F.

"jipi"
Bonjour,

Quand j'essaie la sub j'ai une erreur sur "Getsystemmetrics32" => sub ou
fonction non définie.

De quoi s'agit il ? pb de référence ou autre ?

Merci de vos réponses

jipi


Bonjour,
Je voudrais aller chercher des infos sur un site; C'est un site en https
avec la page d'accueil publique et une connexion par login et mdp dans
des
champs;
pas de pb pour s'y connecter:

Set IE = CreateObject("InternetExplorer.Application") 'creation objetIE

IE.Navigate ("https://www.unss.org/")

IE.Visible = True: IE.Top = 0: IE.Left = 0
IE.Width = GetSystemMetrics32(0)
IE.Height = GetSystemMetrics32(1)

Do While IE.ReadyState <> 4 'attend que la page soit chargee
DoEvents
Loop

Mais je n'ai pas le focus sur les zones de saisie et les commandes
suivantes
ne sont pas opérantes:

SendKeys ("login")
SendKeys "{TAB}"
SendKeys ("mdp")
SendKeys "{enter}"

Que rajouter pour que login et mdp se placent au bon endroit ?
Merci de votre aide







Publicité
Poster une réponse
Anonyme