VBA-récupérer une donnée sur internet, pb car plusieurs classes de meme nom

cs_cecile64 Messages postés 15 Date d'inscription vendredi 15 juin 2012 Statut Membre Dernière intervention 17 août 2012 - 16 août 2012 à 10:24
rackamlerouge Messages postés 13 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 7 octobre 2013 - 7 oct. 2013 à 15:25
Bonjour à tous, j'ai créé un code en vba qui se connecte à internet, et je veux recupérer la valeur d'un taux. le probleme c'est que j'ai un tableau et la classe "directe" du taux que je veux (celui de la première ligne) est la meme pour tous les taux de toutes les lignes... du coup je ne sais pas comment l'appeler et récuperer ce taux.

le code html de ma page web à l'endroit ou je veux récupérer le taux est le suivant :
table class="listeContrats">

        		<tr>
        			<th>Date

</th>
<th>EURIBOR12M

</th>
<th>EONIA

</th>
<th>EURIBOR12M - EONIA

</th>
        		</tr>
        			
        		<tr class="r1">
        			<td>01/01/13

</td>
        			<td>3,475

</td>
        			<td>3,109

</td>
        			<td>0,367

</td>
        		</tr>
        		
        		<tr class="r2">
        			<td>01/01/14

</td>
        			<td>3,867

</td>
        			<td>3,534

</td>
        			<td>0,333

</td>




le taux que je veux récupérer est le taux dans le tableau qui a la classe "listecontrats", dans la classe "r1" (correspondant à la ligne 1 du tableau) et a la sous classe "tdc" ( sa valeur vaut ici 3.475).

Comme vous pouvez le voir, les valeurs ont toutes le meme nom de classe, jai laissé le code html de la ligne 2 "r2" pour vous montrer mon probleme (car à long terme je souhaiterais aussi récupérer le taux de la ligne 2, puis la ligne 3, etc... mais chaque chose en son temps :) ).

Je pense que mon problème est simplep our quelqu'un qui s'y connait dans ce genre de programmation. Pour info j'ai essayé avec le code suivant :

' il y a un changement de page
 Set pageInternet = IE.Document

    'récupération des objets "tr"
    Set Lignes = pageInternet.getElementsByTagName("tr")
    'on boucle pour retrouver le champ date de la form
    For i = 0 To lesEntrees.Length - 1
        'pour la recherche on utilise le nom de la classe de la ligne 1
        If lesEntrees(i).className = "r1" Then
            'le WaitIE plus haut ne suffit pas à garantir que la page à pris en compte la nouvelle valeur de date
            'on vas donc boucler pour verifier
            Do
                Set laCase = lesEntrees(i).getelementbyclassname("tdc")(0)
                Application.Wait Now + TimeValue("0:00:01")
                DoEvents
            Loop Until laCase = lesEntrees(i).getelementbyclassname("tdc")(0)
            Exit For
        End If
    Next


mais j'ai un message d'erreur : permission refusée....

Si vous pouviez m'aider ce serait super !

Merci d'avance !

Cécile

1 réponse

rackamlerouge Messages postés 13 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 7 octobre 2013 1
Modifié par rackamlerouge le 7/10/2013 à 15:26
Message d'erreur sur quelle ligne ?
Le code ne me semble pas cohérent. Exemple quelles valeurs pour lesEntrees.Length - 1 ?

Mais bon peu importe. Lorsque j'ai tenté de récupérer des infos sur une page j'ai fait un truc du style :

Taux_r1 = lesEntrees(i).getelementbyclassname("r1").all(1).innertext

ou

Taux_r1=IE.Document.getelementbyclassname("r1").all(1).innertext

Ou

getElementById("xxxx") permet d'avoir les élements par id

L'idée étant la suivante :
Le All(x) permet de recupérer un des éléments de la classe, le innertext de récupérer le texte de la valeur
0
Rejoignez-nous