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

Fermé
jeremayb Messages postés 18 Date d'inscription lundi 13 avril 2020 Statut Membre Dernière intervention 26 juin 2020 - 27 mai 2020 à 11:40
jeremayb Messages postés 18 Date d'inscription lundi 13 avril 2020 Statut Membre Dernière intervention 26 juin 2020 - 27 mai 2020 à 13:09
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 38288 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 novembre 2024 4 703
27 mai 2020 à 12:12
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 lundi 13 avril 2020 Statut Membre Dernière intervention 26 juin 2020
27 mai 2020 à 13:09
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