XL 2019 Rafraîchissement et enregistrement automatique d'un classeur excel

loulou81012

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord je tiens à dire que je suis novice en la matière et je me suis assez perdu quant à la façon de réaliser mon projet.

Donc j'ai récemment monté un petit serveur dans le but d'enregistrer des cotations boursières.

J'ai donc créé un fichier excel qui récupère les cotations mais voilà je me heurte à certaines difficultés techniques voici ce que je cherche à faire :

- Enregistrer toutes les 5 minutes le classeur avec les données mises à jour
- Que ce classeur soit enregistré avec son nom + la date du jour + l'heure

Sur ce point j'ajouterais deux cellules une pour la date du jour et une pour l'heure.

J'ouvrirai manuellement ce classeur lors de la semaine mais je souhaite aussi quelque chose :
- Que l'enregistrement commence uniquement à 9 h pour finir à 17 h 30 (heure du CAC 40)

Au niveau de l'enregistrement toute les 5 minutes j'ai trouver ce topic :


Maintenant je ne sais pas comment ajouter au nom du classeur la date et l'heure ainsi que de respecter l'heure de cotation et n'enregistrer que après le rafraîchissement.

Pour le rafraîchissement je tombe toujours sur les macros quand je fais des recherches mais je ne sais pas si cela correspond à mes besoins car je souhaite que l'enregistrement toutes les 5 minutes soit fait uniquement après le rafraîchissement donc si je mets une macro qui me permet de rafraîchir toutes les 5 minutes et que cela enregistre avant le rafraîchissement je vais fausser mes données !

Donc voilà, si certains ont des pistes ou peuvent m'indiquer des boucles et fonctions possibles pour mon projet n'hésitez pas à m'en faire part pour que je puisse essayer de faire un code en VBA qui fonctionne :)
 

Pièces jointes

  • Bourse.xlsx
    254.3 KB · Affichages: 5

loulou81012

XLDnaute Nouveau
Voilà ce que j'ai commencé

VB:
Sub save_resfresh_auto()

    Dim date_heure As Variant, heure As Variant
   
    date_heure = Format(Now(), "yyyy-mm-dd'T'HH:mm:ss")
    heure = Format(Time(), "h:mm:ss")
   
        If [0,375 =< heure =< 1723/1416] Then
           
        Else
    End If
   
   
End Sub

J'ai donc converti l'heure en décimal et mis une condition si nous sommes entre 9 h et 17 h 30 alors ...
La variable date_heure est elle pour l'enregistrement du fichier

Maintenant je pense qu'une boucle while serait plus judicieuse pour dire tant que je suis dans ces horaires alors ....

N'hésitez pas à me dire si je me trompe, si je suis sur la mauvaise voie où que je suis sur la bonne.

Merci :)
 
Dernière édition:

loulou81012

XLDnaute Nouveau
J'ai avancé sur une première partie :

VB:
Sub FileSave()

    ActiveWorkbook.RefreshAll
    ActiveWorkbook.SaveAs ("C:\Users\mclls\Documents\Data\CAC_40" & Format(Now(), " DD MM YYYY hh mm ss") & ".csv")

End Sub


Sub Repeat_VBA()
    Application.OnTime Now + TimeValue("00:05:00"), "FileSave"
End Sub

Mon code est un peu aléatoire il n'enregistre pas toutes les 5 minutes, et je me rends compte que je ferais mieux d'extraire le tableau et l'enregistrer dans un nouveau classeur plutôt que d'enregistrer celui que j'ai comme cela viens de données externes et je souhaiterais que les données enregistrer soient "figées"

Aussi j'ai mis csv comme extension et je ne sais pas si c'est la meilleure idée, je souhaite pouvoir exploiter ensuite mes fichiers avec R ou python.
 

Discussions similaires

Statistiques des forums

Discussions
314 771
Messages
2 112 765
Membres
111 653
dernier inscrit
Vanie0082