Récupération valeur pour historisation

Bonjour à toutes et à tous

Je dispose d'un fichier récupérant en automatique une liste de valeur via API (requête mise à jour toutes les minutes).

Je fais ensuite, sur un autre onglet, tout un tas d'autres calculs se basant sur cette requête actualisée.

Les résultats de ces calculs sont disponibles dans l'onglet "Portfolio" et dans les cellules F20 à F25

Je souhaiterai trouver un moyen pour historiser ces données (toutes les minutes, à la même fréquence que ma requête) dans un autre onglet avec un timestamp en automatique

J'ai cherché du côté des formules mais je n'ai rien trouvé

Savez vous si cela est possible via VBA?

Un grand merci pour votre aide (et surtout bonnes fêtes de fin d'année )

Bonjour,

La réponse à ta question sera affirmative ...

Ce qui est réellement surprenant .. c'est la nature même de ta question ...

Car, d'après ta propre description de ton fichier actuel ...

ce que tu souhaites faire est exactement ce qu'accomplit actuellement ta macro ...

Merci pour ta réponse mais en fait non, déjà je n'ai pas de macro à date dans le fichier (uniquement une API)

Et en fait ce que je souhaite c'est que les valeurs se figent toutes les minutes, après chaque actualisation et qu'un historique soit disponible

à 16h50, la valeur est de 100, puis à 16h51 la valeur est de 90 --> Dans un onglet séparé j'aimerai voir 16h50 : 100 et ligne du dessous, 16h51, 90

Je ne sais pas si c'est plus clair

Bonsoir

Et peut-être un petit fichier pour nous ??

Merci

Hello

Merci pour ta réponse

Voici un fichier d'exemple

J'ai mis des commentaires dans les cellules pour expliquer un peu plus

Merci !!

26classeur1.xlsx (21.30 Ko)

personne pour me répondre

Bonsoir

A part cela :

Données actualisées automatiquement

je ne vois aucun commentaire

D'autre part je ne vois que des données fixes , aucune automatisation....???

J'abandonne pour l'instant, réveillon oblige

Bon courage et joyeux réveillon

Bonjour,

un début de réponse

il faudrait maintenant relier cette macro à la fréquence de réactualisation des données

22classeur1.xlsm (21.88 Ko)

Hello,

des nouvelles ?

Hello

Merci pour ce fichier

je viens de regarder, et les valeurs historisées sont celles de la colonne B et non de la colonne C ("Valorisation Actuelle")

Par ailleurs, quels paramètres dois-je modifier pour que la fréquence d'historisation soit calquée sur la fréquence de mise à jour de la requête?

Merci encore pour ton aide!

Change la macro comme ceci pour la colonne C :

Sub historique()

With Sheets("Historisation")
    ligne = .Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
    horodatage = Now
    For i = 2 To 8
        .Cells(ligne + i - 2, 1) = Cells(i, 1)
        .Cells(ligne + i - 2, 2) = Cells(i, 3)
        .Cells(ligne + i - 2, 3) = Int(horodatage)
        .Cells(ligne + i - 2, 4) = horodatage - Int(horodatage)
    Next
End With

End Sub

Par ailleurs, quels paramètres dois-je modifier pour que la fréquence d'historisation soit calquée sur la fréquence de mise à jour de la requête?

Ajoute à la fin de la mise à jour par la requête :

historique

Hello

Merci pour ta réponse

J'ai encore un petit souci, en fait les valeurs C2 à C7 de l'onglet Data ne sont pas des valeurs "en dur" comme dans mon fichier d'exemple mais des valeurs liées à un autre onglet du classeur. Du coup quand j'execute la macro, Excel ne me rappatrie pas les données qui sont en dynamiques dans l'onglet "Data"...

Tu sais d'où cela vient?

Enfin, pour ce qui est du refresh, en fait ce n'est pas une macro qui met à jour la table issue de l'API (mais le paramètre même de la requête API), je ne peux donc pas rajouter la ligne de code suggérée...

Bonjour

Pour le point 1

Sub historique()

With Sheets("Historisation")
    ligne = .Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
    horodatage = Now
    For i = 2 To 8
        .Cells(ligne + i - 2, 1) = Cells(i, 1)
        .Cells(ligne + i - 2, 2) = [b]Cells(i, 3)[/b]
        .Cells(ligne + i - 2, 3) = Int(horodatage)
        .Cells(ligne + i - 2, 4) = horodatage - Int(horodatage)
    Next
End With

End Sub

Quant au point 2, comment pouvons-nous connaître cette fréquence ?? Est-ce une fois par jour ou faut-il juste se fier à la modification des données de "DATA" ??

A+

J'ai encore un petit souci, en fait les valeurs C2 à C7 de l'onglet Data ne sont pas des valeurs "en dur" comme dans mon fichier d'exemple mais des valeurs liées à un autre onglet du classeur. Du coup quand j'execute la macro, Excel ne me rappatrie pas les données qui sont en dynamiques dans l'onglet "Data"...

Tu sais d'où cela vient?

Sauf erreur de ma part, ceci

        .Cells(ligne + i - 2, 1) = Cells(i, 1)
        .Cells(ligne + i - 2, 2) = Cells(i, 3)

recopie la valeur ...

si c'est la formule, alors il faut recopier "avec liaison".

Enfin, pour ce qui est du refresh, en fait ce n'est pas une macro qui met à jour la table issue de l'API (mais le paramètre même de la requête API), je ne peux donc pas rajouter la ligne de code suggérée...

Dans ce cas, il faudrait mettre une macro événementielle du type

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' ...
end sub

pour lancer historique

Effectivement, la macro actuelle recopie uniquement les données, mais pas avec liaison

Que rajouter dans le code pour recopier avec liaison?

Pour le point 2, je vais essayer la macro événementielle alors

Merci à tout le monde !

Remplace

        .Cells(ligne + i - 2, 1) = Cells(i, 1)
        .Cells(ligne + i - 2, 2) = Cells(i, 3)

par ceci :

        .Cells(ligne + i - 2, 1).Copy
        Cells(i, 1).Select
        ActiveSheet.Paste Link:=True

        .Cells(ligne + i - 2, 2).Copy
        Cells(i, 3).Select
        ActiveSheet.Paste Link:=True

pas testé de mon côté ...

Merci pour la réponse

Cela ne fonctionne pas du tout et détériore le fichier (des copier coller bizarre sont réalisés)

Voici donc attaché le vrai fichier.

6coins-test.xlsm (96.74 Ko)

Ce que je souhaiterai, c'est que, les cellules D20 à D25 de l'onglet "Portfolio" s'historisent dès que l'onglet "zzRAW DATA" est modifié (cet onglet est issu d'une requête API mise à jour toutes les minutes.

Je souhaite que ces données historisées soient recopiées en dur dans l'onglet "Historisation" pour pouvoir garder un historique de la valeur d'un portefeuille à un instant T

Est ce que cela vous semble faisable?

J'ai essayé les différentes lignes de code (présentes dans le fichier joint) mais cela ne fonctionne pas...

Un énorme merci pour votre aide!!

Private Sub Worksheet_

doit se mettre dans la feuille "Portfolio"

je vais regarder cela ce soir

et ce n'est pas Worksheet_SelectionChange, désolé je t'ai induit en erreur, mais Worksheet_Change

question :

y a t'il quelque part un indicateur de réactualisation, par exemple une heure ?

y a t'il quelque part un indicateur de réactualisation, par exemple une heure ?

En fait c'est dans le paramètre de la requête, tu peux spécifier la fréquence d'actualisation. Elle est de 1 minute dans le fichier actuel

merci encore pour ton aide!

Ce que je souhaiterai, c'est que, les cellules D20 à D25 de l'onglet "Portfolio" s'historisent

Pour Module2, reviens à ceci :

Sub Historique()

With Sheets("Historisation")
    ligne = .Cells(Application.Rows.Count, 1).End(xlUp).Row + 1
    horodatage = Now
    For i = 20 To 25
        .Cells(ligne + i - 20, 1) = Cells(i, 2)
        .Cells(ligne + i - 20, 2) = Cells(i, 4)
        .Cells(ligne + i - 20, 3) = Int(horodatage)
        .Cells(ligne + i - 20, 4) = horodatage - Int(horodatage)
    Next
End With

End Sub

je continue de regarder pour synchroniser

Rechercher des sujets similaires à "recuperation valeur historisation"