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 -
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.
Voici maintenant le code html de la page web concernant la première lise déroulante :
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 !
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:
- Accès aux liste déroulante d'une page internet erreur
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Supprimer une page word - Guide
- Comment traduire une page internet - Guide
- Acces rapide - Guide
1 réponse
Bonjour,
De mémoire, le "all" retourne un array contenant les éléments correspondant au terme cherché
donc, pour ton cas
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
.
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
.
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