Je cherche via VBA à télécharger un fichier se trouvant sur le site internet abcbourse. Il s'agit d'historique de cours de la bourse.
L'objectif est, via VBA, de remplir divers champs obligatoires, de cliquer sur télécharger.
Puis d'ouvrir et de copier les données du classeur CSV généré.
J'ai réussis à la première étape, à savoir pointer sur les champs à remplir, puis cliquer sur télécharger. Cependant je ne sais pas comment interagir avec la boite de dialogue d'internet explorer qui demande ce que l'on veut faire avec le téléchargement. (Ouvrir, Enregistrer sous...)
Ci dessous le code utilisé :
Code:
Sub ABCbourse()
'Déclaration des variables
Dim IE As New InternetExplorer 'cette instance contiendra la page qui charge en boucle
Dim IEDoc As HTMLDocument
Dim Input_Date_debut As HTMLInputElement
Dim Input_Date_fin As HTMLInputElement
Dim Input_ISIN_Number As HTMLInputElement
Dim Input_ISIN_coche As HTMLInputElement
Dim suivant As HTMLInputElement
IE.navigate "http://www.abcbourse.com/download/historiques.aspx?f=ex"
IE.Visible = True
'On pointe le membre document
Set IEDoc = IE.document
'On point la zone de texte IEDoc.all("name", "index si plusieurs noms")
Set Input_ISIN_Number = IEDoc.all("ctl00$BodyABC$txtOneSico")
'On écrit le texte qu'on veut placer dedans :
Input_ISIN_Number.Value = "FR0000045072" 'Code ISIN du Crédit Agricole
Set Input_ISIN_coche = IEDoc.all("ctl00$BodyABC$oneSico")
Input_ISIN_coche.Click
Set Input_Date_debut = IEDoc.all("ctl00$BodyABC$strDateDeb")
Input_Date_debut.Value = "01/01/2014"
Set Input_Date_fin = IEDoc.all("ctl00$BodyABC$strDateFin")
Input_Date_fin.Value = "01/09/2014"
Set suivant = IEDoc.all("ctl00$BodyABC$Button1")
suivant.Click
'On libère la variable IE et IEDoc
Set IE = Nothing
Set IEDoc = Nothing
End Sub
bendu31
Pas trouvé de CGU sur abcbourse.com en contradiction avec cela (extrait de la charte)
8 - Les demandes de développements relatives à des extractions de données sur des sites interdisant ces pratiques dans leurs conditions générales sont interdites.
On peut donc continuer à interagir avec ie et la toile.
(bien que cette section soit réservé à Excel, là c'est plus de la compréhension d'un source html dont il s'agit)
Bonjour,
Merci pour votre réponse. Effectivement les données que je souhaite exploiter sont d'ordre publique.
J'ai trouvé une petite astuce qui permet via l'utilisation de touches de télécharger le fichier, mais sans être efficace, il suffit que l'utilisateur appui sur une touche ou change de fenêtre pour que la commande soit inutile. De plus j'aimerais cacher la fenêtre internet, et avec la combinaison de touches, ce n'est pas possible...
Code:
'attente de 5 secondes avant de poursuivre
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 5
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
SendKeys "{tab}"
SendKeys "{enter}"
Ce petit bout placé à la fin de la macro fonctionne à priori.
Le code est moche est non optimisé, si quelqu'un a une piste de réflexion, je suis preneur.