Valeurs multiples dans code HTML dont les balises sont identiques
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" )
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 !!!!!!!!!!!!!!!!
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 SubBonjour,
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 ?
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 SubMerci

