Modifier un fichier pour télécharger des données d'internet

Bonjour,

J'ai un petit souci lors de la mise à jour d'un fichier créé par Steelson pour télécharger des cours de bourse.

En effet, il télécharge les cours en provenance de Boursorama avec des chiffres ronds sans les décimales . Exemple Air Liquide cours 164,3 fichier = 164,00

Si quelqu'un peut résoudre ce problème, je joins le fichier en document attaché

Par avance, je vous remercie pour toute votre aide

Cordialement

Qataror

Bonjour qataror,

Un essai mouliné par ChatGPT,...

Sub MajCotations()
    Dim i As Integer, k As Integer, URL As String, COT() As Double
    k = Cells(Rows.Count, [REF].Column).End(xlUp).Row
    Range(Cells(2, [Cotation].Column), Cells(k, [Cotation].Column)).Clear

    Dim avant As String, apres As String
    avant = "</div><div class=""c-ticker__item c-ticker__item--value"">"
    apres = "<span class=""c-ticker__currency"">"

    On Error Resume Next
    For i = 2 To k
        DoEvents
        ReDim Preserve COT(1 To k)
        URL = Cells(i, [WWW].Column).Value
        Application.StatusBar = "Mise à jour des cotations en cours …"
        On Error Resume Next
        With CreateObject("MSXML2.XMLHTTP")
            .Open "GET", URL, False
            .Send
            If .Status = 200 Then
                COT(i) = CDbl(Split(Split(.responseText, avant)(1), apres)(0)) ' CDbl pour les décimales
            End If
        End With
        Application.StatusBar = False
        Cells(i, [Cotation].Column).Value = COT(i)
    Next i
End Sub

Bizz

Merci Bizarre,

Ce que je crois comprendre, c'est d'attacher votre VBA pour avoir un fonctionnement correct du fichier ?

Cordialement

Bonjour qataror,

En fait, il n'y a qu'une ligne à modifier dans le module cotisations, dans la macro "Sub MajCotations()".

Steelson a fait du bon boulot.

avant : (pas de décimale, c'est le souci à corriger)

If .Status = 200 Then COT(i, 1) = Val(Split(Split(.responseText, avant)(1), apres)(0))

Une fois modifiées par ce qui suit, les décimales s'affichent correctement, c'est l'ajout de CDbl = lire la valeur au format "Double" avant de la comparer, qui fait la différence.

La condition "If" peut être écrite sur une ligne ou en trois lignes :

If .Status = 200 Then COT(i) = CDbl(Split(Split(.responseText, avant)(1), apres)(0)) ' CDbl pour les décimales

Ou écrit ainsi :        
If .Status = 200 Then  
    COT(i) = CDbl(Split(Split(.responseText, avant)(1), apres)(0)) ' CDbl pour les décimales
End If

Bizz

Bonjour Bizarre,

Merci pour votre réponse et j'ai tout compris sans être un spécialiste des VBA.

Cela fonctionne parfaitement !!

Effectivement, Steelson a fait un excellent travail et à plusieurs reprises car Boursorama change souvent le format.

Merci encore de m'avoir dépanné. Cela change dans mes données.

Très cordialement

Bonjour Bizarre,

Je me permets de vous recontacter pour vous poser une question.

C'est au sujet du fichier crée par Steelson que vous avez amélioré. Pour une mise à jour de celui-ci, je dois cliquer sur le pavé "mise à jour".

Ma question est : est-il possible de déclencher automatique la "mise à jour" automatiquement toutes les 5 ou 10 minutes ?

Par avance, je vous remercie pour votre attention

Cordialement

Qataror

PS : je joins le fichier excel concerné en attaché

Bonjour qataror,

À mi-chemin, 00:07:30 est-ce bon ?

Un essai :

Bizz

Bonsoir Bizarre,

Merci pour ta rapide intervention.

Par contre, lorsque je veux ouvrir le fichier, celui-ci se referme aussitôt. Je travaille avec excel 2003, cela serait-il la raison ?

As-tu une autre idée ? Sinon, je reste en manuel.

Merci encore et bonne soirée

Qataror

Bonjour,

Effectivement, il est possible que le code du "Timer" soit trop moderne.

Dès que j'ai une minute, je cherche pour un code de "Timer" qui fonctionnerait bien sous Excel 2003.

Bizz

Bonjour qataror,

Le bouton "Mettre à jour" déclenchera la mise à jour et le Timer.

Le bouton "Arrêter les mises à jour" arrêtera le Timer, donc les mises à jour.

Espérant que cette version fonctionnera sous Excel 2003.

Bizz

Bonjour Bizarre,

EXTRAORDINAIRE !! Cela marche même avec office 2003.

Merci infiniment.

Je tiens à signaler à ceux qui lisent, ceux qui sont intéressés par la bourse, que mes fichiers bourse ( PEA, Américain, Etf, etc....) sont disponibles.

Gratis, il va sans dire.

Bonne journée

Amitiés Qataror

Désolé Bizarre,

J'ai un petit (?) bug pendant la mise à jour automatique qui est apparu dans la macro arrêtant celle-ci.

Est-ce grave docteur ?

Merci

image

Bonjour,

Je ne saurai dire.

Pas de version 2003 pour évaluer.

Quand exactement cela se produit-il ?

Bizz

Après trois ou quatre bugs avant mon message, finalement, il a très bien fonctionné jusqu'à la clôture.

On verra demain

Bonne soirée

Cordialement Qataror

Bonjour,

Quand il bogue, est-ce en démarrant les mises à jour, où après quelques minutes ?

Il faut observer le plus de détails possible afin de situer le souci.

Bizz

Bonjour Bizarre,

Suite à ta question :

Il bogue au lancement de la mise à jour du fichier

Voici ce qui apparait à l'écran si cela peut aider.

Merci pour ton aide

Cordialement

image

Bonjour,

Personnellement je refaire Val à Cdbl car CDBL prend en charge les paramètres régionaux et pas VAL!

 If .Status = 200 Then COT(i, 1) = Format(Val(Replace(Split(Split(.responseText, avant)(1), apres)(0), ",", ".")), "#0.000")

Bonjour,

Et en cliquant sur le bouton "Débogage", cela nous amène bien ici :

1544239

Bizz

Oui, Bizarre

Bonjour,

Une nouvelle version où j'ai appliqué la suggestion de dysorthographie, que je remercie pour son apport.

J'ai aussi modifié la ligne concernée ainsi :

Avant : k = Cells(Rows.Count, [REF].Column).End(xlUp).Row

Après : k = Cells(Rows.Count, 1).End(xlUp).Row

Qui pourrait aussi être : k = Cells(Rows.Count, "A").End(xlUp).Row

Bizz

Rechercher des sujets similaires à "modifier fichier telecharger donnees internet"