Besoin d'aide pour remplir automatiquement une zone de texte sur page html à par

rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011 - 4 nov. 2011 à 14:47
rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011 - 7 nov. 2011 à 14:54
Bonjour,
Je suis en train de trvailler sur un bout de code vba excel récupéré sur le net, et censé me permettre de remplir une zone de texte html sur une page web à partir du contenu d'une cellule excel.

Voici le code:
Sub piloterPageWeb()
'michelxld le 11.05.2005
'pour le forum [url]http://www.excel-downloads.com/url
'
'activate Microsoft HTML Objects Library reference
'activate Microsoft Internet Controls reference
Dim i As Integer
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

IE.navigate "http://www.oscaro.com/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")


With Helem
.Item(4).innerText = "Référence quelconque" 'écrit la chaine dans la zone de texte 'Référence de pièce' de la page web oscaro
End With

'Helem(23).Click 'bouton Recherche'

Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

Set IE = Nothing
End Sub

J'ai adapté ce code pour oscaro alors qu'il avait été écrit pour les pagesjaunes. Il marche pour remplir les champs des pagesjaunes mais génère un code erreur '600' que je n'arrive pas à déboguer lorsque je le fais fonctionner pour oscaro.
J'ai essayer avec un autre site http://www.scpl-online.com/societe.php et il fonctionne egalement.

Comment puis je savoir ce qu'il faut déboguer?
L'erreur est accompagné du message "erreur definie par l'application ou par l'objet"

Merci pour votre etre précieuse.

5 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
4 nov. 2011 à 17:00
Salut,

essais ceci :
Sub piloterPageWeb()
'michelxld le 11.05.2005
'pour le forum sur http://www.excel-downloads.com [ Lien ]
'
'activate Microsoft HTML Objects Library reference
'activate Microsoft Internet Controls reference
Dim i As Integer
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection 
Dim Monbouton As Object

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

IE.navigate "http://www.oscaro.com/"
Do While IE.Busy  'IE.readyState = READYSTATE_COMPLETE
    DoEvents
Loop

Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1
    If Helem(i).getAttribute("name") "toFind" Then Helem(i).Value "La Reference"
    If Helem(i).getAttribute("name") "submit" Then Set Monbouton Helem(i)
Next

Monbouton.Click

'...


A+
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
4 nov. 2011 à 17:15
re,

pour raccourcir la boucle tu pourrais faire comme suit:

Sub piloterPageWeb()
'michelxld le 11.05.2005
'pour le forum sur http://www.excel-downloads.com [ Lien ]
'
'activate Microsoft HTML Objects Library reference
'activate Microsoft Internet Controls reference
Dim i As Integer
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection 
Dim Monbouton As Object, ElementReady As Byte

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

IE.navigate "http://www.oscaro.com/"
Do While IE.Busy  'IE.readyState = READYSTATE_COMPLETE
    DoEvents
Loop

Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1
    select case Helem(i).getAttribute("name")
       case "toFind"
          Helem(i).Value = "La Reference"
          ElementReady = ElementReady + 1
       case "submit" 
          Set Monbouton = Helem(i)
          ElementReady = ElementReady + 1
    End select
    If ElementReady = 2 Then Exit For
Next

Monbouton.Click


/!\ Pas testé /!\

A+
0
rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011
4 nov. 2011 à 21:50
Merci Bigfish!

Je teste cela dès demain.
Je ne connais pas la méthode getAttribute,mais je m'y penche rapidement. C'est cool des nouvelles méthodes.

A plus tard

PS: t'es vraiement le vrai big fish? lol
0
rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011
7 nov. 2011 à 12:12
Salut Big Fish,

J'ai bien testé ta proposition et ca marche impeccable. Merci Beaucoup pour ton aide. Il me reste à bien comprendre ce bout de code

For i = 0 To Helem.Length - 1
If Helem(i).getAttribute("name") "toFind" Then Helem(i).Value "La Reference"
If Helem(i).getAttribute("name") "submit" Then Set Monbouton Helem(i)
Next

Pour pouvoir l'adapter au besoin.

Par contre j'ai une autre question.
J'ai trouvé un autre site que oscaro pour faire les extractions d'informations qui m'intéressent, à savoir récupérer les véhicules sur lesquelle montent une piéce avec une référence déterminée.

Comme les pièces sur lesquelles je bosse sont essentiellement d'origine valeo, je suis aller faire un tour sur leur catalogue... Et la ca coince.

En effet lorsque je veux accéder de facon automatisée à la page qui m'intéresse je suis bloquer car le lien http ne contient pas d'information concernant ma page.

Concrètement si je rentres cette adresse:
http://outcat-cs.tecdoc.net/ows/en/7FA2A0C501BC34CA4BECB04095663CF1.ows_cs2.srv?view=VIndexFramesetJsp

J'arrive sur la page principale du catalogue valeo.

L'onglet qui m'intéresse, est "Article Direct Search". Je clique donc sur cet onglet, et la je constate que l'adresse dans barre d'adresse ne varie pas d'un seul caractère... Comment puis-je a ce moment la spécifier une adresse dans mon code vba pour que excel ouvre le catalogue directement à l'onglet "Article Direct Search?". Est ce possible?

Et en suite j'ai fais une recherche pour un article ayant la référence suivante : 809146.

Je trouve un "clutch kit". Si je clique sur la référence j'ai un menu déroulant qui s'affiche avec le lien "linked vehicules". Je clique sur ce lien et il ya un tableau qui s'affiche et on peut constater une petite loupe, en debut de ligne sur la gauche. Si je clique sur cette loupe j'ai un pop up qui s'ouvre et qui résume les infos sur le véhicule auquel est rattaché la piece de référence 809146. J'aimerai pouvoir récupérer ces infos dans une table excel, mais lorsque je me penche sur le code source de la page je suis incapable retrouver à l'indexe de l'element html auquel correpsond la loupe.

Je suis conscient que c'est beacoup de question et je n'attends vraiement pas une réponse direct mais plutot des billes tels que le langage utilisé sur la page web, sur des méthodes vba qui puissent me permettre d'identifier mes objets htmls sur ce catalogue.

Merci d'avance.

Cordialement,
roland
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011
7 nov. 2011 à 14:54
Petite avancée,
En faisant un clique droit sur le bouton "Article Direct Search" j'ai la possiblité de choisir dans "Ce cadre"->Code Source du Cadre et la je tombe sur le code html du menu qui gère les 4 boutons "Véhicules, Engine, Universal et Article Direct Search".

En me penchant sur ce code je constate qu'il y a du javascript.

D'après mes recherches:

Ce langage est un langage de programmation qui permet d'apporter des améliorations au langage HTML en permettant d'exécuter des commandes du côté client, c'est-à-dire au niveau du navigateur et non du serveur web.

De plus j'ai remarqué que lorsque je met mon curseur de souris sur le bouton "Article irect Search", j'ai une petite bulle qui s'affiche en bas a gauche dans mon navigateur avec le message suivant : "javascript:handleMenuAction('DirectSearch')
Je suppose que cela a un lien avec le clic sur le bouton?
Est il possible que j'active un clic sur ce bouton "artificiellement" depuis excel par du code vba?

Je continue mes recherches.
0