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 :

Récupération solde bancaire sur page web


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    RAF
    Inscrit en
    Juillet 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : RAF
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2018
    Messages : 3
    Par défaut Récupération solde bancaire sur page web
    Bonjour,

    Je suis bloqué sur ma macro, le but étant de lancer la page d'accueil de la banque, se connecter en insérant le user name et mdp et de cliquer sur le bouton pour se connecter.
    Ca c'est géré via mon code et donc une autre page web s'ouvre (celle qui nous intéresse).

    J'arrive à pointer sur cette nouvelle page mais je n'arrive pas à récupérer le solde des différents comptes bancaires

    Voici mon code :

    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
    Sub Connexion()
     
    Dim IE As New InternetExplorer
    Dim maPageHtml As HTMLDocument
    Dim Helem As IHTMLElementCollection
    Dim winShell As New ShellWindows
    Dim HtmlElementStandard As HTMLGenericElement
     
     
    IE.navigate "https://ib.mcb.mu/T001/banking.jsp"
    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
    Loop
     
    Set maPageHtml = IE.document
    Set Helem = maPageHtml.getElementsByTagName("input")
    Helem(1).innerText = "login"
    Helem(2).innerText = "mdp"
    Helem(60).Click
     
     
    Application.Wait (Now + TimeValue("0:00:10"))
     
    On Error Resume Next
    For Each IE In winShell
    If IE.LocationURL = "https://ib.mcb.mu/T001/internet" Then
    Set maPageHtml = IE.document
    End If
    Next IE
    End Sub
    Je met en PJ également une copie écran du code source de la page web qui s'ouvre avec l'identification via le code sources des éléments (entouré en jaune) que je veux ramener sur ma feuille excel via la macro.

    merci d'avance pour vos retours, je bloque
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Je vois deux obstacles:
    • Le contenu que tu souhaites récupérer se trouve dans une Form ce qui souvent pose problème pour pointer les éléments de la page.
      Il faudrait mettre un espion sur maPageHtmlet et regarder le contenu de all, form,... pour voir ce qu'il est possible de récupérer.
    • Les éléments ne sont ni nommé, ni indexé.
      Par contre les contenu qui t'intéresses se trouve dans des tbody, ce qui limite le champs de recherche des éléments via leur classe


    Par rapport au code
    • Pourquoi l'attente de 10seconde? N'y a-t-il aucune indication sur la page permettant de savoir qu'elle est en cours de chargement (je présume que la boucle WaitIe "classique" ne suffit pas)
    • Il serait préférable de ne pas mettre de "On error resume next" tant que le code n'est pas fini de développer. Actuellement peu importe les erreurs rencontré, le code continu. Si ça se trouve maPageHtmlet est nothing et donc rien ne peut fonctionner.
    • Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      For Each IE In winShell
      If IE.LocationURL = "https://ib.mcb.mu/T001/internet" Then
      Quel est le but de cette section de code? Le site ouvre une autre page internet dans IE?


    Il serait sans doute intéressant de regarder du coté de l'onglet "réseau" dans l'inspecteur de code d'IE afin de voir ce que le serveur donne comme info pour renseigner la page que tu as sous les yeux.

    Je ne peux guère être plus précis sans pouvoir manipuler la page directement.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Candidat au Club
    Homme Profil pro
    RAF
    Inscrit en
    Juillet 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : RAF
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2018
    Messages : 3
    Par défaut
    Salut,

    Merci de ton retour.


    L'attente de 10s est due au faite que j'ouvre une nouvelle page IE via le début de mon code et c'est cette nouvelle page IE qui m'intéresse. Si je n'attends pas 10s la nouvelle page IE n'est pas chargé et je ne peux donc pas aller pointer sur la page en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each IE In winShell
    If IE.LocationURL = "https://ib.mcb.mu/T001/internet" Then
        Set maPageHtml = IE.document
    https://ib.mcb.mu/T001/internet étant l'URL de la page IE ouverte par le début de mon code et effectivement si je n'attends pas quelques seconde ce qu'il est dans maPageHtlm est vide...

    En faisant une fenêtre espion sur mapageHtml je récupère bcp d'infos mais je ne sais pas faire le lien entre le code htlm et les infos récupérer, c'est là que je bloque?
    Il y a pas un moyen de tout récupérer en vrac sur excel et je me débrouille pour récuperer les valeurs qui m'intéresse?

    Merci de ton aide,

  4. #4
    Candidat au Club
    Homme Profil pro
    RAF
    Inscrit en
    Juillet 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : RAF
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2018
    Messages : 3
    Par défaut
    voici les impression écran de l'onglet "réseau" dans l'inspecteur de code d'IE que j'ai faite.

    Si tu as des pistes n'hésites pas

    merci,
    Images attachées Images attachées   

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Mon niveau en structure et chargement de page web ne me permet pas d’interpréter les screenshots.

    Je te donne deux pistes
    • Concernant l'attente de chargement de la page, je vois un gif "loading.gif", il serait bien de trouver où il est utilisé dans la page et te service de sa présence/affichage ou non à l'écran pour déterminer si le chargement de la page est complet.
    • Pour le contenu de la page, je vois plusieurs gros volumes de données, il faut regarder le contenu de ces requêtes pour essayer de trouver celle qui contient les informations que tu veux extraire. Souvent la réponse à la requêtes est un code html représentant une partie de la page.
      Petit bémol tout de même, vu que les données sont incluses dans une Form et la Form étant utilisée pour afficher une page ayant sa propre URL, peut-être que lorsque tu fais une demande au serveur, il place les informations que tu souhaites visualisées puis retourne un chemin d'accès à cette page qui est par la suite affichée via la Form... J'espère être compréhensible. Bien sûr c'est une supposition, je n'ai pas les connaissances suffisantes pour le garantir.


    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    a analyser

    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
    Sub Connexion()
        Dim IE As Object
        Dim Doct As Object
        Dim URL
        Set IE = CreateObject("internetexplorer.application")
        URL = "https://ib.mcb.mu/T001/banking.jsp"
        IE.navigate URL
        IE.Visible = True
        Do While IE.readyState <> 4 Or IE.busy : DoEvents: Loop
        Set Doct = IE.document
         With Doct.getelementbyid("fldLoginUserId"): .Focus: .Value = "login": End With
        With Doct.getelementbyid("SKBPassword"): .Focus: .Value = "passe": End With
        Doct.getelementbyid("Login").Click
        Do While IE.readyState <> 4 Or IE.busy : DoEvents: Loop
        'et
        Do: DoEvents: Loop While IE.locationurl = URL
        'ou
        Do: i = i + 1: DoEvents: Set ma_table = Doct.getelementbyid("mainbox"): Loop While ma_table Is Nothing Or i = 5000
        Debug.Print ma_table.innertext
     
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Problème récupération item sur page web
    Par EngueEngue dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/08/2013, 13h29
  2. [XL-2007] Récupération d'infos sur page WEB
    Par issoram dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/11/2010, 11h38
  3. trouver plusieurs mots sur page web et les surligner
    Par biggione dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/08/2006, 15h22
  4. Lecteur Multimedia sur page Web
    Par beegeesman dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 17/01/2006, 00h15
  5. ShellExecute - Access Denied sur page web
    Par Neilos dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/10/2005, 12h04

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