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
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
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???
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