problème de macro

Aury

XLDnaute Nouveau
Bonjour

Je souhaite faire une macro qui se connecte sur un de mes site internet favori, qui aille récupérer des données sur une page et qui ensuite compare ces données à celles importées lors du dernier lancement de la macro.

pour la connexion ça marche en lançant la macro pas à pas mais pas en la lançant en automatique (je ne sais pas pourquoi) sinon pour la suite j'arrive à récupérer mes données si j'en ai un nombre bien défini (12) mais dès que j'en ai moins, ça plante et je ne sais pas comment faire pour qu'excel s'arrête aux dernières données.

Ensuite et là je n'ai encore rien fait, je veux comparer les données importées, voir si elles ont évoluées et si c'est le cas faire juste une soustraction entre les deux valeurs.
Par contre les données sont sous la forme suivante

nom prénom
22
38
15

nom prénom
21
34
14
etc etc

et je veux que ma macro me reconnaisse les noms prénoms identiques et ensuite compare les infos qui sont dans les cases en dessous (mais les noms prénoms peuvent ne pas être dans la même position d'une fois sur l'autre)

Merci de m'aider pour réaliser tout cela

je ne sais pas si j'ai été très clair, n'hésitez pas à me demander des précisions

Je vous met ce que j'ai déjà réalisé :
Code:
Sub OpenWebpageAndLogin()
    Dim objIE As Object
    Set objIE = CreateObject("InternetExplorer.Application")
        With objIE
            .Visible = True
            .Navigate "http://fr.killbase.net/"
            If Timer(objIE) = False Then GoTo Error_Timer
                 With .Document.forms("connectionForm")
                .emailConnection.Value = "login"
                .passwordConnection.Value = "mdp"
                .submit.Click
             End With
        .Navigate "http://fr.killbase.net/club/kaz-manpower"
        If Timer(objIE) = False Then GoTo Error_Timer
        strCountBody = .Document.body.innerText
        strCountHtml = .Document.body.innerhtml
        i = 300
        While i < 3660
        lstartpos = InStr(i, strCountBody, "nom") + 4
        lendpos = InStr(i, strCountBody, "prénom:") - 3
        textiwant = Mid(strCountBody, lstartpos, lendpos - lstartpos)
        lstartpos = InStr(i, strCountBody, "prénom:") + 7
        lendpos = InStr(i, strCountBody, "age:") - 3
        Text = Mid(strCountBody, lstartpos, lendpos - lstartpos)
        ActiveSheet.Cells(i / 56, 2).Value = Text & textiwant
        i = i + 280
        Wend
        i = 310
        While i < 3670
        lstartpos = InStr(i, strCountBody, "esquive:") + 8
        lendpos = InStr(i, strCountBody, "encaissement:") - 3
        textiwant = Mid(strCountBody, lstartpos, lendpos - lstartpos)
        ActiveSheet.Cells(i / 56, 2).Value = textiwant
        i = i + 280
        Wend
        i = 315
        While i < 3675
        lstartpos = InStr(i, strCountBody, "encaissement:") + 13
        lendpos = InStr(i, strCountBody, "xp:") - 3
        textiwant = Mid(strCountBody, lstartpos, lendpos - lstartpos)
        ActiveSheet.Cells(i / 56 + 1, 2).Value = textiwant
        i = i + 280
        Wend
        i = 335
        While i < 3875
        lstartpos = InStr(i, strCountBody, "bras gauche:") + 14
        lendpos = InStr(i, strCountBody, "bras droit:") - 3
        textiwant = Mid(strCountBody, lstartpos, lendpos - lstartpos)
        ActiveSheet.Cells(i / 59 + 2, 2).Value = textiwant
        i = i + 295
        Wend
        
    End With
    objIE.Quit
    Set objIE = Nothing
    Exit Sub
Error_Timer:
objIE.Quit
Set objIE = Nothing
End Sub
Function Timer(objIE As Object) As Boolean
On Error GoTo Error_IE_Timer
While objIE.ReadyState <> 4
Wend
While objIE.Busy
Wend
Timer = True
Exit Function
Error_IE_Timer:
Timer = False
MsgBox "Arrêt de Internet Explorer dû à une erreur interne de l'application", vbInformation, "Erreur Application Internet Explorer"
End Function
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : problème de macro

Bonsoir,

pas tout compris de ton code, mais après tes instructions "navigate", insères peut être les lignes de code ci-dessous :
Code:
With objIE
            .Visible = True
            .Navigate "http://fr.killbase.net/"
    Do Until .readyState = 4 And Not .Busy
        DoEvents
    Loop
dès fois, j'ai vu être obligé de rajouter une pause, après le "loop" :
Code:
    Application.Wait Now + TimeValue("0:00:03")

bonne soirée
@+
 

Aury

XLDnaute Nouveau
Re : problème de macro

Merci, ça me règle déjà un problème.

J'ai rajouté : Application.Wait Now + TimeValue("0:00:01")

juste après la ligne .submit.Click et plus de problème de connexion.

Bon il reste tout le reste à résoudre...
 

Aury

XLDnaute Nouveau
Re : problème de macro

Grrrr je m'arrache les cheveux à trouver une condition pour que mes boucles ne plantent pas quand il y a moins de valeur que prévue à prendre sur la page internet !!!

J'aurais vraiment besoin d'aide
 

Aury

XLDnaute Nouveau
Re : problème de macro

Et sur le principe personne ne peut m'aider ?

Car là mes boucles, recherchent du texte dans le code source de la page, mais des fois il y aura 12 fois le texte que je recherche donc j'ai adapté ma boucle pour que ça fonctionne avec ces 12 fois, mais quand il n'y est pas 12 fois, mais moins, beh la boucle plante car elle ne peu pas aller jusqu'au bout...

je ne vois pas quelle condition mettre pour que la boucle s'arrête quand elle ne trouve plus le mot recherché sur la page internet...
 

Discussions similaires

Réponses
0
Affichages
177
Réponses
5
Affichages
416