FORUM Tom's Hardware » Programmation » VB / VBA / VBS » Trier un fichier par bloque de 4h selon des moyennes max
 

Trier un fichier par bloque de 4h selon des moyennes max

Il y a 433 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Trier un fichier par bloque de 4h selon des moyennes max
 
Plus d'informations

Bonjour à tous,  
 
Voilà mon problème:  
 
 
J'ai une feuille qui contient 3 colonnes:  
 
A: un date avec l'heure  
B: un prix pour cette heures  
C: une moyenne sur les 4 cellules suivantes.  
 
Ex:  
 
01.01.2008 01:00 46.914609 36.94411875  
01.01.2008 02:00 37.245267 32.939871  
01.01.2008 03:00 32.681949 30.91130775  
01.01.2008 04:00 30.93465 27.37958125  
01.01.2008 05:00 30.897618 25.4250775  
01.01.2008 06:00 29.131014 24.62306025  
01.01.2008 07:00 18.555043 26.63616225  
01.01.2008 08:00 23.116635 33.33386075  
 
36.94411875 étant la moyenne de (46.914609;37.245267;32,681949;30.93465) et ainsi de suite.  
 
J'aimerai pour ce fichier, sortir toutes les moyennes les plus hautes et les 4 heures qui suivent.  
En fait, il s'agit d'un tri décroissant sur les moyennes par bloque de 4heures qui se suivent...  
Pas évident...  
 
Autre exemple:  
 
Max=65.45  
 
01.01.2008 01:00 46.91 36.94  
01.01.2008 02:00 37.24 32.93  
01.01.2008 03:00 32.68 30.91  
01.01.2008 04:00 30.93 27.37  
01.01.2008 05:00 30.89 25.42  
01.01.2008 06:00 29.13 24.62  
01.01.2008 07:00 18.55 26.63  
01.01.2008 08:00 23.11 33.33  
01.01.2008 09:00 27.68 41.98  
01.01.2008 10:00 37.18 48.46  
01.01.2008 11:00 45.34 50.61  
01.01.2008 12:00 57.72 49.45  
01.01.2008 13:00 53.59 44.87  
01.01.2008 14:00 45.78 43.21  
01.01.2008 15:00 40.71 47.96  
01.01.2008 16:00 39.41 55.49  
01.01.2008 17:00 46.95 62.63  
01.01.2008 18:00 64.77 65.45  
01.01.2008 19:00 70.83 62.54  
01.01.2008 20:00 67.98 60.20  
01.01.2008 21:00 58.21 55.70  
01.01.2008 22:00 53.14 52.55  
...  
 
il faut donc que mon nouveau fichier commence par les 4 valeurs suivantes:  
 
01.01.2008 18:00 64.77 65.45  
01.01.2008 19:00 70.83 62.54  
01.01.2008 20:00 67.98 60.20  
01.01.2008 21:00 58.21 55.70  
 
et l'autre fichier ne contient plus que les valeurs suivantes:  
 
01.01.2008 01:00 46.91 36.94  
01.01.2008 02:00 37.24 32.93  
01.01.2008 03:00 32.68 30.91  
01.01.2008 04:00 30.93 27.37  
01.01.2008 05:00 30.89 25.42  
01.01.2008 06:00 29.13 24.62  
01.01.2008 07:00 18.55 26.63  
01.01.2008 08:00 23.11 33.33  
01.01.2008 09:00 27.68 41.98  
01.01.2008 10:00 37.18 48.46  
01.01.2008 11:00 45.34 50.61  
01.01.2008 12:00 57.72 49.45  
01.01.2008 13:00 53.59 44.87  
01.01.2008 14:00 45.78 43.21  
01.01.2008 15:00 40.71 47.96  
01.01.2008 16:00 39.41 55.49  
01.01.2008 17:00 46.95 62.63  
 
01.01.2008 22:00 53.14 52.55  
 
 
Puis la prochaine moyenne max est 62.63. Je ne peux cependant pas la prendre puisque j'ai déja enlevé les valeurs qui ont servi à ça moyenne (test sur les heures qui doivent se suivrent). Je continue donc ma "quête" et je tombe sur: 55.49 mais pour les même raison, je ne peux la prendre. je continue et tombe sur: 50.61, je peux les prendre et les mettre dans mon nouveau fichier:  
 
 
01.01.2008 18:00 64.77 65.45  
01.01.2008 19:00 70.83 62.54  
01.01.2008 20:00 67.98 60.20  
01.01.2008 21:00 58.21 55.70  
 
01.01.2008 11:00 45.34 50.61  
01.01.2008 12:00 57.72 49.45  
01.01.2008 13:00 53.59 44.87  
01.01.2008 14:00 45.78 43.21  
 
je continue avec mon fichier principal qui a la tête suivante:  
 
01.01.2008 01:00 46.91 36.94  
01.01.2008 02:00 37.24 32.93  
01.01.2008 03:00 32.68 30.91  
01.01.2008 04:00 30.93 27.37  
01.01.2008 05:00 30.89 25.42  
01.01.2008 06:00 29.13 24.62  
01.01.2008 07:00 18.55 26.63  
01.01.2008 08:00 23.11 33.33  
01.01.2008 09:00 27.68 41.98  
01.01.2008 10:00 37.18 48.46  
 
01.01.2008 15:00 40.71 47.96  
01.01.2008 16:00 39.41 55.49  
01.01.2008 17:00 46.95 62.63  
 
01.01.2008 22:00 53.14 52.55  
 
La prochaine moyenne max qui a 4 valeurs qui se suivent est 36.94  
Mon nouveau fichier se présente ainsi comme cela:  
 
01.01.2008 18:00 64.77 65.45  
01.01.2008 19:00 70.83 62.54  
01.01.2008 20:00 67.98 60.20  
01.01.2008 21:00 58.21 55.70  
 
01.01.2008 11:00 45.34 50.61  
01.01.2008 12:00 57.72 49.45  
01.01.2008 13:00 53.59 44.87  
01.01.2008 14:00 45.78 43.21  
 
01.01.2008 01:00 46.91 36.94  
01.01.2008 02:00 37.24 32.93  
01.01.2008 03:00 32.68 30.91  
01.01.2008 04:00 30.93 27.37  
 
et le vieux:  
 
01.01.2008 05:00 30.89 25.42  
01.01.2008 06:00 29.13 24.62  
01.01.2008 07:00 18.55 26.63  
01.01.2008 08:00 23.11 33.33  
01.01.2008 09:00 27.68 41.98  
01.01.2008 10:00 37.18 48.46  
 
01.01.2008 15:00 40.71 47.96  
01.01.2008 16:00 39.41 55.49  
01.01.2008 17:00 46.95 62.63  
 
01.01.2008 22:00 53.14 52.55  
 
Enfin la moyenne mx qui reste avec 4 valeurs qui se suivent est 26.63  
Mon nouveau fichier se présente donc finalement de la sorte:  
 
01.01.2008 18:00 64.77 65.45  
01.01.2008 19:00 70.83 62.54  
01.01.2008 20:00 67.98 60.20  
01.01.2008 21:00 58.21 55.70  
 
01.01.2008 11:00 45.34 50.61  
01.01.2008 12:00 57.72 49.45  
01.01.2008 13:00 53.59 44.87  
01.01.2008 14:00 45.78 43.21  
 
01.01.2008 01:00 46.91 36.94  
01.01.2008 02:00 37.24 32.93  
01.01.2008 03:00 32.68 30.91  
01.01.2008 04:00 30.93 27.37  
 
01.01.2008 07:00 18.55 26.63  
01.01.2008 08:00 23.11 33.33  
01.01.2008 09:00 27.68 41.98  
01.01.2008 10:00 37.18 48.46  
 
Ce qui reste dans le vieux:  
 
01.01.2008 05:00 30.89 25.42  
01.01.2008 06:00 29.13 24.62  
 
01.01.2008 15:00 40.71 47.96  
01.01.2008 16:00 39.41 55.49  
01.01.2008 17:00 46.95 62.63  
 
01.01.2008 22:00 53.14 52.55  
 
 
Ces moyennes ne seront pas classées puisqu'il n'y a pas 4 valeurs qui se suivent.  
 
Merci pour votre aide!  
J.

Plus d'informations

Voilà le premier tri mais je n'arrive pas à faire recommencer la boucle si quelqu'un à une idée?  
merci merci merci!  
 
Sub MacroMax()  
ligmax = Cells(65000, 4).End(xlUp).Row  
monmax = 0  
For i = 5 To ligmax  
If Cells(i, 4) > monmax Then  
monmax = Cells(i, 4)  
imax = i  
End If  
Next i  
Cells(imax, 4).Select  
If Cells(imax + 4, 2) = Cells(imax + 3, 2) + 1 And Cells(imax + 3, 2) = Cells(imax + 2, 2) + 1 And Cells(imax + 2, 2) = Cells(imax + 1, 2) + 1 And Cells(imax + 1, 2) = Cells(imax, 2) + 1 Then  
Range("A" & imax, "D" & imax + 3).Cut  
Sheets("Feuil2" ).Select  
ActiveSheet.Paste  
Sheets("Feuil1" ).Select  
 
End If  
 
End Sub4 message(s) posté(s) depuis le jeudi 22 novembre 2007

zeb
Profil : Modérateur libre
Plus d'informations

Moderator dixit : Va lire le règlement et modifie le message précédent pour le mettre en conformité.


Message édité par zeb le 26-11-2007 à 15:43:15

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » Trier un fichier par bloque de 4h selon des moyennes max
 

Annonces Google
Publicité
Les téléchargements