Importer un tableau d'une page Internet

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nonno 94

XLDnaute Occasionnel
Bonjour le Forum,😕

j'essaie sans succès de modifier le code suivant communiqué par Myta qui permet d'importer et copier 4 données d'une même ligne pour créer les 2 nouveaux codes suivants qui permettront d'importer :
- pour le premier 8 données situées sur une même ligne
- pour le second un tableau comportant environ 20 lignes de 8 données.

Pour expliciter ma demande, je joins un fichier exemple comprenant les 2 pages-sources Internet et les macros suivantes dont je ne parviens pas à modifier les codes :
- 'Lire_Ligne_SRD_Myta' qui "déraille" si étendu à l'import de plus de 3 valeurs
- et 'Lire_Tableau_SRD_Myta' qui "déraille" après l'import de la 1 ère valeur.

Le code de départ communiqué par Myta et qui permet d'importer 4 données situées sur une même ligne est le suivant :

Code:
Sub Lire_Ligne_SRD_Myta()

    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim HtmlTag As IHTMLElementCollection
    Dim Titre(2) As String, Valeur(2) As String
    Dim Cel As Range, I As Integer

    Sheets("Ligne SRD").Select
        ActiveSheet.Unprotect

    For Each Cel In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        IE.Navigate Cel
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
        Set IEDoc = IE.document

        Set HtmlTag = IEDoc.getElementsByTagName("td")

        Titre(0) = "ACCOR": Valeur(0) = "N/A"

        For I = 0 To HtmlTag.Length - 1
            If HtmlTag.Item(I).innerText = Titre(0) Then
              Valeur(0) = HtmlTag.Item(I + 1).innerText
              Valeur(1) = HtmlTag.Item(I + 2).innerText
              Valeur(2) = HtmlTag.Item(I + 3).innerText


                Exit For
            End If
        Next I
        Cel.Offset(0, 1) = Titre(0): Cel.Offset(0, 2) = Valeur(0): Cel.Offset(0, 3) = Valeur(1): Cel.Offset(0, 4) = Valeur(2) 
    Next Cel
   
         IE.Visible = False
   
    IE.Quit
    Set HtmlTag = Nothing
    Set IEDoc = Nothing
    Set IE = Nothing

        Range("B1").Select
            ActiveSheet.Protect
        
                ActiveWorkbook.Save

End Sub

J'avoue être découragé et m'en remets donc à vous pour me sortir de ce mauvais pas.
En vous remerciant par avance pour vos réponses.

Cordialement.
Nonno 94.
 
Re : Importer un tableau d'une page Internet

Bonsoir Myta et merci pour cette nouvelle réponse.

Cette modification est la seule que par incompétence je n'avais pas tentée.

Voici le code modifié :

Code:
Sub Lire_Ligne_SRD_Myta()

    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim HtmlTag As IHTMLElementCollection
    Dim Titre(2) As String, Valeur(6) As String              'Titre(2)
    Dim Cel As Range, I As Integer

    Sheets("Ligne SRD").Select
        ActiveSheet.Unprotect

    For Each Cel In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        IE.Navigate Cel
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
        Set IEDoc = IE.document

        Set HtmlTag = IEDoc.getElementsByTagName("td")

        Titre(0) = "ACCOR": Valeur(0) = "N/A"

        For I = 0 To HtmlTag.Length - 1
            If HtmlTag.Item(I).innerText = Titre(0) Then
              Valeur(0) = HtmlTag.Item(I + 1).innerText
              Valeur(1) = HtmlTag.Item(I + 2).innerText
              Valeur(2) = HtmlTag.Item(I + 3).innerText
              Valeur(3) = HtmlTag.Item(I + 4).innerText
              Valeur(4) = HtmlTag.Item(I + 5).innerText
              Valeur(5) = HtmlTag.Item(I + 6).innerText
              Valeur(6) = HtmlTag.Item(I + 7).innerText

              

                Exit For
            End If
        Next I
        Cel.Offset(0, 1) = Titre(0): Cel.Offset(0, 2) = Valeur(0): Cel.Offset(0, 3) = Valeur(1): Cel.Offset(0, 4) = Valeur(2): Cel.Offset(0, 5) = Valeur(3): Cel.Offset(0, 6) = Valeur(4): Cel.Offset(0, 7) = Valeur(5): Cel.Offset(0, 8) = Valeur(6)
    Next Cel
   
         IE.Visible = False
   
    IE.Quit
    Set HtmlTag = Nothing
    Set IEDoc = Nothing
    Set IE = Nothing

        Range("B1").Select
            ActiveSheet.Protect
        
                ActiveWorkbook.Save

End Sub

Pour une raison que je n'arrive pas à identifier, il ne lit pas la valeur 4 "Conseil" (Achat) qui n'est pas copiée en "G2" !

Les données importées sont les suivantes :

ACCOR 25,94printDevise ("action", "EUR");€ 05-mars 05-avr 10-juil 30,00 +15,65%

Je suis une nouvelle fois dépassé !!!

Au point où j"en suis, je vais oser insister et demander quelle modification apporter pour importer cette donnée puis abuser pour savoir quel code permettrait à la macro "Lire_Tableau_SRD_Myta" de lire dans sa totalité le tableau importé dans la feuille "Page 1 SRD".
La modification apportée à ce code soit :"Valeur(6) As String" n'ayant pas amélioré la lecture de la ligne "Valeurs" avec un résultat inchangé; à savoir : Valeurs et N/A dans les deux 1 ères cellules d'import.

Je vous renouvelle mes remerciements pour la pertinence de vos réponses mais également votre patience et votre .... indulgence.

En vous souhaitant un bon après-midi.

Cordialement.
Nonno 94.
 
Re : Importer un tableau d'une page Internet

Re Myta et le Forum,

je dois donc renoncer à lire cette donnée !
Je n'ose poser la question suivante: pourquoi peut-elle être lue lorsque la page Internet est importée puis copiée dans une feuille Excel (cf. feuille "Page 1 SRD" du fichier communiqué) ?

Dommage !

Nonno 94.
 
Re : Importer un tableau d'une page Internet

Bonsoir Myta, bonsoir le Forum,

merci pour cette nouvelle réponse et tant pis pour le "innerText".

c'est avec plaisir que j'ai lu votre réponse de ce matin (heure française) avec le code qui permet d'importer "très confortablement" un tableau d'une page Internet.
J'ai appris ainsi comment désigner un tableau dans une page.
Ne croyez pas que je ne fais pas d'efforts pour améliorer mes connaissances (très réduites) en vba; ce qui laisse espérer une grande marge de progression. Disons simplement que la méthode que j'utilise est très empirique et génère + d'erreurs que de succès mais je "m'accroche".

Je vais me permettre une dernière fois pour clore cette fructueuse discussion (rassurez-vous : vous n' allez pas perdre définitivement le "client pénible" que je ne voudrais pas devenir) de reposer la question qui reste en suspens dans l'autre discussion ("Lire un tableau dans une page Internet"); à savoir : la modification du code avec 2 boucles pour lire un tableau.
Mes nombreux essais se sont naturellement révélés infructueux et je suis donc déçu de devoir renoncer.


Je vous renouvelle mes plus chaleureux remerciements et vous souhaite un bon après-midi et une bonne fin de semaine.

Cordialement.
Nonno 94.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
252
Réponses
3
Affichages
600
Retour