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 :

Automation IE et récupération de données [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    IMABENELUX
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IMABENELUX
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut
    Bonjour,

    Je suis responsable d'un réseau de prestataire travaillant dans le domaine du batiment.
    Nous avons des obligations légales en belgique de vérifier que les entrepreneurs qui travaillent pour nous payent bien leurs charges sociales.
    J'ai en base de donnée plusieurs centaines de prestataire à vérifier de manière mensuelle, ceci est bien évidemment très chronophage.

    J'essaye pour ça de développer une fonction VBA qui va automatiquement chercher ces données sur le site internet ad hoc.
    voici l'URL du site en question https://www.socialsecurity.be/web7/p...sultPaneAnchor

    J'arrive à faire introduire au site internet les bonnes données mais pas à récupérer la bonne réponse. qui est indiqué dans le code source par
    soit "<span id="PrepareRetainment:retainmentNone"></span>"
    soit "<span id="PrepareRetainment:retainmentTrue"></span>"
    soit "<span id="PrepareRetainment:retainmentFalse"></span>"

    voici trois n° de tva qui vont nous donner les trois réponses possible de ce site.
    818.083.152 (Pas de données concernant l'obligation de retenue)
    419.151.648 (Obligation de retenue sécurité sociale : OUI.)
    428.416.039 (Obligation de retenue sécurité sociale : NON.)

    et 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Function ONSS(TVA As Variant) As Variant
        Dim i As Long
        Dim IE As Object
        Dim objElement As Object
        Dim objCollection As Object
        Dim retour As Object
     
        ' Démarre IE
        Set IE = CreateObject("InternetExplorer.Application")
     
        ' Navigue sur le site ONSS
        IE.Navigate "https://www.socialsecurity.be/web7/ppr/faces/html/consultRetainment.xhtml#resultPaneAnchor"
     
     
        ' attendre que IE répond
        Do Until IE.ReadyState = 4
        DoEvents
        Loop
          ' trouve 2 input tags:
        '   1. Champ texte à introduire
        '   2. Bouton à clicker
     
        Set objCollection = IE.Document.getElementsByTagName("input")
     
        i = 0
        While i < objCollection.Length
            If objCollection(i).Name = "ConsultRetainment:bce" Then
                ' Met le texte dans le champs
                objCollection(i).Value = TVA
     
            Else
                If objCollection(i).Type = "submit" And _
                   objCollection(i).Name = "ConsultRetainment:consult" Then
                    ' bouton à clicquer trouvé
                    Set objElement = objCollection(i)
                End If
            End If
            i = i + 1
        Wend
        ' Clicque le bouton
        objElement.Click
     
        ' attendre que IE répond
        Do Until IE.ReadyState = 4
        DoEvents
        Loop
     
    Set IE = Nothing
    End Function

    Quand j'essaye de récupérer la donnée via un code de type

    Set Retour = IE.Document.getElementsByTagName ...
    ça ne marche pas c'est comme si le programme c'était arrêté à l'instantané avant l'introduction des données.
    Comment puis-je récupérer cette donnée Span ?
    D'avance merci pour vos réponses

    Avant que l'on me dise cela.

    évidemment le Set Retour = ... est avant le Set IE = Nothing sinon forcément ça ne marche pas

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut Démonstration facile à adapter !
    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 Demo()
        With CreateObject("InternetExplorer.Application")
            .Navigate "https://www.socialsecurity.be/web7/ppr/faces/html/consultRetainment.xhtml#resultPaneAnchor"
            Do: Loop Until .readyState = 4
     
            With .Document
                With .getElementsByTagName("input")
                    .Item("ConsultRetainment:bce").Value = "0818.083.152"
                    .Item("ConsultRetainment:consult").Click
                End With
     
                Do: Loop Until .readyState = "complete"
                T = .getElementsByTagName("span").Item(7).textContent
            End With
     
            .Quit
        End With
     
        MsgBox T
        End
    End Sub
    _______________ ____________________________________ ______________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Futur Membre du Club
    Homme Profil pro
    IMABENELUX
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IMABENELUX
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut
    parfait ça marche,
    j'ai adapté pour que ça reste une fonction ce qui est plus simple lors de travaux sur excel, voici le 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
    Function ONSS(TVA)
        With CreateObject("InternetExplorer.Application")
            .Navigate "https://www.socialsecurity.be/web7/ppr/faces/html/consultRetainment.xhtml#resultPaneAnchor"
            Do: Loop Until .ReadyState = 4
     
            With .Document
                With .getElementsByTagName("input")
                    .Item("ConsultRetainment:bce").Value = TVA
                    .Item("ConsultRetainment:consult").Click
                End With
     
                Do: Loop Until .ReadyState = "complete"
                ONSS = .getElementsByTagName("span").Item(7).textContent
            End With
            .Quit
        End With
    End Function
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/04/2004, 10h09
  2. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  3. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  4. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36

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