Aide pour piloter des pages webs à travers le VBA d'Excel

jackyB

XLDnaute Nouveau
Bonjour,

Novice en la matière de programmation et malgré des lectures sur le forum, je ne parviens à boucler mon projet.

Projet:
Automatisation de la récupération de fichiers csv via excel VBA. Les fichiers sont générés sur un site en ASP (intranet) via la validation d'une suite de formulaires.

Voici le code (inspiration des pompages sur le forum)
Les liens html sont faux
les références vba microsoft HTML Object library et Internet Controle sont présents

Sub GeneFich()

Dim IE As Object 'InternetExplorer
Dim HlmIdent, HlmMdp, HlmBase, Hlmbouton, HlmOk, HlmSite, HlmEquip, Hlmddeb, Hlmdfin, Hlmgo As Object 'IHTMLElement
Dim MaPageHtml As Object 'HTMLDocument

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate ("http://pageasp/ConnexCa.asp")

Do Until IE.readyState = 4
DoEvents
Loop

'Liste des paramètres des pages HTML
Set MaPageHtml = IE.document
Set HlmIdent = MaPageHtml.getElementsByName("login").Item
Set HlmMdp = MaPageHtml.getElementsByName("pwd").Item
Set HlmBase = MaPageHtml.getElementsByName("connexion").Item
Set HlmOk = MaPageHtml.getElementsByName("modifbase").Item
Set Hlmbouton = MaPageHtml.getElementsByName("Submit2").Item
Set HlmSite = MaPageHtml.getElementsByName("idsite").Item
Set HlmEquip = MaPageHtml.getElementsByName("idequipe").Item 'numéro de l'équipe
Set Hlmddeb = MaPageHtml.getElementsByName("ddeb").Item 'date de début
Set Hlmdfin = MaPageHtml.getElementsByName("dfin").Item 'date de fin
Set Hlmgo = MaPageHtml.getElementsByName("go").Item 'Image fléche de validation données

'Habilitation d'acces
HlmIdent.Value = "L'indentifiant"
HlmMdp.Value = "le mot de passe had-oc"
HlmBase.Value = "co"
HlmOk.Value = "ok"
Hlmbouton.Click

'Connexion sur la page d'une équipe
IE.navigate ("http://pageasp/Req_Qb.asp?idsite=370&idequipe=5009965")

Do Until IE.readyState = 4
DoEvents
Loop

'HlmSite.Value = 8
'HlmEquip.Value = "5009965"
Hlmddeb = "01/03/2008"
Hlmdfin = "31/03/2008"
Hlmgo.Click

End Sub


Mon problème survient à l'appel de la seconde page ASP :
("http://pageasp/Req_Qb.asp?idsite=370&idequipe=5009965")

ou je dois renseigner une zone date dont voici le code source de la page HTML (extrait)

input name="ddeb" type="text" class="formulaire" id="dateDebut" onfocus="view_microcal(true,dateDebut,microcal,-1,0);" onblur="view_microcal(false,dateDebut,microcal,-1,0);" onkeyup="this.style.color=testTypeDate(this.value)?'black':'red'" size="8" maxlength="10"

je tente de passer les valeurs par
Hlmddeb = "01/03/2008"
Hlmdfin = "31/03/2008"

les champs ne se remplissent pas. Et le problème persiste si je remplace la date par sa valeur numérique ou met des dièses.

Le second echec est la non validation de l'image fléche symbolisant la validation des données.
Extrait du code HTML
input name="go" type="image" src="../images/flechecarreedroite.gif" width="14" height="14"

ou j'use du code VBA Hlmgo.Click comme dans le cas de la première page.


Résumé
Comment passer les dates et valider la page ASP via l'image sybolisant une fléche par l'intermédiare du VBA excel.
 

jackyB

XLDnaute Nouveau
Re : Tjrs pilotage de IE au travers d'Excel?

Bonjour,

Ce second post est là pour rafraichir ma demande d'aide sur le pilotage IE au travers du VBA.
En espérant que la formulation de mon problème reste compréhensible.

a+
 

cecile_64

XLDnaute Nouveau
Re : Aide pour piloter des pages webs à travers le VBA d'Excel

Bonjour, je voulais savoir si tu avais trouvé une solution a ton problème, car je pense avoir le meme en ce qui concerne les dates ^^
Perso je veux forcer une date dans un calendrier, afin de récupérer le taux correspondant à la date que j'ai donné.
Pour l'instant j'ai réussi à récupérer le taux en date du jour ( le site actualise le taux et la date tous les jours), et j'ai aussi réussi à récupérer la date dans l'objectif de la modifier, et de lancer la recherche du bon taux dans la page web. Malheureusement je n'y arrive pas :(

Donc si tu as résolu ton pb, peux-tu m'aider en m'expliquant comment faire ou en me montrant au moins ton code?

pour info, la page internet sur laquelle je me connecte est
EUR 1Y Euribor (360 Day) | EUR8Y | Cotations en temps réel

et voici mon code, qui ne marche pas pour l'instant ...

Code:
Public Sub recup_taux_euribor12m()

Dim lienInternet As SHDocVw.InternetExplorer
Dim pageInternet As MSHTML.HTMLDocument
Dim leTaux As MSHTML.HTMLSpanElement
Dim cadre_calendrier As MSHTML.HTMLFormElement

Dim calendrier As MSHTML.HTMLGenericElement
Dim dateRecup As String
Dim dateRecup2 As String
Dim tauxWeb As String
Dim tauxeuribor12m As Double
'Dim bouton As MSHTML.HTMLDocument


Set lienInternet = New SHDocVw.InternetExplorer

lienInternet.Visible = True

lienInternet.navigate "http://www.boursorama.com/cours.phtml?symbole=1xEUR8Y&vue=histo"

' Attente avec timeout de 10 s
If WaitIE(lienInternet, 10) Then
   ' 10 s écoulées et page non chargée
   MsgBox "Time out!"
Else
   ' Page chargée, on continue
   Set pageInternet = lienInternet.Document
  ' On clique sur le calendrier

    Set calendrier = pageInternet.all("span_date_cal")
    dateRecup = calendrier.innerText
    
    
     'On affiche le texte
   MsgBox dateRecup, Title:="la date est"
      
      'on change la date
calendrier.Value = "2012/0101"


      
       ' Valeur recherchée
'pageInternet.parentWindow.execScript "showCalendar('date_cal', '%Y-%m-%d', true, 'span_date_cal')", "JavaScript"
pageInternet.parentWindow.execScript "$('form').submit()", "JavaScript"
pageInternet.parentWindow.execScript "$('form').submit()", "JavaScript"
pageInternet.parentWindow.execScript "showCalendar('date_cal', '%Y-%m-%d', true, 'dateRecup')", "JavaScript"
    
    'On exécute le script showActu 'Attention à la Casse!!!! showActu
      'IEDoc.parentWindow.execScript "showCalendar(" & yNumActu & ")", "JavaScript" code du tuto
      
    'dateRecup2 = calendrier.innerText
      'On affiche le texte
   MsgBox dateRecup2, Title:="la date est"
   
      'on recalcule le taux sur le site
      
       
        'Set calendrier = pageInternet.all("span_date_cal")
        'calendrier.Click
End If
End Sub
       

       

' Attend que la page internet soit chargée
' pTimeOut est un time out en secondes (WaitIE vaut True si Timeout)
Public Function WaitIE(oIE As InternetExplorer, Optional pTimeOut As Long = 0) As Boolean
Dim lTimer As Double
lTimer = Timer
Do
    DoEvents
   If oIE.readyState = READYSTATE_COMPLETE And Not oIE.Busy Then Exit Do
   If pTimeOut > 0 And Timer - lTimer > pTimeOut Then
       WaitIE = True
       Exit Do
   End If
Loop
End Function
       
' Recherche d'un bouton par son nom dans le document
Private Function GetButton(Document As HTMLDocument, ButtonId As String) As MSHTML.HTMLInputElement
If Document.getElementById(ButtonId).Length > 1 Then
   Set GetButton = Document.getElementById(ButtonId)(1)
Else
   Set GetButton = Document.getElementsById(ButtonId)(0)
End If
End Function

merci d'avance pour ton aide :)
 

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 236
dernier inscrit
Menni