Contrôle Internet Explorer via VBA

Fermé
fyds - 7 août 2012 à 16:26
Geredonis Messages postés 1 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 18 avril 2013 - 18 avril 2013 à 11:48
Bonjour,

Je travaille sous Excel Office 2007 et IE.7.

Voici une macro :

Là ou se trouve les #, je souhaiterai récupérer la valeur donnée par la calculatrice sollicitée.
Selon les valeurs inscrites en exemple, la valeur en question est 50.

Je suis comptable et non informaticien et malgré le tutoriel de Interaction avec Internet Explorer via VBA Excel de Qwaerty, je ne solutionne pas mon problème.
Que l'on pourra aussi reformulé ainsi : "Je ne panne que dalle!"

Quelqu'un pourrait-il m'aider ? Ou même me donner la réponse clé en main, s'il vous plait ?

Cette petite fonction est la petite touche en plus que demande mon boss ...
Sauf que moi, j'ai pour habitude de ne faire que des choses basiques et maitrisées autant qu'il se peut.
Donc, j'ai envie de tuer mon boss ... ayez pitié pour lui ! :)

J'offre mon aide dans un domaine comptable ou fiscal en contre-partie compte tenu de ma demande de fénéant.

Si toutefois, vous ne voulliez pas m'indiquer plus que des pistes, je prends quand meme. J'apprécierai malgré tout le temps que vous pourriez m'accorder.



Sub rfpaye()
' Radiation mutuelle et prévoyance
' Nécéssite l'activation de la référence Microsoft HTML Objects Library
' Nécéssite l'activation de la référence Microsoft Internet Controls
Dim IE As New InternetExplorer, htmlChkB As HTMLSelectElement
Set IE = CreateObject("InternetExplorer.Application")

IE.Navigate "http://rfpaye.grouperf.com/calcul/?fichier=indemnites&type=1"
IE.Visible = True
Call WaitIE(IE)

With IE.Document
.all("type").selectedIndex = 2
.all("SMR").Value = 100
.all("ans").Value = 10
.all("mois").Value = 1
Dim Bouton As Object
For Each Bouton In .getElementsByTagName("INPUT")
If Bouton.Value = "Calculer les indemnités" Then Bouton.Click
Next Bouton

Call WaitIE(IE)


'##################################################


End With

' Libération de la mémoire
Set Bouton = Nothing
Set HTMLTagCollection = Nothing
Set IE = Nothing

End Sub
Private Sub WaitIE(IE As InternetExplorer)
Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
End Sub
A voir également:

4 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 7/08/2012 à 19:04
Bonjour,
Tu veux une piste... d'accord, je ne maîtrise pas cette fonctionnalité mais il me semble que tu pose très bien la question mais que tu "oublie" de réceptionner la réponse.
Donc en 1 .. question posée sur la page .. OK.
En deux??? pas de questionnement sur le résultat.
Et compte pas sur moi pour avoir plus de détails.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Bonjour lermitte222,

Je ne questionne pas le résultat car je ne sais pas comment faire. J'ai supprimé mes tentatives afin de ne pas surcharger le post.
L'input qui le contient n'a pas de nom.
Impossible donc de récupérer sa valeur de la même façon que j'alimente les autres TextBox.
J'ai tenté de boucler les elements obtenu dans la collection getElementsbyTagName("INPUT"), mais je ne n'arrive pas à déterminer le numéro de l'item qui m'interesse. J'ai bien compris que les collections s'étendent de 0 à n-1. OU alors, la "permission" m'est refusée.
Voilà en quoi je suis perdu.
Je me suis interrogé sur une dernière méthode qui aurait été de trouver la "cellule" contenant l'input, mais la ... j en'ai pas les connaissances pour, et compte tenu des réformes fiscales et sociales que Monsieur François Hollande met en place en ce moment en réponse au quinquennat de Monsieur Nicolas Sarkozy, j'ai d'autres sujets d'études prioritaires ...
J'espère tout de même trouver.

Merci d'avoir pris la peine de poster une réponse.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 août 2012 à 12:43
Re,
J'ai quand même examiné ton code, le résultat se trouve dans l'élément "indemnites"
mais dés que tu lance l'action par 'Bouton.click' le code est verrouillé, normal, c'est pour éviter les robots et de ce fait, plus moyen d'avoir accès au résultat.
Peut-être en s'inscrivant sur le site ? mais pas garanti, je dirais même, improbable.
A+
0
Geredonis Messages postés 1 Date d'inscription jeudi 18 avril 2013 Statut Membre Dernière intervention 18 avril 2013
18 avril 2013 à 11:48
Bonjour,

En recherchant une solution à mon problème identique au tien, j'ai trouvé une réponse avec l'aide de tiers à ton problème. Voici le code :

Dim INP As HTMLInputElement
For Each INP In IE.document.getElementsByTagName("Input")
If LCase(INP.Value) Like "*calculer les*" Then
Debug.Print IIf(INP.parentElement.parentElement.childNodes(1).getElementsByTagName("INPUT").Item(0).Value = "", "Rien", INP.parentElement.parentElement.childNodes(1).getElementsByTagName("INPUT").Item(0).Value)
Exit For
End If
Next

J'espère que cela te sera utile.
Geredonis
0