Transformer le pas de temps d'un fichier

Bonjour à tous,

je me tourne vers vous aujourd'hui car je n'arrive pas à résoudre mon problème.

J'ai un fichier excel où se trouve la date en colonne A au pas de temps 10 min sur une année et une valeur correspondant à la hauteur d'eau en colonne B.

J'aimerais transformer ce fichier pour l'avoir au pas de temps horaire (donc faire des moyenne par groupe de 6 valeurs)

Je n'arrive pas au résultat mais j'obtiens seulement une moyenne glissante...

Merci d'avance pour votre aide

Cordialement,

Pierre

Bonjour,

à tester,

=SOMMEPROD(($B$2:$B$52561)*($A$2:$A$52561>=E2)*($A$2:$A$52561<E3))/6

Merci pour la réponse, ca a effectivement l'air de marcher.

Ne serait il pas possible de faire une macro avec une condition si ?

Si heure = X

moyenne B2:B7

etc...

en incrémentant tous les 6 ?

Car j'ai l'impression que mon ordinateur a du mal avec ta formule qui doit être un peu lourde pour lui

Bonjour,

Une possibilité :

Sub galopin()
Dim i%
      On Error Resume Next
      For i = 0 To 8759
            Cells(i + 2, 6) = WorksheetFunction.Average(Range(Cells(2 + i * 6, 2), Cells(7 + i * 6, 2)))
      Next
End Sub

Nota : Il ne semble pas possible d'incrémenter la colonne E d'heure en heure en utilisant la poignée de recopie de votre manière.

Pour y parvenir vous devez mettre la formule suivante en E2 :

=E2+1/24

Ensuite vous pouvez incrémenter cette formule vers le bas puis faire un Copier/Collage Spécial Valeur.

A+

Bonjour,

à tester,

Sub Test_Moyenne()
n1 = Cells(Rows.Count, "A").End(xlUp).Row + 1
n2 = Cells(Rows.Count, "E").End(xlUp).Row

eau = Range("B2:B" & n1)
r = Range("F2:F" & n2)

For i = 0 To n1 - 6 Step 6
 v = 0
 For y = i + 1 To i + 6
  v = v + eau(y, 1)
 Next
 a = a + 1
 r(a, 1) = v / 6
Next

ActiveSheet.Range("F2").Resize(UBound(r)) = r 
End Sub

Bonjour,

sabV : Visiblement nous sommes bien d'accord mais nous n'avons pas la même manière de calculer une moyenne que notre ami !

A+

Merci beaucoup pour vos réponses,

J'ai en plus compris ce que vous avez fait (ce qui est génial pour un novice comme moi !)

J'ai gardé l'algo proposé par SabV et j'ai ajouté un bouton pour faciliter l'opération

Super cool de votre part en tout cas !

Si vous êtes encore dedans, j'aimerais vous demander le contraire cette fois, de pouvoir passer de données 1heure à des données 10min en recopiant 6 fois la valeur.

Je pensais à insérer des lignes pour chaque ligne du fichier horaire mais je ne sais pas comment le mettre en pratique

Si vous avez des idées/solutions je suis preneur !

Merci pour tout en tout cas !

Curieusement je me suis rendu compte que ma soluce n'affichait pas jusqu'au 31 Décembre...

Je laisse donc SabV terminer sur sa lancée.

[EDIT] Correction de ma macro précédente :

Mettre Dim i& eu lieu de Dimi%

A+

Bonjour Pierre, galopin01,

à tester,

Bonsoir,

Je n'ai pas compris la même chose que SabV aussi je donne ma production :

Je sais c'est pas top, ça vaut... ce que ça vaut mais ça fait le job !

Sub Inverse()
Dim a, b, i&, ii&
On Error GoTo FIN
a = [A1].CurrentRegion.Value
b = [E1].CurrentRegion.Value
For i = 1 To UBound(b)
      For ii = 1 To 6
            Cells(1 + (i - 1) * 6 + ii, 2) = b(i + 1, 2)
      Next
Next
Exit Sub
FIN:
End Sub

A+

Merci à vous deux !

c'est très gentil de votre part !

J'aimerais un jour arriver à votre niveau en VBA pour être davantage autonome...

Vous avez très bien cerné mon problème et l'avez résolu rapidement

A+

Pierre

Oh Grand SabV !

C'est encore moi et mes problèmes qui reviennent à la charge...

Je voudrais pour finaliser mon fichier de conversion de données au pas de temps souhaité, pouvoir faire la même chose entre des données 30 min et 1 heure dans les 2 sens:

- Convertir mes fichiers 30 min en 1 heure en faisant la moyenne des deux valeurs

- Convertir mes fichiers horaires en 30min en copiant deux fois la valeur.

Je me suis donc aidé de tes scripts que j'ai essayé de modifier/adapter à mon problème mais en vain (j'ai des messages d'erreur lors de l'éxécution...)

Saurais tu m'aider une dernière fois ? (sisi c'est promis )

Par soucis de place de fichier, j'ai enlevé les deux premiers onglets sur lesquels tu m'as déjà aidé hier et limité l'étude à quelques mois ce qui n'impacte pas ton programme puisqu'il calcule la longueur des colonnes.

Merci d'avance,

Bonjour Pierre,

J'ai mis les nouvelles macro sur le Module2,

est ce que ça convient ?

Merci encore une fois pour ta rapidité,

ton script marche pour ma part dans le sens horaire à 30 min (copie de deux lignes)

mais il y a un message d'erreur quand il faut faire la moyenne.

La ligne concernée est : v = v + PVprod(y, 1)

l'erreur indique " l'indice n'appartient pas à la selection"

Cordialement

Bonjour Pierre,

mais il y a un message d'erreur quand il faut faire la moyenne.

La ligne concernée est : v = v + PVprod(y, 1)

je n'ai pas utilisé la variable PVprod dans mes macro ?

les macro que j'ai fait sont sur le module 2

Rebonjour,

Si elle est utilisée dans le module 2.

J'avais renommé le nom hier pour adapter dans mon premier test et tu as sans doute repris cette base en copiant/collant

est que l'erreur se produit sur le fichier MAVERICK39-macro conversion pas de temps.xlsm

ou bien as-tu fais le test sur un autre fichier ?

Effectivement ca marche sur ton fichier mais dès que je copie ton module 2 sur mon fichier, il y a le message d'erreur...

Encore désolé pour tout , on y est presque !

peut-tu mettre cette onglet qui pose problème dans un nouveau fichier et joindre ce fichier ici ?

ci joint le fichier du module.

Il comporte l'ensemble de tes algos.

Sur les 4 utilisés 3 fonctionnent.

Celui qui ne fonctionne pas se trouve dans :

Sub Test_Moyenne_30()

et l'erreur se situe apparemment ici :

v = v + PVprod(y, 1)

La macro similaire que tu avais faite dans l'autre sens s'appelle conversion et fonctionne très bien !

Si ca marche, comment te remercier à la fin ?

Rechercher des sujets similaires à "transformer pas temps fichier"