Calcul de moyenne et création d'un tableau

sat478

XLDnaute Nouveau
Bonjour,

je dispose d'un fichier contenant des valeurs relevées toutes les minutes (feuille Acquisition).
Je souhaite automatiser le tableau des résultats de manière qu'il réalise des moyennes de 30 minutes (soit de 10h13 heure de début à 10h43 heure de fin sur l'exemple) puis toutes les 30 minutes sauf pour la dernière plage de mesures où il n'y a plus forcément 30 minutes (exempke de 10h43 à 10h58).

Comment créer le tableau des résultats suivant le nombre de lignes et de colonnes qui peuvent varier. Actuellement c'est fait à la main mais c'est très long lorsque les mesures s'échelonnent de 8h00 à 18h00 et sujet à de fortes erreurs de sélection.

Et là j'avoue qu'en VBA je suis perdu :-( [file name=Test_20060428141319.zip size=11111]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Test_20060428141319.zip[/file]
 

Pièces jointes

  • Test_20060428141319.zip
    10.9 KB · Affichages: 33

Davidc57

XLDnaute Occasionnel
Salut sat,

J'ai quelques questions préalable.

1. L'enrichissement de la feuille 'Acquisition' est-il manuel ou automatisé ?

2. Quelque soit la réponse de 1), sommes nous certain d'avoir un enregistrement toutes les minutes, et cela pour toute plage [DEBUT - FIN] ?

3. Si j'ai bien compris, on prends des tranches de 30 minutes, on calcul les moyennes algébriques et on créé un enregistrement. Est-il nécessaire de montrer les résultats au fur et à mesure ou peut-on attendre la fin de la plage pour affiche l'intégralité des résultats ?


Si la réponse et oui pour cette question, comme il semble s'agir d'expérience scientifique, tu parles de mesures ... il me semble que tu serait interessé par le calcul des moyennes mobiles. Chaque 30 minutes, tu veux une moyenne des 30 dernières minutes. Je te propose de calculer chaque minutes, la moyenne des 30 dernières minutes. Le premier calcul se fera à partir de la 30è minute, considérant les mesures 1 à 30, à la 31è minutes, on calculera la moyenne des 30 mesures de 2 à 31 etc ....

De cetta façon, tu pourras même voir évoluer tes moyennes mobiles sur un graphique.

Enfin je suis peut-être hors sujet !

A+
David
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Un essai avec SommeProd
et des plages nommées de façon dynamique
(tu peux ajouter des données, elles seront prises en compte) [file name=MoyenneSat.zip size=7269]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MoyenneSat.zip[/file]
 

Pièces jointes

  • MoyenneSat.zip
    7.1 KB · Affichages: 75
S

sat478

Guest
Bonsoir Davidc57,

pour répondre à tes différentes questions :

1) enrichissement automatisé provenant d'un logiciel d'acquisition de mesures

2) oui, on est certain d'avoir des tranches de 1 minutes sauf modification du protocole (ce qui n'est pas envisagé pour le moment)

3) on peut attendre la fin des calculs pour avoir les moyennes algébriques

Par contre, les moyennes mobiles ne nous intéressent pas pour le moment.
 
S

sat478

Guest
Bonsoir Monique,

ton fichier semble en effet intéressant (j'y jetterai un oeil plus approfondi cette semaine).

Néanmoins, l'onglet résultat étant défini dynamiquement (càd qu'il provient d'un copier-coller par VBA d'un autre fichier texte), les plages dynamiques ne sont pas définies. Alors comment faire ? Est-il possible de les définir dynamiquement en VBA ?

J'ai vu également que tu as utilisé la formule DECALER peut tu m'en dire plus à son sujet ? Son fonctionnement... Elle semble être intéressante et pourrait me servir pour une autre feuille excel

Merci d'avance
 

Monique

Nous a quitté
Repose en paix
Bonjour,

J'ai utilisé Decaler() parce que les colonnes 'Unité' ne sont pas nommées
(ce n'est pas la peine de les nommer, comme ça on garde la même formule sur tout le tableau)

Dans la formule
SOMMEPROD((Deb>=$B10)*(Fin<=$C10)*DECALER(Fin;;EQUIV(D$5;Uni;0)))
la plage 'Fin' est décalée plus ou moins vers la droite,
selon la position de D5 dans la ligne des titres
DECALER(Fin;;EQUIV(D$5;Uni;0)) = Decaler(Plage 'Fin'; 0 ligne; n colonnes vers la droite)

Le 'n colonnes' étant défini par Equiv(Réf; Plage des titres; 0)
EQUIV(D$5;Uni;0)
renvoie la position de D5 dans la plage 'Uni'

Si on a 'Unité A' en D5, Equiv() renvoie 1
La plage prise en compte sera la colonne D : Decaler(Fin; 0;1)

Si on a 'Unité B' en D5, Equiv() renvoie 2
La plage prise en compte sera la colonne E : Decaler(Fin; 0;2)

C'est l'onglet 'Acquisition' qui vient d'un copié-collé VBA non ?
Si c'est oui, un copié-coller ne va pas déranger tout ça
Mais je n'y connais rien en macro

A la rigueur, pour la plage des jours, par exemple,
pour la nommer,
au lieu de DECALER(Acquisition!$A$4;;;Long)
on peut mettre DECALER(Acquisition!$A$1;3;;Long)
(on part de A1 au lieu de A4, mais on décale de 3 lignes vers le bas, donc la plage démarre vraiment en A4)


- NB -
J'ai oublié un truc
La fonction Decaler() a 2 autres arguments
Decaler(Réf; nb de lignes; nb de colonnes ; Hauteur; Largeur)
Les 2 dernier pour définir un tableau, par exemple
DECALER(A1;0;0;5;5) = A1:E5, une plage de 5 sur 5

Message édité par: monique, à: 01/05/2006 21:24
 

sat478

XLDnaute Nouveau
Merci pour toutes ces infos Monique.

Petite question, dans le fichier que tu as créé, tu as saisis toi même les heures de début et de fin dans le tableau résultat, où elles sont déterminées toutes seules en fonction de l'heure de début (il calcule la première valeur à t0+30...) ?
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Dans le tableau 'Résultats', j'ai saisi les heures.
Tu peux mettre :
en A6 =MIN(Jrs)
en B6 =MIN(Deb)
en C6 =B6+30/1440
Mais je ne sais pas pourquoi, à partir de 10:43, on passe à des moyennes sur 15 minutes
C'est toi qui sait ça.
 

Discussions similaires

Statistiques des forums

Discussions
312 348
Messages
2 087 506
Membres
103 566
dernier inscrit
c@b@l77540