Combler données horodatées VBA
Bonjour à tous,
Tout d'abord, merci pour le temps que vous prendrez pour lire mes (très) nombreuses erreurs de code. Je m'en excuse, je viens de débuter.
Mon problème ici consiste à "combler" de la donnée horodatée.
Je m'explique.
Mon excel se résume à 3 colonnes. Les deux premières se lisent de paire car la première correspond à la date et la deuxième correspond à une valeur associée à cette date.
Mon problème est que le pas de temps de 10 minutes n'est pas respecté. J'ai par moment une valeur toutes les deux ou trois heures (la donnée provient d'un capteur capricieux). Or, il me faut absolument une donnée toutes les 10 minutes. J'ai donc créé cette troisième colonne qui est la colonne horodatée dite "parfaite" car respecte scrupuleusement le pas de temps de 10 minutes sur l'ensemble de mon intervalle de temps étudié.
Il me manque donc ici une quatrième colonne qui serait associée à la troisième et qui reprendrait en partie la deuxième colonne. Pour remplir cette quatrième j'ai eu pour idée de faire un code VBA qui reprend l'idée suivante : si ma date de la troisième colonne match avec une date de la première colonne alors la valeur associée de la quatrième colonne est la même que celle de la deuxième colonne mais s'il n'y a pas de match de dates alors je fais une moyenne des valeurs associées aux deux dates les plus "proches" .
Bref, voici mon code (qui ne marche pas en l'état) (F2 est la case où j'ai noté la taille de la colonne) :
Sub recherche()
Dim i
Dim j
For i = 2 To F2 + 1
For j = 2 To F2 + 1
Dite = Cells(i, 3)
Djte = Cells(j, 3)
Dj1te = Cells(j + 1, 3)
xi = Worksheets("Feuil1").Range("Ai").Value
xi1 = Worksheets("Feuil1").Range("Ai+1").Value
bj = Worksheets("Feuil1").Range("Dj").Value
If (Abs(DateDiff("s", Dite, Djte) < 60)) Then xi = bj Else If Abs(DateDiff("m", Dite, Djte)) < 10 And Abs(DateDiff("m", Dite, Dj1te)) < 10 Then bj = (xi + xi1) / 2
Next j
Next i
End Sub
Bonjour,
Si tu ne tiens pas absolument à une solution VBA, le classeur joint avec des formules Excel répond à ta demande
Merci beaucoup !! Vous me donnez un énorme coup de pouce
Je vous souhaite une excellente continuation