Excel, extraction d'un bloque de 4 cellules

Fermé
julienbat Messages postés 5 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007 - 22 nov. 2007 à 14:56
julienbat Messages postés 5 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007 - 26 nov. 2007 à 09:40
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...
Merci pour votre aide!
J.
A voir également:

6 réponses

Hello Julien

N'étant pas un roi du VBA, je te propose une solution basée sur des formule (vers UK, je ne connais pas l'équivalent Fr).

J'ajouterai ligne au dessus du tableau.
Là la formule MAX (range) en D4(par exemple)
Puis colonne à côté de tes moyennes IF (moyenne = $D$4;"OK";)

pour la colonne suivante, j'imagine que tu désires connaitre les 4 valeurs constitutives de la moyenne.

Mon colonne avec mes valeurs sont en C4 ->C26
La colonne avec le test de Max et le OK est en E4 ->E26

La formule magique pour moi est =IF(OR(E10="OK";E9="OK";E8="OK";E7="OK");C10;0)
Tu la mets en F10 et puis drag and drop jusqu'au bout.

Si tu fais de la sorte, cela marche, mais tu trouvera le max au milième près.
Si c'est ç l'unité, je te propose de tout arrondir avec un round ou INT..

A toi de voir.

Bien à toi.

Pierre
0
Si ca ne va pas n'hésite pas à redemander.
0
julienbat Messages postés 5 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007
22 nov. 2007 à 15:28
Waou! Quelle rapidité!
Je vais essayer ta solution et te redis au plus vite!
Mille merci,
Cordialement,
j.
0
julienbat Messages postés 5 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007
22 nov. 2007 à 16:16
Hello Pierre,


Encore merci pour ta réponse,

Cependant, je ne suis pas certain d'avoir tout saisi.

Dans mon 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.

Voilà mon "gros problème", j'espère que c'est pas trop brouillon comme explication et merci pour l'aide!
J.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
julienbat Messages postés 5 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007
23 nov. 2007 à 10:26
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 Sub
0
julienbat Messages postés 5 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 26 novembre 2007
26 nov. 2007 à 09:40
EN fait mon Problème se situe dans le fait qu'une fois la macro executée, je n'arrive pas à recommencer plus bas.
C'est à dire qu'il faudrait que je recopie les cellules copiées à la suite dans ma feuille 2...

Existe-t-il un code qui dit: Copier à la prochaine cellule vide?
Merci à tous
0