Modif automatique de cellules + recalcul de macros

Bonjour à tous,

Je suis actuellement en stage et je réalise une sorte de modèle de performances de la centrale de production d'électricité dans laquelle je travaille.

Pour ce faire, je me sers exclusivement de fonction VBA (je n'y connaissais rien il y a un mois) pour établir des modèles mathématiques type rendement ect.

Après mon départ, le fichier est censé fonctionner seul, pour que les opérateurs puissent visualiser les performances tracées en temps réel.

Les entrées de mes fonctions sont des mesures de capteurs auxquelles j'ai accès grâce au Serveur de Base De Données de l'entreprise. Il est nécessaire pour cela d'entrer la période de temps pour laquelle je souhaite afficher ces données.

Dans la première capture d'écran ci-jointe, vous pouvez voir comment cela s'articule. Je dois indiquer la date de début ainsi que la date de fin, au format : Mois/Jour/Année Heure:Minute (dans la capture d'écran, de 5/24/2017 15:00 à 5/24/2017 16:00). La fréquence d'échantillonage est la minute.

J'aimerai pouvoir changer automatiquement ces cellules, c'est à dire effectuer un glissement de temps d'une période de 24 heures pour commencer. (je pense qu'une fois que la fonction est réalisée il est facile de changer ensuite).

Ensuite l'idée serait de calculer automatiquement tous mes rendements à une fréquence de 10 minutes.

C'est à dire fait un premier calcul à 15h10, puis 15h20, puis 15h30... jusqu'à 16 heures. Je souhaiterai donc réaliser la moyenne des dix dernières valeurs mais je ne pense pas que ça soit le plus compliqué à réaliser.

Si vous regardez la deuxième capture d'écran, vous pouvez distinguer une partie INPUT (entrée) et RESULT (résultat). Les cellules INPUT sont liées aux mesures de données. Les cellules RESULT quant à elles sont toutes calculées par des macro fonctions, qui ont comme entrées les INPUT juste au dessus.

J'ai cherché un peu partout des problèmes similaires (forums FR et EN), sans succès malheureusement.

En résumé, j'aimerai :

  • Modifier automatiquement la fenêtre temporelle de mesures
  • Calculer automatiquement mes rendements toutes les 10 minutes.

La contrainte est que le programme doit fonctionner H24 7/7 365/365 sur une machine indépendante qui ne servira qu'à cela. J'espère que cela est possible.

L'idée ensuite serait de sauvegarder ces résultats et de les tracer sur une espèce de MsgBox (je ne pense pas qu'il y ai d'autres moyens) mais je n'en suis pas encore là.

Je vous remercie d'avance pour votre aide,

Si ma demande n'est pas assez claire, j'essaierai d'être assez réactif.

Maxime

capture d ecran forum excel capture d ecran forum excel2

bonjour

pourquoi du VBA ?

Microsoft a doté Excel de fonctions toutes faites pour des synthèses de données

on peut exploiter des millions de lignes quelle qu'en soit la provenance.

pour faire des moyennes, on divise des sommes et pour faire des sommes conditionnelles (par ex entre dates) on utilise SOMMEPROD (très puissant et plus simple qu'il n'y paraît) ou bien des TCD

on archive très rarement des résultats, on archive les données brutes car il est si facile de recréer les résultats.

Bonjour jmd,

jmd a écrit :

pourquoi du VBA ?

Microsoft a doté Excel de fonctions toutes faites pour des synthèses de données

on peut exploiter des millions de lignes quelle qu'en soit la provenance.

La raison principale pour laquelle j'utilise VBA est le fait de pouvoir commenter et que personne ne supprime le contenu d'une cellule en faisant une mauvaise manipulation. Pour être plus clair, si quelqu'un supprime le contenu d'une cellule, cela n'a pas le même effet que sans macro fonctions car on retrouve la bonne fonction associée, on met les bonnes entrées entre () et c'est reparti.

Aussi, je me suis décidé de faire du VBA car quand je suis arrivé il y 2 mois et demi, on m'a fourni un fichier Excel avec un modèle déjà pré-établi qui était censé m'aider à assimiler le système physique, quasiment sans macro fonctions. J'ai abandonné au bout d'une journée pour essayer de comprendre car c'était une "usine à gaz". Aucun commentaire, des formules imbriquées et imbuvables.

Etant en stage et à fortiori seulement de passage, je ne serai pas là si dans un an ou même après si quelqu'un veut ajouter ou modifier quelque chose donc avec VBA j'explique tout pas à pas et je facilite la compréhension du programme par une personne tierce.

Et puis on va pas m'appeler pour me demander des explications alors que je ne travaille plus pour eux.

jmd a écrit :

pour faire des moyennes, on divise des sommes et pour faire des sommes conditionnelles (par ex entre dates) on utilise SOMMEPROD (très puissant et plus simple qu'il n'y paraît) ou bien des TCD

on archive très rarement des résultats, on archive les données brutes car il est si facile de recréer les résultats.

Je vais me renseigner sur SOMMEPROD et TCD, je ne connaîs pas ces fonctions.

Après je peux utiliser des fonctions natives d'excel en utilisant : "WorksheetFunction.FonctionExcel" comme je l'ai fait pour utiliser logarithme népérien, non ?

Les données brutes sont déjà stockées sur le SBDD de l'entreprise. Je veux sauvegarder les résultats dans un autre fichier car l'idée est de tracer l'évolution du rendement dans le temps automatiquement sur une année par exemple, donc je ne vais pas refaire le calcul toutes les x minutes de mes n rendements, ça serait bête je trouve. Vu le nombre de rendements (environ 20), à recalculer toutes les 10 minutes, je pense qu'un accès mémoire sera plus simple.

Après comme je l'ai dis je ne suis pas pro du tout, je découvre et je viens là pour demander des conseils donc si ce que vous me proposez est plus simple je changerai mon idée de base de résolution du problème.

Pour reclarifier la situation, je me doute que c'est pas compliqué de faire une moyenne. Ce que j'aimerai faire c'est changer la date automatiquement et ensuite que tous mes calculs se fassent automatiquement et se sauvergardent ensuite.

J'ai fait une explication assez complète histoire que tout le monde comprenne le problème dans sa globalité et là où je me dirige au final.

Merci de votre aide,

Maxime

re

"refaire des calculs chaque seconde" serait bête ? que fait Excel quand tu saisis = A1+A2 ?

il recalcule la valeur dès que A1 ou A2 change

Excel est fait pour ça.

joins un extrait du fichier des données

on va faire une des moyennes

nota : je trouve étrange qu'on fasse du VBA (un menu à afficher hors standard) alors qu'on ne connaît pas les menus standards d'Excel.

J'avais oublié que Excel recalculait automatiquement dès que la valeur de la cellule changeait.

Ce que je voulais dire par là c'est que je vais pas demander à Excel de recalculer les valeurs sur un an à chaque fois alors que je les ai déjà calculées précédemment..

Vous avez résolu une partie de mon problème, c'est vrai que si quelque chose change dans une cellule, les cellules qui en dépendent vont de modifier automatiquement.

Maintenant l'idée est juste de pouvoir changer la date d'acquisition des mesures automatiquement.

Je vous joins un extrait du tableau.

J'ai inséré le strict minimum pour que ça soit simple à comprendre. Après c'est tout le temps le même principe pour mes calculs.

Je travaillais exclusivement sur Matlab avant, et je mettais tout le temps des commentaires. C'est la principale raison de mon envie d'utiliser VBA, autrement on perd un temps fou à comprendre..

Merci de votre aide,

Maxime

19extraitforum.xlsm (27.85 Ko)

re

je n'ai pas trouvé la "date"

j'ai mis les données sous forme de tableau. Si besoin car elles viennent d'un logiciel externe, on n'y touche pas et on crée un MIR miroir des données

(comment ajoutes-tu ta ligne moyenne dans les RAW ? bizarre

j'ai mis une moyenne en jaune

j'ai créé un TCD

en ajoutant une colonne d'arrondi d'arrondi des temporalités (toutes les 10 min on regroupe le TCD par plages de 10 min

en joutant une colonne de pointage = SI (temporalitéentre2tempsqu'onsaisitdansdescellulesA1etA2 ; 1 ; 0 ) on peut filtrer le TCD sur cette valeur

mais il faut plus de données

joins un fichier RAW un vrai RAW de chez RAW de plusieurs années

Re,

La date se trouve dans les cellules A1, A2, B1, B2 du classeur 'Raw Data'.

La ligne moyenne est écrite manuellement, contrairement au reste qui s'ajoute automatiquement en fonction de la date d'entrée.

Je suis désolé mais je ne comprends pas ton SI...

Les données sont extraites d'un chemin lié au WonderWare de l'entreprise. Je viens de demander et il n'est pas possible de passer en format lignes, le format standard est sous forme de colonnes comme ici.

Super, merci. Je suis sûr que ça va m'aider.

Je suis en stage dans le Sultanat d'Oman (+2 heures par rapport à la France), en plein ramadan (donc tout le monde termine plus tôt, c'est à dire depuis 45 minutes). Je suis désolé mais tout le monde est parti, je ne peux pas avoir plus de données pour le moment. La semaine prochaine c'est L'Eid, une semaine de jours fériés nationaux

Je suis en vacances ce soir, je rentre en France reprends le travail dimanche 02 juin.

Ce que je te propose c'est de copier ces mêmes données plusieurs fois car là je ne peux pas rafraîchir moi même les données malheureusement, j'essaie depuis une heure.

Est-ce que je peux voir ce que tu as fais pour le moment pour essayer de comprendre ?

EDIT : Je t'ai fait des copiers coller dans le fichiers joints, tu as environ 25000 lignes

Merci encore jmd.

10extraitforum.xlsm (878.49 Ko)

re

pas besoin de plus de données

j'ai

  • ajouté les dates en colonne DATE
  • mis sous forme de tableau (fonction primordiale sous Excel pour gérer des milliers de données
  • créé une colonne de "pointage" qui met 1 quand la date est entre START et END
pour te montrer :
  • fait un TCD avec une moyenne
  • fait la même moyenne avec SOMMPROD

je pleure parce qu'à l'école on enseigne VBA au lieu d'enseigner les tableaux et les TCD

Bonjour,

je pleure parce qu'à l'école on enseigne VBA au lieu d'enseigner les tableaux et les TCD

Eh oui ! Faut vivre avec son temps : Les tableaux et les TCD ne sont qu'une surcouche logicielle destinée aux feignants, aux ignorants ou aux pressés qui se foutent de la forme et se contente d'un résultat rapide saupoudré d'un peu de bling bling...

On obtenait déjà les mêmes résultats avec les premières versions d'Excel en grattant un peu avec les fonctions natives et très peu de mémoires...

Il reste que VBA permet de décupler la puissance d'Excel dans beaucoup de situations ou tes formules et autres TCD ne peuvent rien !

A+

Bonjour,

Je suis de retour.

Merci pour ce fichier, j'ai de quoi avancer à présent et j'y vois plus clair.

Bonne journée.

Maxime

Rechercher des sujets similaires à "modif automatique recalcul macros"