Bonjour,

D'abord un grand bravo pour cet excellent tuto .

Pour ma part j'ai une question sur les listes déroulantes. Tu a montré comment sélectionner un item dedans ou comment récupérer tous les choix de cette liste, mais sur certains site lorsque l'on sélectionne un item et bien la page change en fonction de celui-ci.

Or avec la méthode de sélection que tu as décrite, rien ne se passe. Enfin le bon item est sélectionné dans la liste, mais la page ne change pas pour autant, et il n'y a pas de bouton "OK" pour valider mon choix sur la page..

Peux-tu m'aider sur ce point ?

Pour ma part j'essaye tout simplement de "recharger" la page en fonction de valeurs dans une liste déroulante.

Voici mon code :

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
Sub ListeDeroulanteRecup()
 
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim htmlTagCol As IHTMLElementCollection
Dim htmlSelectElem As HTMLSelectElement
Dim htmlGeneric As HTMLGenericElement
Dim NbrEntree As Integer
Dim TableauValeurDate()
Dim TableauValeurResultats()
Dim TheEntree As Integer
 
   'Ouvre la page Web
   IE.Navigate "https://www.fdj.fr/jeux/jeux-de-tirage/loto/resultats"
   IE.Visible = False
 
   WaitIE IE
 
   Set IEDoc = IE.document
 
   'On va sur l'objet qui contient la liste des indices
   Set htmlSelectElem = IEDoc.getElementById("selectTirage")
 
   'On détermine le nombre d'entrées contenues dans la liste
   'Ce nombre correspond au nombre de balises <option
   Set htmlTagCol = htmlSelectElem.getElementsByTagName("option")
   NbrEntree = htmlTagCol.Length
 
   'On redimensionne le tableau qui va contenir les valeurs
   ReDim TableauValeurDate(NbrEntree)
   ReDim TableauValeurResultats(NbrEntree)
 
   'On boucle sur chaque entrée
   For TheEntree = 1 To NbrEntree - 1
      ' DATE
      TableauValeurDate(TheEntree - 1) = htmlTagCol(TheEntree).innerText
 
      ' RESULTATS TIRAGE
      TableauValeurResultats(TheEntree - 1) = IEDoc.getElementsByClassName("loto_numeros mb10 fl sprite-jeux-bg_resultat_loto")(0).innerText
 
      'On sélectionne l'indice n+1
      htmlSelectElem.selectedIndex = TheEntree
      htmlSelectElem.FireEvent ("onchange")
      'htmlSelectElem.Click
 
      WaitIE IE
   Next
 
   'On place ces valeurs dans une Feuille Excel
   ThisWorkbook.Sheets("Valeur_Liste").[A4].Resize(NbrEntree).Value = WorksheetFunction.Transpose(TableauValeurDate)
   ThisWorkbook.Sheets("Valeur_Liste").[B4].Resize(NbrEntree).Value = WorksheetFunction.Transpose(TableauValeurResultats)
 
   Set IE = Nothing
   Set IEDoc = Nothing
 
End Sub
 
Sub WaitIE(IE As InternetExplorer)
   'On boucle tant que la page n'est pas totalement chargée
   Do Until IE.ReadyState = READYSTATE_COMPLETE
      DoEvents
   Loop
End Sub
J'ai essayé avec .click() et .fireEvent("onchange") mais aucun ne semble fonctionner.
Je suis avec IE 11.

Merci

Haribo.