Menu déroulant dans une page HTML

  • Initiateur de la discussion pascal_59
  • Date de début
P

pascal_59

Guest
Bonjour,

je ne sais pas comment faire pour pointer, en vba, une valeur dans un menu déroulant d'une page HTML?

Je joins le fichier HTML, j'aimerais pouvoir renseigner depuis excel les menus déroulants de ce fichier.

merci d'avance pour votre aide
 

STephane

XLDnaute Occasionnel
bonjour

( je suppose que c'est un fichier sur lequel tu as accs en écriture).
je te propose un code qui montre que tu peux accéder aux objets d'un document html. il te faudra ensuite manipuler les balises, puis trouver un moyen de resauvegarder le fichier.



'avec une référence aux librairies mshtml.
Sub test()

Dim X As New MSHTML.HTMLDocument
Dim Y As New MSHTML.HTMLDocument
Set Y = X.createDocumentFromUrl('C:\\Documents and Settings\\toto\\Bureau\\test.htm', vbNullString)
Do While Y.readyState <> 'loaded' And Y.readyState <> 'complete'
DoEvents
Loop

MsgBox Y.documentElement.all.forms(1).elements(1).Name


Set X = Nothing
Set Y = Nothing
End Sub


ce bout de code marche et suppose que tu as au moins un formulaire dans le document test.htm
j'espère que cela peut marcher, je n'ai pas le temps d'approfondir.
 
P

pascal_59

Guest
Bonjour

j'ai essayé le language de code proposé, mais le débugger boc au niveau de la MSGBOX.
Le code source de mon fichie HTML est le suivant:

<INPUT TYPE='hidden' NAME='CH3_txt' VALUE='0'></TD>
<TD CLASS='c45' COLSPAN='2' VALIGN='MIDDLE'>
<SELECT NAME='CH3' SIZE=1 CLASS='f59' onChange='MajTxt(this.name);ActiveRecursif();'>
<OPTION VALUE='0'SELECTED>TOUS</OPTION>
<OPTION VALUE='161'>ACCIDENT / PRESQU'ACCIDENT / SITUATION DANGEREUSE</OPTION>
<OPTION VALUE='166'>ACTIONS </OPTION>

</SELECT></TD>

je voudrais selectionner 'ACTIONS' dans le menu déroulant.

cf le doc html ci-joint

merci d'avance
 

STephane

XLDnaute Occasionnel
bonjour

c'est normal puisque mon code fait référence montre comment accéder au premier sous-élément du formulaire en supposant qu'il y ait un formulaire.


si je me base que sur le bout de code que tu m'as montré, tu n'as pas mis de balises 'FORM'.


peut-être serait-il temps de mettre des fichiers exemples (nettoyés de toutes données critiques) dans une archive.
 
P

pacal_59

Guest
voici un bout du ficher source qui contient une balise form.


</SCRIPT>
</HEAD>
<BODY BGCOLOR='#FFFFFF' LINK='#000099' VLINK='#003366' ALINK='#0000FF' LEFTMARGIN='0' TOPMARGIN='0' MARGINWIDTH='0' MARGINHEIGHT='0'>
<FORM NAME='form1' METHOD='POST' ACTION='tab.asp' TARGET='_blank'>
<INPUT TYPE='hidden' NAME='typefiltre' VALUE='0'>
<TABLE WIDTH='800' BORDER='0' CELLSPACING='1' CELLPADDING='0' HEIGHT='40' CLASS='t14' ALIGN='CENTER'>
<TR><TD CLASS='c43' ALIGN='CENTER' VALIGN='MIDDLE' WIDTH='95%'>RECHERCHE - ACTIONS / TRAITEMENTS DEVIATION IGP</TD>
<TD CLASS='c43' ALIGN='CENTER' VALIGN='MIDDLE' WIDTH='5%'></TD></TR></TABLE>
<TABLE WIDTH='800' BORDER='0' CELLSPACING='1' CELLPADDING='0' CLASS='t15' ALIGN='CENTER'>
<TR><TD CLASS='c44' COLSPAN='1' HEIGHT='30' VALIGN='MIDDLE'>Type d'évènement associé
<INPUT TYPE='hidden' NAME='CH3_txt' VALUE='TOUS'></TD>
<TD CLASS='c45' COLSPAN='2' VALIGN='MIDDLE'>
<SELECT NAME='CH3' SIZE=1 CLASS='f59' onChange='MajTxt(this.name);ActiveRecursif();'>
<OPTION VALUE='0'SELECTED>TOUS</OPTION>
<OPTION VALUE='161'>ACCIDENT / PRESQU'ACCIDENT / SITUATION DANGEREUSE</OPTION>
<OPTION VALUE='166'>ACTIONS </OPTION>
<OPTION VALUE='158'>AUDIT / CONTRÔLE INTERNE / INSPECTION REGLEMENTAIRE</OPTION>
<OPTION VALUE='152'>INSPECTION GENERALE PLANIFIEE (IGP)</OPTION>
<OPTION VALUE='164'>NON CONFORMITE : Produit / Matériel ou Prestation / Système / Réglementation</OPTION>
<OPTION VALUE='163'>PROPOSITION d'AMELIORATION / REX / DÉCISION</OPTION>
<OPTION VALUE='162'>RECLAMATION CLIENT / PARTIES INTERESSEES</OPTION>
<OPTION VALUE='159'>REUNION ou REVUE</OPTION>
<OPTION VALUE='156'>REX de la MISE en OEUVRE des PLANS d'URGENCE</OPTION>
<OPTION VALUE='153'>VISITE SANTE SECURITE ENVIRONNEMENT / VISITE CHANTIER</OPTION>
</SELECT></TD>
 

STephane

XLDnaute Occasionnel
bonjour

demo pour changer index de l'option.
reste à voir pour mieux référencer les objets :) [file name=xld_090605_readhtm.zip size=7880]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/xld_090605_readhtm.zip[/file]
 

Pièces jointes

  • xld_090605_readhtm.zip
    7.7 KB · Affichages: 56

myDearFriend!

XLDnaute Barbatruc
Bonsoir pascal_59, Stephane,

Au vu du morceau de fichier source que tu as fourni pascal_59, si tu souhaites sélectionner le 6ème élément du menu déroulant, tu peux sûrement utiliser quelque chose comme ça :
WebBrowser.document.getElementById('CH3').selectedIndex = 5
Rq : la numérotation des éléments du menu déroulant commence par 0 (et non 1).
 

MichelXld

XLDnaute Barbatruc
bonsoir Pascal , STephane et Didier

ci joint un autre exemple pour piloter des menus déroulants dans une page Web


Sub navigateWebPage_FromExcel()
'michelxld le 09.06.2005
'http://www.excelforum.com//showthread.php?t=370887
'
'activer la reference Microsoft HTML Objects Library
'activer la reference Microsoft Internet Controls
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Hsel As IHTMLElementCollection, Helem As IHTMLElementCollection
Dim Reponse As String

Reponse = MsgBox('Do you prefer Formulas than VBA ? ', vbYesNo, 'Select a category ')

Set IE = CreateObject('InternetExplorer.Application')
IE.Visible = True

IE.navigate 'http://www.exceltip.com/'
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

Set maPageHtml = IE.document
Set Hsel = maPageHtml.getElementsByTagName('select')

'*******************************
'exemple de boucle pour identifier l'index des objets 'select' (menus déroulants) dans la page
'For i = 0 To Hsel.Length - 1
'MsgBox Hsel(i).getAttribute('name') & ' / ' & Hsel(i).getAttribute('value')
'Next i

'ensuite :
'0 est le 1er element de la liste
'1 est le 2eme element de la liste
'...etc...

'*******************************

If Reponse = vbYes Then
'0 for the first scrolling list in the web page
'4 for the index you select in the scrolling list
Hsel(0).selectedIndex = 4 'formulas
Else
Hsel(0).selectedIndex = 6 'vba
End If

Set Helem = maPageHtml.getElementsByTagName('input')
Helem(5).innerText = 'Excel' 'keywords ( just for the example )
Helem(6).Click ''Find Tip' button

End Sub



bonne soiree
MichelXld

Message édité par: MichelXld, à: 09/06/2005 22:43
 

STephane

XLDnaute Occasionnel
bonjour

Michel, je n'étais plus sûr que les contrôles 'mirosoft internet controls' permettent de manipuler les objets et le document du webbrowser, c'est pour ça que je suis partir sur une autre piste.

Que l'on utilise cette librairie ou bien celle que j'ai utilisé, reste toujours à trouver une solution propre pour sauvegarder le fichier en question
pascal, les attachements ne sont possibles qu'au format ZIP.
 
P

pascal_59

Guest
Merci tous, grâce à votre aide j'ai pu m'en sortir. Le code est le suivant:

IE.document.getElementById('CH3').selectedIndex = 2

avec ce bout de code, je vais choisir l'index 2 du menu déroulant nommé 'CH3'.


Encore merci!!!!!!!!!!!!!!!!!!! :) ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 750
Messages
2 091 652
Membres
105 014
dernier inscrit
tibo4481