Interaction page web VBA - Enregistrer sous

bendu31

XLDnaute Nouveau
Bonjour,

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

Par avance merci,

Benjamin
 

Staple1600

XLDnaute Barbatruc
Re : Interaction page web VBA - Enregistrer sous

Bonjour à tous


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)
 

bendu31

XLDnaute Nouveau
Re : Interaction page web VBA - Enregistrer sous

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.

Merci,

Benjamin
 

Statistiques des forums

Discussions
311 741
Messages
2 082 055
Membres
101 882
dernier inscrit
XaK_