Accès aux liste déroulante d'une page internet erreur

jeremayb Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
jeremayb Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche à entrer des valeurs dans 2 listes déroulantes d'une page web en l'occurrence : http://www.hydro.eaufrance.fr/selection.php

Pour ceux qui veulent tester, pour acceder a la page du site en question il faut :
- entrer un numéro de station exemple : U1084010 et appuyer sur "Nouvelle recherche"
- Cocher la station que vous venez de rentrer puis appuyer sur "visualiser"
- et enfin appuyer sur "QJM"

Une fois sur cette page vous verrez deux listes déroulantes avec lesquelles j'essaie d'intéragir.

Je me suis aider du tuto de SilkyRoad que j'ai testé sur ma machine.
(https://silkyroad.developpez.com/VBA/ControlesUserForm/#LI)

Venons en a mon problème. J'essaie simplement de rentrer une valeur dans la première liste déroulante via l'index des valeurs. Voici mon code.

Public IE As New InternetExplorer

Sub Recupinternet()
        Dim IEDoc As HTMLDocument
        Set IE = CreateObject("InternetExplorer.Application")
        IE.Visible = True
        IE.navigate "http://www.hydro.eaufrance.fr/selection.php"
        Do Until IE.readyState = READYSTATE_COMPLETE
                DoEvents
        Loop    'attend la fin du chargement
        
        Do While IE.document.readyState <> "complete"
                DoEvents
        Loop    'attend la fin du chargement du document
        'ici j'ai une routine qui nous amène jusqu'à la page voulue, mais on peut aussi le faire a la
        'main en suivant les indications ci dessus
        Set IEDoc = IE.document
        Dim htmlSelectElem As HTMLSelectElement
        Set htmlSelectElem = IEDoc.all("debut_an")

        htmlSelectElem.selectedIndex = 0
End sub


Voici maintenant le code html de la page web concernant la première lise déroulante :

<select id="debut_an" name="debut_an">
<option value="2020" selected>2020</option>
<option value="2019" >2019</option>
<option value="2018" >2018</option>
<option value="2017" >2017</option>
<option value="2016" >2016</option>
.
.
.
<option value="1966" >1966</option>
<option value="1965" >1965</option>
<option value="1964" >1964</option>
</select></td>


Lorsque je lance le code VBA, l'erreur subvient en ligne 20 en me disant : variable objet ou variable de bloc with non définie.

Je ne pense pas que l'erreur provienne du code mais, mais je pense qu'il provient du fait que le nom que j'entre pour la liste déroulante n'est pas correct...

Je me tourne vers vous pour recueillir votre avis d'expert, merci d'avance !
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

De mémoire, le "all" retourne un array contenant les éléments correspondant au terme cherché
donc, pour ton cas
Set htmlSelectElem = IEDoc.all("debut_an")(0)

Mais le mieux, serait de cibler les éléments directement via leur ID
<code basic>
Set htmlSelectElem = IEDoc.GetElementById("debut_an")
<code>
https://qwazerty.developpez.com/tutoriels/vba/ie-et-vba-excel/#LIII-B-2

.
0
jeremayb Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de ta réponse,

Aucune des deux solutions ne fonctionnent je viens de les tester…
Concernant la première que tu m'as proposé, il survient le même code erreur sur le Set htmlSelectElem = IEDoc.all("debut_an")(0)
Pour la deuxième l'erreur survient au même endroit qu'initialement, sur le htmlSelectElem.selectedIndex = 0
0