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

rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011 - 3 nov. 2011 à 16:55
 Mathis01 - 22 mai 2023 à 11:35
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

9 réponses

rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011
3 nov. 2011 à 18:12
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?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 nov. 2011 à 18:24
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
0
rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011
3 nov. 2011 à 18:35
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 nov. 2011 à 18:39
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
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
3 nov. 2011 à 18:42
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....
0
rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011
4 nov. 2011 à 11:26
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.
0
rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011
4 nov. 2011 à 12:08
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
0
rol64 Messages postés 33 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 28 novembre 2011
4 nov. 2011 à 14:28
Personne intéressée par cette conversation passionnante???
0

Bonjour,

Je me trouve actuellement confronté à une problématique similaire à celle que vous avez mentionnée. Je travaille présentement sur le développement d'une application en VBA pour Excel, avec l'objectif de collecter des informations d'une page web spécifique, puis de les organiser de manière structurée dans une feuille Excel.

Pour mon cas, il s'agit de récupérer des informations sur le site Auto Casse Thiebault - Pièces neuves et d'occasion toutes marques autocasse-thiebault.com. Le site propose une liste de pièces automobiles, et j'aimerais récupérer les détails de chaque pièce pour les cataloguer dans un tableau Excel. Plus précisément, j'aimerais récupérer des informations telles que la marque, le modèle, l'année, etc., à partir d'une liste de référence que j'ai déjà organisée dans une colonne Excel.

La difficulté que je rencontre est similaire à la vôtre : comment puis-je automatiser l'envoi de chaque référence de ma liste Excel vers le champ de recherche du site web, puis récupérer les informations détaillées de chaque pièce ?

Je suis à la recherche de toute aide concernant la mise en place de la requête Internet nécessaire et les technologies de programmation appropriées pour accomplir cette tâche.

J'espère avoir été suffisamment clair et j'apprécierais grandement toute aide ou conseil.

Cordialement, Mathis

0
Rejoignez-nous