Web requests, comment aller sur une autre page?

LeRevenant

XLDnaute Occasionnel
Bonjour,

J'ai créé un outil qui utilise les webs controls pour aller chercher tous les noms/notes/numéros d'article des produits que l'entreprise vend sur eBay et sur Amazon. Le hic c'est que ça dure un peu longtemps, je voudrais donc faire avec Web requests.

Voici comment j'ai procédé :
1- Aller sur la page 1 de l'entreprise, récupérer tous les liens qui mènent à nos produits et les mettre dans la colonne A. Répéter jusqu'à ce qu'il n'y est plus de page.

2- Aller sur chaque lien de la colonne A et récupérer les données de chaque produit.

Et là je rencontre un problème que j'ai pas eu avec le web control
-Sur 800 liens dans la colonne A, mon tableau me donne que 300 résultats produits (qui ont le mérite d'être bons) ... Qui plus est, au bout de 2-3 minutes ma macro met Excel en "ne répond plus". Avec web controls (IE) j'avais pas ça. C'est peut être lié?

Aucune donnée n'est confidentielle, je me permets de mettre le fichier en PJ.

À bientôt
 

Pièces jointes

  • Pour Forum.xlsm
    5.9 MB · Affichages: 373

Lone-wolf

XLDnaute Barbatruc
Bonjour Le Revenant

Il y a quelque chose qui ne tourne pas rond chez toi. Tu à déjà essaié d'ouvrir 800 pages d'un coup??? Faut être complètement à la masse. Un bon conseil: supprime For each et remplace par For i, et ouvre 80% moins de pages; ton fichier te remerciera.

Edit: ajoute aussi ceci juste après les déclarations des variables

With Application
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
.StatusBar = False
End With

Et avant End Sub

With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.StatusBar = True
End With

Range("D5:H1048576").Select
Selection.ClearContents
Range("A5:H1048576").Select
Selection.ClearContents

Range("D5:"D"50000").Select
Selection.NumberFormat = "0"
Range("G5:G50000").Select
Selection.Replace What:=" "
Range("H5:H50000").Select
Selection.Replace What:=" "
Selection.Replace What:=" "
Range("A1").Select

Pourquoi tu sélectionne 2 fois la sélection, et tu as vraiment plus d'un milion de lignes??? :rolleyes: Depuis le temps tu devrais le savoir pourtant que trop de select causent problèmes; alors supprime-les. De la façon dont tu fait tes requêtes, faut pas t'étonner que ça plante.

With Sheets(1)
.Range("A5:H50000").ClearContents
Range("D5:"D"50000").NumberFormat = "0"
.Range("G5:G50000").Replace What:="Z"
.Range("H5:H50000").Replace What:="X"
.Range("H5:H50000").Replace What:="Y"
end With
 
Dernière édition:

LeRevenant

XLDnaute Occasionnel
Tu à déjà essaié d'ouvrir 800 pages d'un coup

Je crois que tu comprends pas. Web controls =/= Web requests.
je veux faire les requêtes 1 par 1, mais 800 fois (comme pour mon fichier avec web controls). Je sais qu'on peut pas faire 800 requêtes en un coup. Et c'est justement ça ma question : est ce que je fais mes requêtes correctement? Si non, comment doit on le faire? Si oui, pourquoi j'ai que 300 résultats sur 800?

Ce n'est pas du tout une histoire de select. J'ai fait le fichier avec web controls comme ça et il marche très bien.
 

Lone-wolf

XLDnaute Barbatruc
Re

Pour web control, je ne peux pa te répondre, je ne l'ai jamais utilisé.

Ce n'est pas du tout une histoire de select

Mon cher, quand tu as tout ses Select + 2 boucles for each pour inserer 800 lignes, que tu le veuille ou non, le fichier plante; et je le dit par expérience et non en paroles en l'air. Si tu n'est pas convaincu, fait un test avec un fichier vierge et à la place des liens tu met un texte. Met un bouton sur la feuille et regarde ce qui se passe.
 

LeRevenant

XLDnaute Occasionnel
Mon cher, quand tu as tout ses Select + 2 boucles for each pour inserer 800 lignes, que tu le veuille ou non, le fichier plante; et je le dit par expérience et non en paroles en l'air. Si tu n'est pas convaincu, fait un test avec un fichier vierge
Comme je te dis, j ai fait mieux qu un test, je l ai fait tout court => Le fichier avec webcontrols est construit de la meme maniere et non il ne plante pas, il fonctionne très bien de A à Z. Il va sur une cellule il rentre la valeur puis une puis une autre etc. Je suis quasi sur que le problème vient du fait que je fais mes webrequest d une manière pas très efficace.
 

Lone-wolf

XLDnaute Barbatruc
Re

J'ai fait un test moi aussi avec tes select, et le fichier plante; faut pas me raconter des bobards. Mais en utilsant ce code, en moins de 10 sec. les tableaux sont remplis sans qu'Excel plante.

VB:
Sub Dequoiqui()
Dim plage1 As Range, plage2 As Range
'tout supprimer
With Application
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
.StatusBar = False
End With

On Error Resume Next
Set plage1 = Range("d5:h" & Range("h" & Rows.Count).End(xlUp).Row)
plage1.ClearContents

plage1.Value = "bonjour 2 fois"

Set plage2 = Range("g5:g" & Range("g" & Rows.Count).End(xlUp).Row)
plage2.ClearContents
plage2.Value = plage1.Value
plage2.Replace What:="bonjour 2 fois", Replacement:="bonjour", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
On Error GoTo 0

With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.StatusBar = True
End With

End Sub
 

LeRevenant

XLDnaute Occasionnel
Re

J'ai fait un test moi aussi avec tes select, et le fichier plante; faut pas me raconter des bobards. Mais en utilsant ce code, en moins de 10 sec. les tableaux sont remplis sans qu'Excel plante.
Bon je vais pas te mentir. C est plus la peine de me répondre, je vais me casser sur un autre forum : tu comprends rien!!!!


LE CODE QUE J AI DONNÉ C'EST DU WEBREQUEST ET C EST CE QUI NE MARCHE PAS!!!!

J AI FAIT UN CODE EN WEB CONTROL QUI MARCHE TRÈS BIEN MAIS QUE JE N AI PAS DONNÉ ICI. PUISQU IL MARCHE TRÈS BIEN.

Il faut que ça rentre dans ta tête:
Web control = facile mais long
Web request = plus dur mais plus rapide

Je sais que t essaies d aider, c est sympa de ta part. mais ne parle pas quand tu comprends pas!
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 812
dernier inscrit
abdouami