Valeurs multiples dans code HTML dont les balises sont identiques

Idem

image

c'est quoi votre séparateur dans vos option d'excel ?

BArt, ca tourne :-)

c'est nos séparateurs de décimal qui ne sont pas identiques, cela pourrais aussi expliquer pour depuis le début vos fichiers ne fonctionne pas chez moi

ca marche nickel

Il me reste désormais à bien comprendre chaque ligne et je vais faire mumuse avec ce code pour aller chercher une valeur supplémentaire , pas par besoin mais pour etre sur que j'ai bien compris vos enseignements

Un immense merci à vous 2

J'ai une petite question ( qui n'était pas dans "cahier des charges" ) j'ai quand même le droit de la poser ?

re,

oui, posez-la ...

vous pouvez continuer avec l'avant-dernière version, parce que la dernière est une en ralenti.

Ce qui me parait bizarre dans la ligne avec l'erreur, c'est qu'on remplace une virgule par ... une virgule, peut-être je dois aller chercher dans ma première version ...

 aOut(LiG, E) = CDbl(Replace(Left(sp(0), Len(sp(0)) + b), ",", ",")) * IIf(b, 0.01, 1)  

bon, supér ...

Bonjour,

pouvez vous la republier parce qu' avec toutes les versions qu'on a déposé ces derniers jours j'ai peur qu'on se plante et vu que ca fonctionne je voudrais pas avoir à tout refaire

ps: finalement j'ai plus de questions :-)

voici cette version et c'est à vous d'adapter la ligne ici dessous, pourque cela fonctionne chez vous. Donc vous prenez cette ligne de votre macro et vous la collez ici.

  aOut(LiG, E) = CDbl(Left(sp(0), Len(sp(0)) + b)) * IIf(b, 0.01, 1)     'valeur éventuellement divisé par 100 pour les pourcentages  >>>>>>>>>>>>>SANS CE REPLACE !!!!!!!!!!!!!!!!

                           
10fred-v1.xlsm (96.93 Ko)

Bonjour juste en passant

je ne sais pas ce que vous cherchiez a faire exactement avec le dernier code

mais de mon coté comme je l'ai dit j'affiche les valeurs tel qu'elles sont dans les pages web sauf que les valeur elles sont numérique

BsAlV le scurr ne fonctionne pas chez moi la colonne 13(la "AR") reste vide

la valeur de la devise (EUR,USD,etc...) c'est simple c'est le split(1) de la valeur dans le trs(1).cells(1).innertext coupée par l'espace c'est tout

pour les format comme je l'ai dit et déjà montré tu fait un tableau identique avec les valeur réelles que tu applique en tant que format

pour le séparateur décimal virgule ou point

pour vba que se soit pour les versions francaise ou US de excel le séparateur c'est le point je dis bien pour vba

donc on fait un replace "," par le "."

et une question hors contexte

pourquoi sur vos fichier je n'arrive pas a ré afficher la scrollbar horizontal en bas

je galère pour scroller

Function GetHtmlcode(UrL As String)
    On Error Resume Next
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", UrL, False
        .Send
        If .Status = 200 Then
            GetHtmlcode = .responsetext
        End If
    End With
End Function

Sub m_GO()
    Dim tbl, UrL$, Codehtml, oTable, TableHtmL, TRS, LiG&, C&, E&, A&, Unit$, LO, aOut, I&, Col&, ValeuR

    Set LO = Range("tableau_cotations").ListObject 'avec un tableau structuré, il ne faut plus spécifier la feuille
    tbl = Range("tableau_cotations").Resize(, 3).Value 'seulement les 3 premières colonnes sont intéressant ici
    ReDim aOut(1 To UBound(tbl), 1 To 13) 'on écrit vers cette matrice temporaire (qui est vide pour commencer)
    ReDim aoutformat(1 To UBound(tbl), 1 To 13)

    For LiG = 1 To UBound(tbl)
        UrL = tbl(LiG, 3) '<<<<<<<<<<<<<<<<<< 3eme colonne du tableau !!!!
        Application.StatusBar = LiG & " des " & UBound(tbl) & ", Téléchargement des données de : " & tbl(LiG, 1)
        Codehtml = GetHtmlcode(UrL)
        With CreateObject("htmlfile")
            .body.innerhtml = Codehtml

            Set TableHtmL = Nothing
            For Each oTable In .getelementsbytagname("TABLE") 'boucler chaque tableau
                If InStr(1, oTable.innertext, "Bénéfice net par action") > 0 Then Set TableHtmL = oTable 'tableau contient ce texte
            Next oTable

            If Not TableHtmL Is Nothing Then
                Set TRS = TableHtmL.getelementsbytagname("TR")
                E = 0
                'unité de valeur(EUR,USD,etc...)
                Unit = Split(TRS(1).Cells(1).innertext & " ", " ")(1): aOut(LiG, UBound(aOut, 2)) = Unit
                For trl = 1 To TRS.Length - 1
                    A = 3
                    For C = 1 To 3
                        E = E + 1
                        ValeuR = Trim(TRS(trl).Cells(C).innertext) & "  "
                        ValeuR = Replace(Replace(ValeuR, "%", " %"), ",", ".")
                        aOut(LiG, E) = Val(Split(ValeuR, " ")(0))
                        aoutformat(LiG, E) = TRS(trl).Cells(C).innertext
                    Next
                Next
            End If
        End With
    Next

    With LO.ListColumns("div2k23").DataBodyRange.Resize(, 13)
        .Value = aOut 'maintenant on n'écrase que ces 13 colonnes AF:AQ
        For I = 1 To UBound(aoutformat)
            For Col = 1 To UBound(aoutformat, 2)
                On Error Resume Next
                If Trim(aoutformat(I, Col)) <> "" Then .Cells(I, Col).NumberFormat = Chr(34) & aoutformat(I, Col) & Chr(34)
                Err.Clear
            Next
        Next
    End With
    Application.StatusBar = False
End Sub

Bonjour,

de retour sur le sujet :-)

Pourriez vous m'aider à identifier dans le lien suivant comment ajouter ces 2 valeurs que je souhaiterais récupérer ?

image

Voici la macro utilisée sur cette page :

Sub m_GO()
     Dim tbl, UrL$, Codehtml, oTable, TableHtmL, TRS, LiG&, C&, E, A&, b, sCurr, sp, LO, aOut, s

     Set LO = Range("tableau_cotations").ListObject     'avec un tableau structuré, il ne faut plus spécifier la feuille
     tbl = Range("tableau_cotations").Resize(, 3).Value     'seulement les 3 premières colonnes sont intéressant ici
     ReDim aOut(1 To UBound(tbl), 1 To 13)   'on écrit vers cette matrice temporaire (qui est vide pour commencer)

     For LiG = 1 To UBound(tbl)
          UrL = tbl(LiG, 3)                  '<<<<<<<<<<<<<<<<<< 3eme colonne du tableau !!!!
          Application.StatusBar = LiG & " des " & UBound(tbl) & ", Téléchargement des données de : " & tbl(LiG, 1)  ' indique le nom de l'action de la cellule 1
          Codehtml = GetHtmlcode(UrL)
          With CreateObject("htmlfile")
               .body.innerhtml = Codehtml

               Set TableHtmL = Nothing
               For Each oTable In .getelementsbytagname("TABLE")     'boucler chaque tableau
                    If InStr(1, oTable.innertext, "Bénéfice net par action") > 0 Then Set TableHtmL = oTable     'tableau contient ce texte
               Next oTable

               If Not TableHtmL Is Nothing Then
                    s = Application.StatusBar
                    Set TRS = TableHtmL.getelementsbytagname("TR")
                    E = 0
                    sCurr = ""
                    For trl = 1 To TRS.Length - 1
                         A = 3
                         For C = 1 To 3
                              E = E + 1
                              sp = Split(Trim(TRS(trl).Cells(C).innertext))     'séparer avec l'espace
                    Application.StatusBar = s & "  " & E & "   " & sp(0)
                    attendre
                               b = (Right(sp(0), 1) = "%")     'drapeau dernier charactère est %
                              aOut(LiG, E) = CDbl(Replace(Left(sp(0), Len(sp(0)) + b), ",", ".")) * IIf(b, 0.01, 1)     'valeur éventuellement divisé par 100 pour les pourcentages
                              If UBound(sp) >= 1 Then sCurr = sp(1)     'si le currency est connu, mémorisez-le
                         Next
                    Next
                    aOut(LiG, UBound(aOut, 2)) = sCurr     'currency, dernière colonne
               End If
          End With
     Next

     LO.ListColumns("div2k23").DataBodyRange.Resize(, 13).Value = aOut     'maintenant on n'écrase que ces 13 colonnes
     Application.StatusBar = False

End Sub

Sub attendre()
Dim t0, t1
t0 = Timer
t1 = Timer + 0.3
Do
DoEvents
Loop While t0 <= Timer And Timer < t1
End Sub

Merci

Bonjour ,

je galere sur une erreur au niveau du SPLIT

image

je n'arrive pas à comprendre cette variable aOut (Lig, E) , cela afin de modifier mon split ..

Rechercher des sujets similaires à "valeurs multiples code html balises identiques"