Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Boîte de dialogue Internet Explorer [ Réseaux & Internet / Internet ] (Preetamus)

mercredi 9 juillet 2008 à 16:19:16 | Boîte de dialogue Internet Explorer

Preetamus

Bonjour,

j'ai créé une macro qui se log sur un site et ensuite va chercher un tableau. Ce tableau je veut l'ouvrir en excel donc je simule un clique sur le lien "Télécharger" sur la page. Jusqu'ici aucun problème pour implémenter sous vba. Et c'est là que je bloque. Internet Explorer me demande alors si je ve ouvrir le fichier ou l'enregistrer (avec la boîte de dialogue classique) et je ne sais pas comment "dire" à explorer d'ouvrir le fichier concerné

Sachant que j'ai plus de 500 fichier à télécharger, il me faut trouver une solution pour automatiser tout cela.

Preetamus

mercredi 9 juillet 2008 à 16:27:25 | Re : Boîte de dialogue Internet Explorer

Renfield

Administrateur CodeS-SourceS
envoies toi même la requete HTTP ... tu recevra le contenu du fichier directement...

passes par MsInet, par exemple

mercredi 9 juillet 2008 à 16:50:41 | Re : Boîte de dialogue Internet Explorer

Preetamus

Comme d'habitude tu es le plus rapide à répondre. merci

Le prob c que le tableau que je ve ouvrir dépends de la saisie que je fais sur le site. tu penses que c possible de lancer la requête directement de vba- et ensuite ouvrir le tableau xls via excel?

je ne connais pas MsInet


mercredi 9 juillet 2008 à 16:53:11 | Re : Boîte de dialogue Internet Explorer

Preetamus

pour info voilà mon code vba (simplifié mais il marche aussi). ddada est la date à laquelle je veux obtenir les données du tableau.


Function forward(ddada)

'fonction qui va chercher les taux forward de l'euribor 3M et les télécharge dans excel
'dans un fichier s'appelant downloadPage

Set IE = CreateObject("InternetExplorer.application")

IE.Visible = False

muda = CStr(ddada)
IE.navigate " [ Lien ]"
   


While Timer = False
Wend

IE.document.all("pPwd").Value = "****"
IE.document.all("pLoginName").Value = "****"
IE.document.all("ctl00$column3$ctl00$buttonLogin").Click


While Timer = False
Wend

IE.navigate "https://cib.natixis.com/net/derivatives/aspx/interestforwardrateswap.aspx"

While Timer = False
Wend

IE.document.all("_ctl0:tabVol:ucHisto1:CdcPanel1:cdb_from").Value = muda 'rentre la date dans le champ de recherche
IE.document.Links(42).Click 'click sur valider


IE.document.Links(43).Click 'click sur télécharger
'IE.Application.Wait

 

End Function


mercredi 9 juillet 2008 à 16:56:24 | Re : Boîte de dialogue Internet Explorer

Renfield

Administrateur CodeS-SourceS
tu peux faire joujou avec ton site web (manuellement ou en pilotant la chose)...

ca finira, je pense par un envoi de tes parametres en POST ou GET, selon méthode du formulaire concerné...

reste que tout cela peut être fait sans WebBrowser, en dialoguant avec le serveur web, en face.

tu te fais en gros passer IE, validant le forumlaire que tu viens de remplir...

MsInet (ou autre, hein) est un composant Microsoft qui permet justement de dialoguer en HTTP. c'est assez documenté, et le siet possède, j'en suis sur un tas d'exemples.

a voir le site concerné, etc.
j'ai pas de réponse toute faite.

mercredi 9 juillet 2008 à 17:01:44 | Re : Boîte de dialogue Internet Explorer

Renfield

Administrateur CodeS-SourceS
ah, un domaine que je connais bien ^^
(et Natexis, euh, pardon, Natixis était un de nos clients)


concernant ton code, méfies toi de
While Timer = False
Wend

qui ne garantie pas grand chose, au final...
se fier plutot au ReadyState

si le coeur t'en dit, files moi Login & Pass par MP, je verrai demain ce que je puis faire pour toi.

mercredi 9 juillet 2008 à 17:05:14 | Re : Boîte de dialogue Internet Explorer

Preetamus

Merci pour ta réponse je vais creuser un peu plus le sujet.. au pire je reviendrais si jai besoin de précisions ^^

jeudi 10 juillet 2008 à 09:23:04 | Re : Boîte de dialogue Internet Explorer

Renfield

Administrateur CodeS-SourceS
finalement, après avoir vu précisément la chose, on peux greffer quelques choses a ton code afin de récupérer les données.

ci dessous, le code complété, corrigé, commenté...

a toi par la suite de placer les données CSV obtenues dans Excel (ce qui n'est pas très complexe, c'est un format reconnu par ce dernier).

jeudi 10 juillet 2008 à 09:25:13 | Re : Boîte de dialogue Internet Explorer

Renfield

Administrateur CodeS-SourceS
Réponse acceptée !
Option Explicit

Private Const READYSTATE_COMPLETE = 4
Private Const READYSTATE_INTERACTIVE = 3

Private moIE As Object

'# Cette procédure va instancier IE afin de se connecter sur le site.
Private Sub InitIE(ByRef vsLogin As String, ByRef vsPassword As String)
   Set moIE = CreateObject("InternetExplorer.Application")
   moIE.Visible = False
   moIE.navigate "http://cib.natixis.com/"
 
   '# Après un Navigate, on attend que le ReadyState soit à Complete
   Do
       DoEvents
   Loop Until moIE.readyState = READYSTATE_COMPLETE

   '# On entre les identifiants
   moIE.document.getElementsByName("pLoginName")(0).Value = vsLogin
   moIE.document.getElementsByName("pPwd")(0).Value = vsPassword
   moIE.document.getElementsByName("ctl00$column3$ctl00$buttonLogin")(0).Click

   '# Après avoir joué avec les formulaires, on attend que le ReadyState soit à Interactive
   Do
       DoEvents
   Loop Until moIE.readyState = READYSTATE_INTERACTIVE
   
   Do
       DoEvents
   Loop Until moIE.readyState = READYSTATE_COMPLETE

   '# On se rend sur la page des données
   moIE.navigate "https://cib.natixis.com/net/derivatives/aspx/interestforwardrateswap.aspx"

   Do
       DoEvents
   Loop Until moIE.readyState = READYSTATE_COMPLETE
End Sub

Private Sub QuitIE()
   moIE.Quit
   Set moIE = Nothing
End Sub

'# Cette fonction va interroger le site pour obtenir les données concernant une date donnée.
'# Le résultat se présente sous la forme de données CSV.
Private Function GetForward(ByVal vdWhen As Date) As String
   '# Pour cela, on a juste à saisir la date dans le format requis
   moIE.document.getElementsByName("_ctl0:tabVol:ucHisto1:CdcPanel1:cdb_from")(0).Value = Format$(vdWhen, "DD/MM/YYYY") 'rentre la date dans le champ de recherche
   '# On valide la saisie
   moIE.document.Links(42).Click
   
   '# Une fois les données chargées...
   Do
       DoEvents
   Loop Until moIE.readyState = READYSTATE_INTERACTIVE
   
   Do
       DoEvents
   Loop Until moIE.readyState = READYSTATE_COMPLETE

   '# On lance la conversion tableau HTML => CSV
   GetForward = HTMLToCsv(moIE.document.getElementsByName("_ctl0_tabVol_ucHisto1_CdcPanel3_BigGrid1_myGrid")(0).innerHTML)
End Function

'# Cette fonction va convertir notre tableau HTML en données CSV
'# Les tags composant ce tableau sont alignés à gauche, et ils sont organisés en lignes.
Private Function HTMLToCsv(ByRef vsInput As String) As String
Dim xsLines() As String
Dim i As Long
Dim sTag As String
Dim sData As String
Dim nPos As Long
Dim sCurrentRow As String
   '# On a donc simplement à séparer les lignes, pour qu'en tête de celles-ci nous trouvions les ouvertures des différents tags HTML
   xsLines = Split(vsInput, vbCrLf)
   For i = 0 To UBound(xsLines)
       '# On extrait le nom du tag
       nPos = InStr(xsLines(i), ">")
       sTag = Mid$(xsLines(i), 2, nPos - 2)
       If InStr(sTag, " ") Then
           sTag = Left$(sTag, InStr(sTag, " ") - 1)
       End If
       
       '# Puis les éventuelles données
       sData = Mid$(xsLines(i), nPos + 1)
       nPos = InStr(sData, "<")
       If nPos Then
           sData = Left$(sData, nPos - 1)
       End If
       If LenB(sData) Then
           sData = Replace(sData, " ", " ")
       End If
       
       '# On lance la converion pour un élément
       GoSub ConvertItem
   Next i
   '# Une fois le traitement terminé, on ajoute la dernière ligne analysée au contenu déjà récupéré
   sTag = "TR"
   GoSub ConvertItem
Exit Function
ConvertItem:
   Select Case sTag
       Case "TR"
           If LenB(sCurrentRow) Then
               '# On ajoute une ligne a la sortie
               If LenB(HTMLToCsv) Then
                   HTMLToCsv = HTMLToCsv & vbCrLf
               End If
               '# Et on ajoute la ligne que l'on vient d'analyser
               HTMLToCsv = HTMLToCsv & sCurrentRow
               sCurrentRow = vbNullString
           End If
       Case "TD"
           '# On ajoute un séparateur ";" entre chaque colonne
           If LenB(sCurrentRow) Then
               sCurrentRow = sCurrentRow & ";"
           End If
           sCurrentRow = sCurrentRow & sData
   End Select
   Return
End Function


  ' Et pour faire fonctionner le tout :
  ' On initialise le transfert

   InitIE "xxxxxx", "************"
       '# On demande les données pour une date précise
       MsgBox GetForward(#7/7/2008#), vbOKOnly, "Lundi 07/07/2008"
       MsgBox GetForward(#7/8/2008#), vbOKOnly, "Mardi 08/07/2008"
       MsgBox GetForward(#7/9/2008#), vbOKOnly, "Mercredi 09/07/2008"
   '# Enfin, on ferme IE
   QuitIE






By Renfield






Renfield
Admin CodeS-SourceS - MVP Visual Basic

jeudi 10 juillet 2008 à 10:49:44 | Re : Boîte de dialogue Internet Explorer

Preetamus

Merci beaucoup. jvai voir plus en détail ce code que tu as écrit. en tout cas jvai surement apprendre plein de trucs

Preetamus




Cette discussion est classé dans : ouvrir, explorer, internet, dialogue, boîte


Répondre à ce message

Sujets en rapport avec ce message

Comment ouvrir internet explorer avec les fonctions menubar=no ... [ par CrowEye ® ] Ben tout est dans le titre .. Boîte de dialogue OUVRIR [ par ckoo ] comment ouvrir une boît de dialogue ouvrir depuis un programme VB ?de plus je voudrais récupérer le chemin d'accés du fichier sélectionné !!merci d'av Faire apparaitre la boîte de dialogue Ouvrir [ par Ricil ] Bonjour,je cherche la méthode pour afficher la boîte de dialogue standard Ouvrir et lit un nom de fichier tapé par l'utilisateur sans réellement ouvri boîte de dialogue ouvrir [ par sg1 ] MarcComment gérer la petite croix du menu systeme d'un boîte de dialogue ouvrir:eviter err 75 Ouvrir internet explorer [ par ndsaerith ] Salut tout le monde,Voila, j'ai un formulaire qui permet l'acces directement à des site (sur l'appuie sur leur logo, qui est une image). Mais je ne sa ouvrir internet explorer avec une macro de word [ par ManuAntibes ] Salut J'ai fais un .dot en wordJ'ai mis un label de texte avec une adresse email de dans.Je souhaite pouvoir ouvrir une page internet en cliquant sur Ouvrir des fichiers internet indexés [ par stef76000 ] Salut à tous, voilà ma demande :J'aimerais pouvoir ouvrir des fichiers par internet explorer.Là, je n'ai pas de problèmes avec la ligne ci dessousSHEL ouvrir internet explorer avec un mot de passe et login [ par puddle555 ] Bonjour, Je voudrais ouvrir une adresse par exepemple http://concours mais cette adresse necessite un login et user, je voudrais ecrire un program ouvrir internet explorer avec un mot de passe et login [ par puddle555 ] Bonjour, Je voudrais ouvrir une adresse par exepemple http://concours mais cette adresse necessite un login et user, je voudrais ecrire un program ouvrir internet explorer avec un mot de passe et login [ par puddle555 ] Bonjour, Je voudrais ouvrir une adresse par exepemple http://concours mais cette adresse necessite un login et user, je voudrais ecrire un program


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.