Bonjour à tous!
Pour le boulot, je dois faire des moyennes horaires de données qu'on a toutes les 5min. Comme on a un grand nombre de données (plus de 50 000), et qu'il y a parfois des trous, j'ai fait une macro en VB.
Mais, lorsque je l'exécute, j'ai un message d'erreur qui dit "Incompatibilité de type". Et aucun lien vers le menu de bédogage... Donc je ne sais pas ce qu'il ne va pas... Je pense aux formats de cellules non compatibles, mais ça me parrait bizarre. Le plus bizarre, c'est qu'il fait les calculs pour un certain nombre de fois, mais ne va pas jusqu'au bout
Quelqu'un aurait il une idée d'ou vient le problème?
Pour info, voila ma macro:
Sub Total()
Dim N
Dim a
Dim L
Dim I
Dim Sum1
Dim Sum2
Dim Sum3
Dim Sum4
Dim Sum5
Dim Sum6
Dim Sum7
N = 5
a = 0
L = 4
I = 1
Sum1 = Cells(N - 1, 38).Value
Sum2 = Cells(N - 1, 39).Value
Sum3 = Cells(N - 1, 40).Value
Sum4 = Cells(N - 1, 41).Value
Sum5 = Cells(N - 1, 42).Value
Sum6 = Cells(N - 1, 43).Value
Sum7 = Cells(N - 1, 44).Value
While N < 2000
Boucle:
While Hour(Cells(N, 1).Value) = Hour(Cells(N - 1, 1).Value)
If Cells(N - 1, 10).Value > 90 Then
If Hour(Cells(N - 1, 1).Value) <> Hour(Cells(N + 3, 1).Value) Then
Cells(L, 59) = Cells(N - 1, 1).Value - (Minute(Cells(N - 1, 1)) / 1440)
Cells(L, 60).Value = Sum1 / I
Cells(L, 61).Value = Sum2 / I
Cells(L, 62).Value = Sum3 / I
Cells(L, 63).Value = Sum4 / I
Cells(L, 64).Value = Sum5 / I
Cells(L, 65).Value = Sum6 / I
Cells(L, 66).Value = Sum7 / I
L = L + 1
Sum1 = 0
Sum2 = 0
Sum3 = 0
Sum4 = 0
Sum5 = 0
Sum6 = 0
Sum7 = 0
N = N + 3
I = 1
GoTo Boucle
End If
N = N + 3
Sum1 = Sum1 + Cells(N, 38).Value
Sum2 = Sum2 + Cells(N, 39).Value
Sum3 = Sum3 + Cells(N, 40).Value
Sum4 = Sum4 + Cells(N, 41).Value
Sum5 = Sum5 + Cells(N, 42).Value
Sum6 = Sum6 + Cells(N, 43).Value
Sum7 = Sum7 + Cells(N, 44).Value
I = I + 1
N = N + 1
Else
Sum1 = Sum1 + Cells(N, 38).Value
Sum2 = Sum2 + Cells(N, 39).Value
Sum3 = Sum3 + Cells(N, 40).Value
Sum4 = Sum4 + Cells(N, 41).Value
Sum5 = Sum5 + Cells(N, 42).Value
Sum6 = Sum6 + Cells(N, 43).Value
Sum7 = Sum7 + Cells(N, 44).Value
N = N + 1
I = I + 1
End If
Wend
Cells(L, 59) = Cells(N - 1, 1).Value - (Minute(Cells(N - 1, 1)) / 1440)
Cells(L, 60).Value = Sum1 / I
Cells(L, 61).Value = Sum2 / I
Cells(L, 62).Value = Sum3 / I
Cells(L, 63).Value = Sum4 / I
Cells(L, 64).Value = Sum5 / I
Cells(L, 65).Value = Sum6 / I
Cells(L, 66).Value = Sum7 / I
L = L + 1
Sum1 = Cells(N, 38).Value
Sum2 = Cells(N, 39).Value
Sum3 = Cells(N, 40).Value
Sum4 = Cells(N, 41).Value
Sum5 = Cells(N, 42).Value
Sum6 = Cells(N, 43).Value
Sum7 = Cells(N, 44).Value
N = N + 1
I = 1
Wend
End Sub
P.S: pour les puristes, je sais que je ne devrais pas utiliser GoTo, mais je débute en VB!
P.S2: je suis sous mac office 2011
Pour le boulot, je dois faire des moyennes horaires de données qu'on a toutes les 5min. Comme on a un grand nombre de données (plus de 50 000), et qu'il y a parfois des trous, j'ai fait une macro en VB.
Mais, lorsque je l'exécute, j'ai un message d'erreur qui dit "Incompatibilité de type". Et aucun lien vers le menu de bédogage... Donc je ne sais pas ce qu'il ne va pas... Je pense aux formats de cellules non compatibles, mais ça me parrait bizarre. Le plus bizarre, c'est qu'il fait les calculs pour un certain nombre de fois, mais ne va pas jusqu'au bout
Quelqu'un aurait il une idée d'ou vient le problème?
Pour info, voila ma macro:
Sub Total()
Dim N
Dim a
Dim L
Dim I
Dim Sum1
Dim Sum2
Dim Sum3
Dim Sum4
Dim Sum5
Dim Sum6
Dim Sum7
N = 5
a = 0
L = 4
I = 1
Sum1 = Cells(N - 1, 38).Value
Sum2 = Cells(N - 1, 39).Value
Sum3 = Cells(N - 1, 40).Value
Sum4 = Cells(N - 1, 41).Value
Sum5 = Cells(N - 1, 42).Value
Sum6 = Cells(N - 1, 43).Value
Sum7 = Cells(N - 1, 44).Value
While N < 2000
Boucle:
While Hour(Cells(N, 1).Value) = Hour(Cells(N - 1, 1).Value)
If Cells(N - 1, 10).Value > 90 Then
If Hour(Cells(N - 1, 1).Value) <> Hour(Cells(N + 3, 1).Value) Then
Cells(L, 59) = Cells(N - 1, 1).Value - (Minute(Cells(N - 1, 1)) / 1440)
Cells(L, 60).Value = Sum1 / I
Cells(L, 61).Value = Sum2 / I
Cells(L, 62).Value = Sum3 / I
Cells(L, 63).Value = Sum4 / I
Cells(L, 64).Value = Sum5 / I
Cells(L, 65).Value = Sum6 / I
Cells(L, 66).Value = Sum7 / I
L = L + 1
Sum1 = 0
Sum2 = 0
Sum3 = 0
Sum4 = 0
Sum5 = 0
Sum6 = 0
Sum7 = 0
N = N + 3
I = 1
GoTo Boucle
End If
N = N + 3
Sum1 = Sum1 + Cells(N, 38).Value
Sum2 = Sum2 + Cells(N, 39).Value
Sum3 = Sum3 + Cells(N, 40).Value
Sum4 = Sum4 + Cells(N, 41).Value
Sum5 = Sum5 + Cells(N, 42).Value
Sum6 = Sum6 + Cells(N, 43).Value
Sum7 = Sum7 + Cells(N, 44).Value
I = I + 1
N = N + 1
Else
Sum1 = Sum1 + Cells(N, 38).Value
Sum2 = Sum2 + Cells(N, 39).Value
Sum3 = Sum3 + Cells(N, 40).Value
Sum4 = Sum4 + Cells(N, 41).Value
Sum5 = Sum5 + Cells(N, 42).Value
Sum6 = Sum6 + Cells(N, 43).Value
Sum7 = Sum7 + Cells(N, 44).Value
N = N + 1
I = I + 1
End If
Wend
Cells(L, 59) = Cells(N - 1, 1).Value - (Minute(Cells(N - 1, 1)) / 1440)
Cells(L, 60).Value = Sum1 / I
Cells(L, 61).Value = Sum2 / I
Cells(L, 62).Value = Sum3 / I
Cells(L, 63).Value = Sum4 / I
Cells(L, 64).Value = Sum5 / I
Cells(L, 65).Value = Sum6 / I
Cells(L, 66).Value = Sum7 / I
L = L + 1
Sum1 = Cells(N, 38).Value
Sum2 = Cells(N, 39).Value
Sum3 = Cells(N, 40).Value
Sum4 = Cells(N, 41).Value
Sum5 = Cells(N, 42).Value
Sum6 = Cells(N, 43).Value
Sum7 = Cells(N, 44).Value
N = N + 1
I = 1
Wend
End Sub
P.S: pour les puristes, je sais que je ne devrais pas utiliser GoTo, mais je débute en VB!
P.S2: je suis sous mac office 2011