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é :
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: