Remplir un formulaire internet par macro

jozerebel

XLDnaute Occasionnel
Bonjour à tous,

Je n'ai pas eu de succès sur le fofo de Word, alors, finalement, je vais essayer avec Excel...

Je récupère des infos depuis un formulaire Word (contrat de travail). Chaque champs a un nom et je souhaiterais récupérer les valeurs des champs pour remplir autoamtiquement le site de l'urssaf (DUE [déclaration d'embauche]).

J'ai commencé une petite macro mais cette dernière ne m'affiche pas la page avec les champs du salariés à renseigner...

Bonjour à tous,

j'avance tout doucement...

voilà un début de macro

Sub due()
Dim IEapp As New InternetExplorer
IEapp.Navigate ("https://www1.due.urssaf.fr/declarant/index.jsf")
IEapp.Visible = True
Do While Not IEapp.ReadyState = 4
Loop
'remplissage du Siret
IEapp.Document.getElementById("form_siret").innertext = "numéro siret de l'association "


End Sub

Si quelqu'un peut m'aider, ce serait génial...

Cordiales salutations.
 

jozerebel

XLDnaute Occasionnel
Re : Remplir un formulaire internet par macro

Si ça peut éclairer ,voilà une partie du code de la page pour laquelle je n'arrive pas à insérer le nom du salarié

<h2>Futur salari&eacute;</h2>
<table class="table1">
<tr>

<td class="td1">Nom de naissance*</td>
<td colspan="2"><input id="form_declaration:champ_nom_naiss" type="text" name="form_declaration:champ_nom_naiss" class="input2" maxlength="32" onblur="ctrlChampAlphaMAJ('form_declaration','champ_nom_naiss','champ_nom_naiss_msgFor','Format invalide');" onkeypress="return he(event);" />
<div class="input2">
<p><span id="form_declaration:champ_nom_naiss_msgFor" class="rich-message"><span class="rich-message-label"></span></span></p>
</div>
</td>
 

CHALET53

XLDnaute Barbatruc
Re : Remplir un formulaire internet par macro

Pas évident pour moi
J'ai trouvé une procédure qui liste les objets (notamment les formulaires à remplir)
Sachant que la 1ère ligne est 0, cela nous donne l'indice i à appliquer derrière Helem(i) sous réserve d'accéder à la deuxième page

Sub ListeDesObjectsPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.Navigate "https://www1.due.urssaf.fr/declarant/index.jsf"
Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.Document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1
Range("A" & i + 1) = Helem(i).getAttribute("name")
Range("B" & i + 1) = Helem(i).getAttribute("value")
Next
End Sub
 

CHALET53

XLDnaute Barbatruc
Re : Remplir un formulaire internet par macro

En fait, dans mon programme qui me permet d'ouvrir la deuxième page du site bancaire, j'ai :
bien sûr mis directement l'adresse complète de cette deuxième page (au lieu et place de l'adresse de la 1ère page)
remplacé le click de validation par : SendKeys "{ENTER}", True
et ajouté derrière la boucle de recherche des champs :

For i = 0 To Helem.Length - 1
Range("A" & i + 1) = Helem(i).getAttribute("name")
Range("B" & i + 1) = Helem(i).getAttribute("value")
Next
 

jozerebel

XLDnaute Occasionnel
Re : Remplir un formulaire internet par macro

En fait, l'urssaf m' a communiquer un cahier des charges pour créer un fichier texte qui peut être intégré sur leur site...

Mais comme je ne suis pas informaticien, c'est du charabia pour moi...

La suite au nouvel épisode...
 

c.zaegel

XLDnaute Nouveau
Re : Remplir un formulaire internet par macro

Bonjour Jozerebel, Chalet53, le forum,

Je viens apporte ma petite contribution.
Donc voilà une fois arrivé à la page des déclarations j'ai ajouté une seconde d'attente pour que les champs soient pris en compte.
j'ai aussi ajouté des boucles pour remplir chaque champ l'un après l'autre sinon la macro ne fonctionne pas.

Ci-dessous le code que j'ai réadapté
Code:
Sub due()

Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

IE.Navigate ("https://www1.due.urssaf.fr/declarant/index.jsf")
Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop 'attend la fin du chargement
'remplissage du Siret
Set maPageHtml = IE.Document
IE.Document.getElementById("form_siret:form-grey-siret").innerText = "399xxxxxx00012"
'click sur valider
IE.Document.getElementById("form_siret:form-compte-submit").Click
Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop 'attend la fin du chargement

Dim a As Boolean

a = False

Application.Wait (Now + TimeValue("0:00:03"))
Do While a = False
IE.Document.getElementById("form_declaration:champ_nom_naiss").innerText = "Nom de naissance"
a = True
Loop
a = False
Do While a = False
IE.Document.getElementById("form_declaration:champ_nom_marital").innerText = "Nom marital"
a = True
Loop
a = False
Do While a = False
IE.Document.getElementById("form_declaration:champ_prenom").innerText = "Prénom"
a = True
Loop
a = False
Do While a = False
a = True
Loop

'Uniquement si salarié féminin :
IE.Document.getElementById("form_declaration:champ_sexe:1").Click

End Sub

Je pense qu'il y a encore moyen d'améliorer mais ça commence à fonctionner.

A+
 

Statistiques des forums

Discussions
312 976
Messages
2 094 099
Membres
105 938
dernier inscrit
Cubernicus