Macro allant chercher des infos sur internet

Cath -  
 Cath -
Bonjour,

J'ai importé sous Excel un tableau de la page suivante (liste de producteurs de maïs espagnols)
http://www.agroterra.com/s/maiz/vendedores/-area-venta&ppp=30/&pais=espana
en faisant Données > A partir du web

Chaque nom d'exploitant envoie sur une page du même site, où il n'y a que 4 informations sur le nombre qui m'intéressent (le site internet du producteur, la région, son activité, et le nombre de visites de son site)

J'ai donc souhaité automatiser ceci sur Excel 2007 avec le même outil "Données", mais j'ai essayé de faire une macro par enregistrement 10 fois, et il n'arrive pas à transposer mon premier enregistrement sur la suite des données.

Il n'arrive pas à transposer la copie du lien hypertexte ou la suppression des lignes inintéressantes, et me met toujours les résultats du premier producteur (en supprimant les mauvaises lignes en plus) quand j'essaie de l'appliquer aux suivants.

C'est une liste de 90 éléments, avec le nom des producteurs + 4 données intéressantes par producteur, donc je pourrais le faire à la main, mais je pense qu'un outil comme celui-ci serait plus puissant, et surtout me servirait grandement pour d'autres fichiers!

Quelqu'un aurait-il une solution?

Je vous remercie grandement à l'avance.

Cath
A voir également:

5 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonsoir,

Il faut que tu listes les adresses des pages en feuil2 colonne B (pas trouvé un moyen simple de les récupérer sur la page).
Je t'ai laissé la colonne A libre des fois que tu veuilles y mettre un nom plus parlant (que tu pourrais récupérer par une requête identique d'ailleurs).
Comme l'opération peut être longue tu peux suivre l'évolution dans la barre d'état en bas à gauche.
Limitation : il faut que Feuil1 A1 soit sélectionné (intégré dans la macro) pour que ça marche. Mais bon, ça te fait un bon début quand même ;-)

Cath.xls

eric
0
Cath
 
Merci beaucoup!

Je pensais qu'il y avait une solution pour ne pas avoir à sortir toutes les adresses en page 2...

En tous cas, ça m'aide bien!

Cordialement,

Cath
0
Cath
 
Bonjour,

Le même type d'automatisation peut m'être utile pour un autre travail.

Est-ce que ce serait possible (de la part d'Eric, qui m'avait gentiment aidée la première fois) ou de quelqu'un d'autre) de me commenter le code et m'expliquer comment la feuille avait été construite pour que je puisse essayer de transposer?

Etait-ce vraiment difficile à faire, et est-ce à ma hauteur, sachant que je connais d'autres langages (Java, un peu de C) mais pas VBA?

Je dois notamment travailler sur le type de page suivant :
http://www.alimarket.es/... et extraire toujours l'url du site de l'exploitant...

Merci d'avance à celui qui pourra m'expliquer!

Voici le code qu'Eric avait écrit pour la mise à jour, ce que je ne comprends pas, c'est comment les informations sont codées sur le site et comment à partir de la 8ème ligne et dans la boucle, on les repère :

Sub MAJ()
Dim i As Long, ws As Worksheet, savbarre As String
Set ws = Worksheets("Feuil2")
Worksheets("Feuil1").Select
Worksheets("Feuil1").[A1].Select
savbarre = Application.DisplayStatusBar
Application.DisplayStatusBar = True
derlig = ws.[B65536].End(xlUp).Row
For i = 2 To derlig
Application.StatusBar = "Site " & i - 1 & "/" & derlig - 1 & " en cours..."
With Selection.QueryTable
.Connection = "URL;" & ws.Cells(i, 2).Value
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "4"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
.AdjustColumnWidth = False
End With
ws.Cells(i, 3) = [B2]
ws.Cells(i, 4) = [B3]
ws.Cells(i, 5) = [B11]
ws.Cells(i, 6) = [B14]
Next i
Application.StatusBar = False
Application.DisplayStatusBar = savbarre
Set ws = Nothing
End Sub

Merci encore!

Bisous!

Cath
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonsoir,

Comment j'avais fait ?
J'ai créé une requete web en feuil1 à partir d'une de tes adresse.
En enregistrement de macro j'ai modifié la requête (clic-droit dessus) pour avoir le paramètre de l'URL qui est
.Connection = "URL;adresse_de_la_page"

Ensuite il ne reste plus qu'à boucler en balayant la plage des adresses des sites, de modifier l'adresse de la requète, de récupérer les 4 données (il faut que toutes les pages soient identiques pour que ces données soient tjs au même endroit) et de les copier dans la feuille des résultats (feuil2)

Pas facile à bien expliquer, j'ai commenté un peu le code.
Mais bon, il n'y a pas beaucoup de lignes...
cath.xls
Si qcq chose t'échappe encore soit plus précise dans ta question

eric
0

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

Posez votre question
Cath
 
Merci encore, c'est assez clair! Je vais m'y mettre sérieusement.

Bonne journée!
0