Bonjour,

J'ai envie d'apprendre à récupérer des infos dans les codes sources de pages web.

Mais je ne veux pas simplement traiter une page, mais des milliers... J'ai essayé avec le code suivant (j'ai juste un formulaire avec un bouton enregistrer et un webbrowser):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Private g_f_Donn As Worksheet
Private Profil As Long
Private Donnees As Variant
Private chargement_ok As Boolean
 
Private Sub Enregistrer_Click()
    Set g_f_Donn = ThisWorkbook.Worksheets("Profils")
    Enregistrer_Profils
End Sub
 
Sub Enregistrer_Profils()
 
    Dim Donnees As Variant
 
    Profil = 1
 
    While Profil <= 1000
 
        chargement_ok = False
        WebBrowser1.Navigate2 "http://www.XXX.Net/forums/member.php?u=" & Profil
 
        Do Until chargement_ok
            DoEvents
        Loop
 
        If Not WebBrowser1.document Is Nothing Then
            Application.Wait Now + TimeValue("00:00:01")
            Donnees = WebBrowser1.document.body.innerHTML
        Else
            Donnees = ""
        End If
 
        debut_nom = InStr(Donnees, "<STRONG>")
 
        If debut_nom > 1 Then
            Fin_Nom = InStr(debut_nom, Donnees, "</STRONG>")
            Nom = LCase(Mid(Donnees, debut_nom + 8, Fin_Nom - debut_nom - 9))
        Else
            Nom = "Erreur"
        End If
 
        g_f_Donn.Cells(Profil, 1) = Profil
        g_f_Donn.Cells(Profil, 2) = Nom
        Profil = Profil + 1
    Wend
 
End Sub
 
Private Sub WebBrowser1_DownloadComplete()
    chargement_ok = True
End Sub
Je rencontre 2 problêmes indépendants à l'éxécution :

- La plupart du temps, le prog marche pour les 10, 20 premières pages puis il semble rentrer dans une boucle infinie (comme si le prog s'arretait sur une page inchargeable et que chargement_ok ne passait plus jamais à true.

- Parfois le test If Not WebBrowser1.document Is Nothing réussit, mais le programme plante à la ligne d'initialisation de la variable Donnees. Si je rentre en mode debug et tente de continuer en pas à pas, je passe cette erreur sans problèmes et sans avoir à remodifier le code

Je semble donc avoir des problèmes de synchro... ou de surcharge mémoire... ou les deux...

Quelqu'un a-t-il déjà essayé de telles boucles ???

NB : le site sur lequel je teste mon code n'est pas xxx.net, ni developpez.net, mais c'est un forum php similaire.