Bonsoir, j'ai beaucoup avancer grâce au magnifique tuto d'internet et je parviens presque à faire ce que je souhaite avec le vba. Seul un problème subsiste c'est que lorsque j'importe un tableau de données dans excel et bien au bout d'un moment tout fout le camp. Je m'explique :
La macro ouvre une page web / se connecte ouvre une autre page de résultat de donnée / j'importe ces données. Des fois c'est nickel dès fois les résultats se décale. je relance la macro ça se décale encore plus.
On dirait qu'il y a un problème dans mes variables. Au bout d'un moment elles deviennent folles.
Pour la m^me Macro lancées 2 fois d esuite je n'ai pas le m^me résultat qui apparait. OUF
Pouvez vous me secourir, je dors sur ce trucs depuis des jours. Merci
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134 'Option Explicit Sub Educaplay() Dim MyHTML_Element As IHTMLElement Dim MyHTML_Element2 As IHTMLElement Dim MyURL As String 'Dim ele As Object Dim htmlselectelElement As HTMLGenericElement 'Dim Nb As Integer Dim MyBrowser As InternetExplorer Dim HTMLDoc As HTMLDocument Dim ie As SHDocVw.InternetExplorer Dim Nombre_colone As Integer Dim Nombre_Ligne As Integer Dim Nombre_R As Integer 'Nb de résultats Dim k As Integer 'chiffre pour remplir le tableau Dim Valeur As Date Dim i As Integer Dim j As Integer On Error GoTo Err_Clear MyURL = "https://fr.educaplay.com/login/" Set MyBrowser = New InternetExplorer MyBrowser.Silent = True MyBrowser.Navigate MyURL MyBrowser.Visible = True Do Loop Until MyBrowser.ReadyState = READYSTATE_COMPLETE Set HTMLDoc = MyBrowser.Document HTMLDoc.all.user.Value = "*************" 'Enter your email id here HTMLDoc.all.pass.Value = "********" 'Enter your password here For Each MyHTML_Element In HTMLDoc.getElementsByTagName("button") If MyHTML_ID.Type = "loginNormal" Then MyHTML_Element.Click: Exit For Next Err_Clear: If Err <> 0 Then Err.Clear Resume Next End If 'start a new browser instance Set objIE = New InternetExplorer 'make browser visible objIE.Visible = True objIE.Navigate "https://fr.educaplay.com/fr/miEducaplay.php?action=resultadosGrupo" Do While objIE.Busy = True Or objIE.ReadyState <> 4: DoEvents: Loop 'Sélection de la ligne correspondant à 1TCB 2017-2018 Set IEDoc = objIE.Document 'oDoc.getElementsByName("idGrupoBusqueda")(0).Value = "149524" '1TCB 2017-2018 IEDoc.parentWindow.execScript "POST", "javascript" IEDoc.getElementsByName("idGrupoBusqueda")(0).Value = "292868" 'TCB 2018 -2021 ==============CHANGEMENT CODE GROUPE EDUCAPLAY IEDoc.forms(1).submit Do While objIE.Busy = True Or objIE.ReadyState <> 4: DoEvents: Loop 'Worksheets(Feuil1).Range("A:ZZ").ClearContents 'Valeur = 0 ' Valeur = Timer 'temporisation pour le rafraichissement de la page ' Do While Timer < Valeur + 7 ' DoEvents ' Loop ' Set HTML = objIE.Document '========!!!!!!!!!!!LIGNE OBLIGATOIRE POUR LIRE TABLEAU!!!!!!!!!!============= '======================Boucle pour mise à jour page====================== ' j = 2 ' i = 2 ' k = 0 'recherche le nombre de ligne elève Nombre_Ligne = HTML.getElementsByTagName("thead")(1).Children.Length 'boucle pour ecrire nom des élèves dans ligne colonne 1 tableau For j = 2 To (Nombre_Ligne + 2) 'emplacement ecriture nom eleve Worksheets("FEuil1").Cells(j, 1) = HTML.getElementsByTagName("thead")(1).Children(j - 2).innerText 'MsgBox Nombre_Ligne Next j 'recherche le nombre de colonne machine Nombre_colone = HTML.getElementsByTagName("tr")(0).Children.Length 'MsgBox Nombre_colone 'boucle pour ecrire nom des machines dans colonne tableau For i = 2 To (Nombre_colone + 2) 'emplacement ecriture nom machine 'Worksheets("FEuil1").Cells(1, i) = HTML.getElementsByTagName("th")(i - 2).innerText Worksheets("FEuil1").Cells(1, i) = HTML.getElementsByTagName("tr")(0).Children(i - 2).innerText Next i For j = 2 To Nombre_Ligne + 1 For i = 2 To (Nombre_colone + 1) 'Nombre_R = HTML.getElementsByTagName("td").Length 'To Nombre_R 'remplissage avec résultat Worksheets("FEuil1").Cells(j, i) = HTML.getElementsByTagName("td")(k).innerText k = k + 1 Next i Next j 'Set MyObject = Nothing objIE.Close 'Set objIE = Nothing 'Set objIE.Document = Nothing End Sub
PS :je suis débutant
Partager