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
Configuration: Windows XP Internet Explorer 6.0
Office 2007

5 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. 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
  3. 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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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

    Bonne journée!
    0