IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA- comment extraire des données sur internet via un programme vba ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Par défaut VBA- comment extraire des données sur internet via un programme vba ?
    Bonjour,
    J'ai crée un code qui calcule un tableau d'amortissement en fonction du type de taux : il marche pour les taux fixes, et je voudrais maintenant le faire marcher avec les taux variables.

    J'ai une userform qui permet à l'utilisateur de rentrer les caractéristiques nécessaires à tous les calculs. je voudrais par exemple que lorsqu'il choisisse parmi la liste des taux l'EURIBOR12M, mon code aille chercher la valeur du taux sur un site internet (boursorama). j'ai trouvé la page où il faut aller pour avoir la valeur du taux ( pour l'exemble, c'est http://www.boursorama.com/cours.phtm...UR8Y&vue=histo).

    je cherche depuis 2 jours comment extraire cette donnée via vba, mais je ne comprends rien à ce que je lis : existe-il une fonction en vba qui permette d'extraire les données du net et de les utiliser dans mon programme? si oui pourrais-je avoir un exemple SIMPLE?

    et de plus je vais avoir une autre difficulté : je voudrais la valeur du taux à une date que l'utilisateur rentrera. Mais cela signifie qu'il faut se connecter sur la bonne page internet (la page donnée dans mon exemple est le taux du jour, mais comment faire pour avoir la page à n'importe quel jour?)

    A la limite, je me concentrerai sur le pb de date apres avoir bien compris comment extraire une donnée du web en vba. Mais bon si quelqu'un a en plus la solution pour ca, ce sera la cerise sur mon gateau

    Je vous remercie pour votre aide précieuse ! j'espère que j'ai bien expliqué mon problème....
    Bonne journée et bientot bon week-end !!!

    ps: pour info, j'utilise firefox et windows 7...

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    quelques points importants concernant ce genre de démarche :
    - fournir des données boursières historiques n'est pas un élément gratuit (une requête historique auprès d'un fournisseur de données boursières (bbg, reuters, cqg, markit, credit edge...) a un coût. Aussi les sites qui les affichent n'ont pas vocation à être "récupéré" si aisément

    - mieux vaut privilégier des sites qui fourniraient des extraits csv/excel directement plutôt que d'avoir à
    > enregistrer le fichier au format html
    > le parser en VBA

    - pour ton problème de date si tu restes sur une interface page web, il te faudra vraisemblablement faire une analyse et trouver l'algorithme de génération de la page (format, nom de page etc. )
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Par défaut
    Vous devriez trouver a peu près tous dans ce tutorial :
    http://qwazerty.developpez.com/tutor...-et-vba-excel/

    C’est intéressant mais un peu coton,
    On ne trouve pas beaucoup d’infos sur le sujet, c’a veut peut-etre dire que ce n’est pas trop utilisé(ou pas trop utilisable !)

    Henri

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Par défaut
    rebonjour à tous! bon apres quelques recherches de plus j'ai fini par arriver à faire la première étape de ce que je voulais faire, cad d'aller récupérer le taux sur internet.
    j'utilise pour cela la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
         'fonction pour récuperer la valeur sur internet
    Public Function recup_euribor12m(lienInternet As SHDocVw.InternetExplorer, pageInternet As MSHTML.HTMLDocument, leTaux As MSHTML.HTMLSpanElement, tauxWeb As String) As Variant
     
     
    Set lienInternet = New SHDocVw.InternetExplorer
     
    lienInternet.Visible = False
     
    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 va dans le item où est située la valeur du taux
       Set leTaux = pageInternet.getElementsByClassName("cotation").Item(0)
        ' le taux est dans le texte de l'item
        tauxWeb = leTaux.innerText
     
       'on converti le taux en nombre
        recup_euribor12m = CDbl(Val(tauxWeb))
     
    End If
    End Function
     
     
    ' 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
    et j'appelle cette fonction depuis mon main, ça compile je suis contente

    Maintenant j'ai VRAIMENT besoin d'aide pour l'étape 2 : vraiment, ça fait une semaine que je cherche et j'essaie les tuto sur le net, mais je n'y arrive pas, peut-etre à cause de mon manque de connaissance en html ( j'ai quand même lu un tuto dessus mais tjs pas de résultats...)

    ce que je voudrais faire, c'est, au lieu de prendre un taux sur la page web donnée dans ma fonction, je voudrais, apres que l'utilisateur de mon code ait rentré une date, pouvoir changer la date du calendrier (cf photo ci-dessous) afin de récupérer le taux à cette date là! J'ai trouvé des tuto pour apprendre à cliquer sur un bouton d'une page web, mais ca ne marche pas pour mon code...

    pour info je veux agir sur ce calendrier de la page suivante :

    au milieu de la page, il y a marqué "cours de la valeur au" puisu ne date, modifiable par un clic sur le calendrier. c'est sur ce calendrier que je veux pouvoir cliquer et modifier la date...
    (cependant si c'est trop compliqué, cela ne me dérange pas de changer de site, mais c'est le seul que j'ai trouvé pour avoir les taux à une date souhaitée).

    Merci beaucoup pour votre aide, j'ai déja bien avancé!
    bonne journée !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 237
    Par défaut
    Pourriez-vous attacher le dossier en pièce jointe ?

    Cordialement,
    Henri

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Par défaut
    je suis désolée je ne peux pas, ca me répond "fichier non valide"...
    mais je pense que tout peut se faire du module donc vous avez le bon module dans mon message précédent !

Discussions similaires

  1. Extraire des données depuis Chrome via VBA
    Par Korleone dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/01/2015, 00h52
  2. Extraire des données sur internet.
    Par lovlov33 dans le forum Général VBA
    Réponses: 1
    Dernier message: 06/06/2014, 12h19
  3. Réponses: 1
    Dernier message: 03/01/2010, 12h49
  4. Réponses: 1
    Dernier message: 31/12/2009, 11h22
  5. Réponses: 4
    Dernier message: 29/09/2009, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo