Remplir un formulaire web (liste déroulante) via VBA

Bonjour, j'espère que vous vous portez bien. Je travaille sur un projet actuellement mais je rencontre quelques difficultés que je tiens à partager avec vous pour que vous puissiez m'aider à le résoudre.

Je veux remplir un formulaire web contenant des listes déroulantes, des boutons radio via vba mais quand l'application vba se connecte au site, elle n'arrive pas à remplir les listes déroulantes et les boutons radio. Je suis certainement en train de faire une erreurs quelque part. Merci de m'aider !

Voici un exemple du code html de la balise select

<select id="j_id_jsp_132384828_4:selectval::content" name="j_id_jsp_132384828_4:selectval" style="background-color:  rgb(51,204,255);color:  rgb(0,0,0);" class="x2f" theme="dark" title="">
<option value="0" title=""></option>
<option value="1" selected="" title="ABJC">ABJC</option>
<option value="2" title="BICC">BICC</option>
<option value="3" title="BNBC">BNBC</option>
<option value="4" title="BOAB">BOAB</option>
<option value="5" title="BOABF">BOABF</option>
</select>

Bonjour,

voici un exemple pour connaitre les différent objets d'une page web,

cette exemple concerne le site "http://www.google.ca/"

vous aurai à adapter.

Sub WebObjectsName()
Dim i As Integer
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.Document
Set Helem = maPageHtml.getElementsByTagName("input")
For i = 0 To Helem.Length - 1
Range("A" & i + 1) = Helem(i).getAttribute("name")
Range("B" & i + 1) = Helem(i).getAttribute("value")
Next
End Sub

une fois l'objet connu

For i = 0 To Helem.Length - 1
If Helem(i).getAttribute("name") = "q" Then 'q est le nom de la case pour
entrer le mot ou la phrase à rechercher
Helem(i).innerText = "je recherche un mot"
Helem(i + 1).Click 'le bouton Recherche Google vient juste après q donc i + 1
End If
Next

Merci pour l'aide mais elle ne règle pas mon problème. Voici mon code :

Sub Bouton1_Cliquer()

'If MsgBox("Etes-vous sûrs de vouloir valider le formulaire? ", vbYesNo + vbQuestion, "Demande de confirmation") = vbYes Then

    Dim IE As InternetExplorer
    Dim IEdoc As Object
    Dim DOCelement As Object
    Dim htmlTagCol As IHTMLElementCollection

    Set IE = New InternetExplorer
    IE.Visible = True
    IE.navigate ("http://bit.ly/2sLyatD")

    ' attente de fin de chargement
    Do Until IE.readyState = 4
        DoEvents
    Loop

    Set IEdoc = IE.document

     'On liste les éléments de type input : login
     Set htmlTagCol = IEdoc.getElementsByTagName("input")
     Set DOCelement = htmlTagCol.Item("j_id_jsp_926394357_14::content")
     DOCelement.Value = "username"

    'On liste les éléments de type input : password
     Set htmlTagCol = IEdoc.getElementsByTagName("input")
     Set DOCelement = htmlTagCol.Item("idpass::content")
     DOCelement.Value = "password"

     'On liste les éléments de type input : connexion
     Set htmlTagCol = IEdoc.getElementsByTagName("button")
     Set DOCelement = htmlTagCol.Item("cmdCon")
     DOCelement.Click

   Dim htmlSelectElem As HTMLSelectElement

   'On va sur l'objet qui contient la liste des indices
   [color=#0000FF]Set htmlSelectElem = IEdoc.all("j_id_jsp_132384828_4:selectval::content")
[/color]
   'On sélectionne l'indice "ter" via sa valeur unique
  [color=#FF0000] htmlSelectElem.Value = "2"[/color]

'End If

'libérer la mémoire
Set IE = Nothing
Set IEdoc = Nothing

End Sub

Tout le code fonctionne sauf les parties colorées. Lors de l'exécution du code, l'erreur suivant apparait: Variable objet non définie (Erreur 91). En cherchant à résoudre ce problème, j'ai constaté Set htmlSelectElem=Nothing. Plus précisément, la page ne se charge pas totalement avant que le choix est fait dans la liste déroulante. Je ne sais donc pas concrètement comment régler cela . Merci de m'aider !

Bonjour,

avez-vous essayer avec une pause

'On va sur l'objet qui contient la liste des indices
Set htmlSelectElem = IEdoc.all("j_id_jsp_132384828_4:selectval::content")

' attente de fin de chargement
Do Until IE.readyState = 4
DoEvents
Loop

'On sélectionne l'indice "ter" via sa valeur unique
htmlSelectElem.Value = "2"

Oui, je l'ai essayé mais c'est toujours le même problème.

Rechercher des sujets similaires à "remplir formulaire web liste deroulante via vba"