piloter par vba page web en dynamic HTML?

tarvel

XLDnaute Occasionnel
Bonjour,

Je suis en train de faire une macro VBA excel, qui doit se connecter à un site web https avec un login et password.
Voici la macro où j'ai récupéré bcp d'infos sur la Wiki Page 7 de Michel Xld
Code:
Sub PageWeb()
Dim Identifiant As String
Dim Pass As String
Dim htmldata As IHTMLElementCollection
Set IE = CreateObject('internetexplorer.application')
IE.Visible = True
IE.navigate ('[I]Ce lien n'existe plus[/I])
Do While IE.Busy
Application.Wait (Now + 0.5 / 3600 / 24)
Loop
Application.Wait (Now + 1 / 3600 / 24)
Set maPageHtml = IE.document
Set htmldata = maPageHtml.getElementsByTagName('input')
Identifiant = 'xxxxxxx'
Pass = '*****'
htmldata(0).innerText = Identifiant
htmldata(1).innerText = Pass
Set Doc = IE.document
Set Valide = Doc.Links(2) '2ème lien pour valider le formulaire
Valide.Click
Do While IE.Busy
Application.Wait (Now + 0.5 / 3600 / 24)
Loop

Jusqu'ici ça fonctionne bien.
Ensuite une fois le formulaire valider (avec Valide.click)...j'aimerais cette fois récupérer les données et lancer certains liens pour récupérer des tableaux..mais je ne parviens pas à récupérer les données de la nouvelle page.
Comment récupérer en vba le code source de la seconde page web qui est en dynamique HTML (plusieurs calques).
j'ai testé avec cette macro pour enregister dans un fichier la nouvelle page

Dim nFile As Integer
nFile = FreeFile
Open 'C:\\Mapage.htm' For Output Shared As #nFile
Print #nFile, IE.document.documentElement.innerText
Close #nFile

Mais le fichier Mapage.htm contient que le titre de la page...il me manque tous les autres 'calques'!!!
Comment faire pout tout récupérer et 'rapatrier'ainsi les tables???
Merci de votre aide
 

MichelXld

XLDnaute Barbatruc
bonjour

tu peux essayer ce type de synthaxe à la suite de ta procedure de connection au site


Dim winShell As New ShellWindows
'
'....la procedure de connection
'
'
'----- récupérer les infos de page Web dans un fichier texte ----
x = FreeFile
Open 'C:\\\\\\\\resultatRequete.txt' For Output Shared As #x

Set IE = winShell(winShell.Count - 1)
Print #x, IE.document.documentElement.innerText
DoEvents

Close #x



bonne journée
MichelXld

Message édité par: michelxld, à: 25/11/2005 05:43
 

tarvel

XLDnaute Occasionnel
Merci Michel pour ta réponse, j'ai testé mais ça ne marche pas!
J'ai le même résultat...je n'ai que le titre de la page web en fichier.txt!!!
Il doit y avoir une possibilité de récupérer les différents 'children' ou différents 'calque' de la page...car dans ce cas je ne récupère que le calque 'principal' semble t-il!!!
Sur le lien ici j'ai trouvé aussi quelques infos...peut être une voie possible...
Ce lien n'existe plus
exemple...en collection il y a ceci :
children : Recherche une collection d'objets DHTML qui sont les descendants directs de l'objet.
Mais comment le mettre en vba???

Merci

Message édité par: tarvel, à: 26/11/2005 19:51
 

tarvel

XLDnaute Occasionnel
Pour info
J'ai trouvé sur un forum anglophone une bonne partie de la solution...C'est un problème de frames (il y a plusieurs cadres dans la page Web...il faut choisir ensuite celle qui nous intéresse)
Avec cette macro je peux lister les frames (qui représente des url en https.. et choisir ainsi celui que je veux avec IE.navigate ('https://www.MonsiteWeb.htm')

Dim frm As Object , i As Integer
Set frm = IE.document.frames
For i = 0 To frm.Length - 1
Range('A' & (i + 1)).Value = frm(i).Location
Next

Merci
 

Discussions similaires

Réponses
8
Affichages
596