Besoin d'aide pour rapatrier des données depuis une page internet vers un tablea

Signaler
Messages postés
33
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2011
-
Messages postés
33
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2011
-
Bonjour,

Je m'adresse à vous car j'aimerai développer une application VB6 ou VBA excel, cela dépendra des capacités respectives de VB6 et vba excel.

Cette application a pour but de récupérer des informations sur un site internet et de les ranger dans une table excel à partir d'une liste de référence rangée dans une colonne excel qu'il faut envoyer les unes après les autres vu qu'il n'y a qu'une seul champs de saisie.

Pour donner un exemple:
cela se passe sur http://www.oscaro.com/Catalog/PartsList/Find

Lorsque l'on est sur le site, on a la possibilité de rentrer une référence (prenons 801584 comme ref d'exemple) dans un champs de saisi de texte puis de lancer la recherche.
Le site sort une liste de produit qui correspond à la référence. Une fois le produit repéré, il é y a la possibilité de récupérer les caractéristiques de la pieces en cliquant sur un lien appelé "fiche". Il s'agit de ces infos que je souhaite récupérer dans les colonnes suivantes de la table excel qui contient ma colonne de références.

Par exemple ici 801584 correspond à un kit embrayage. Si on clique sur le premier lien , celui du kit sachs, on retrouve notre référence dans la liste des constructeurs. Les infos que je souhaite récupérer dans mon tableur excel sont après la rubrique "affectation véhicules".

Que faut il mettre en oeuvre pour récupérer le texte en lien avec cette rubrique. Y'a t il une requête internet a faire quelque part en vba? Quelles sont les technologies a employer du point de vue programmation?

Aussi comment puis je envoyer en série les références de ma colonne excel à la queue leu leu dans le champs de saisie de texte unique?

En espérant etre suffisament claire.
Cordialement,
roland

8 réponses

Messages postés
33
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2011

Bon j'ai trouver un bout de code pour faire ce que je veux mais impossible de la faire fonctionner...

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 '[url]http://www.pagesjaunes.fr/pj.cgi?'/url
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

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

With Helem
.Item(19).innerText = Range('A1') 'Nom
.Item(20).innerText = Range('A2') 'Adresse
.Item(21).innerText = Range('A3') 'Localité
.Item(22).innerText = Range('A4') 'Region
End With

Helem(23).Click 'bouton 'Recherche'

Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

Set IE = Nothing
End Sub

Lors de l'execution de la macro j'ai un message d'erreur qui dit que le type defini par l'utilisateur pour cette ligne:
Dim IE As InternetExplorer
est inconnu.

Est ce qu'il faut que je charge ou active des librairies speciales?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,
si tu as une erreur sur cette ligne, c'est que tu as copié sans le comprendre "un bout de code", et sans même t'intéresser à cette ligne, pourtant présente en commentaires dans ton code :
'activate Microsoft Internet Controls reference

Elle t'invite à cocher la référence Microsoft Internet Controls reference
et tu ne l'as pas fait
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2011

En fait je n'étais pas sur si le commentaire voulais dire que le code qui suivait réaliser les taches mentionnées cad activer les référence ou alors s'il fallait aller quelque part pour activer des librairies.
J'ai donc cocher ces fameuse librairies, en revanche j'ai encore des erreurs, il semble qu'il faille remplacer toutes les guillemets par des apostrophes sinon cela génère des erreurs.
Merci pour ton coup de pouce ucfoutu.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Ce sont bien des guillemets, qu'il faut.
Mais il y a beaucoup plus gênant : un énorme fossé entre ce que ferait ce bout de code copié et
Cette application a pour but de récupérer des informations sur un site internet et de les ranger dans une table excel

Je te laisse là, en ce qui me concerne.
Bonne chance, avec tes méthodes de travail

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
33
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2011

Ah oups, non ca ca correspond avec la fin du message, pour ce qui est d'exporter ma colonne de ref dans la zone de texte pour pouvoir lancer une recherche puis récupérer les données....
Messages postés
33
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2011

Bon j'avance petit à petit sur le bout de code que j'ai récupéré et qui m'est vraiment précieux.

Cependant il y a une zone d'ombre sur la propriétés .getElementsByTagName("input").

Si je comprends bien la ligne de code:

Set Helem = maPageHtml.getElementsByTagName("input")

Sert à renvoyer dans la variable Helem la liste des objets présents sur la page "maPageHtml".

Cependant dans mon exemple, sur oscaro il semble que la page d'accueil présente 23 Items (je trouve cette valeur en me servant d'un espion express sur la variable Helem).

Comment puis je savoir à quel item correspond ma zone de texte "Référence de pièce"?

Je cherche un cours/explicatif sur la propriété ".getElementsByTagName" en attendant votre aide.

MErci d'avance.
Messages postés
33
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2011

Comment puis je savoir à quel item correspond ma zone de texte "Référence de pièce"?

J'ai une réponse: https://addons.mozilla.org/fr/firefox/addon/60

Dans Mozilla Outils->WedDevelopper->Voir Source

Puis j'ai cherché le nombre d'occurrence de la chaine "input" et je suis tombé sur 23. Le compte est bon.

Il me restait plus qu'à chercher le label "Référence de Pièce" et le "input" correpondant.

Je l'ai trouvé. Ma zone de texte semble donc correpondre à l'item n°4.

J'ai donc modifié le code pour mon cas:

With Helem
.Item(19).innerText = "Référence recherchée"
End With

MAis à l'exécution, erreur '600'.

Pourquoi?

Merci d'avance
Messages postés
33
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
28 novembre 2011

Personne intéressée par cette conversation passionnante???