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
Partager