Bonjour!

Tout nouveau en programmation VBA, je me heurte à quelques difficultés probablement mineures... En fait j'ai une colonne de 70 données qui représentent plusieurs mesures d'affilée. Je veux faire une régression linéaire pour chaque groupe cohérent de données. Ci-dessous le code "sur-commenté". Pour le coup, il me fait une incompatibilité de type au niveau du Cells("G" & y).Formula = _ "=INDEX(LINEST(A,B),1)". Ceci dit, je ne suis sûr non plus qu'il ait bien compris ma définition des plages A et B...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
 
Sub regression()
 
With ActiveWorksheet
 
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim l As Single
Dim k As Single
Dim A As Object
Dim B As Object
 
' démarrage des compteurs à 1
 
y = 1
l = 1
k = 1
 
' début de la boucle, en supposant qu'on a une colonne de 70 données de capteur
 
For x = 1 To 70
 
' z sera à chaque fois le numéro de ligne de la première cellule de la plage utilisée pour la régression
 
    z = x
 
' l-k représente le pas qui permet de distinguer deux colmatages successifs.
    ' Tant que cet écart n'est pas dépassé, je considère que les cellules font partie de la même droite
 
    Do While Abs(l - k) < 1
 
    l = Cells(x, 5).Value
    k = Cells(x + 1, 5).Value
    x = x + 1
 
    Loop
 
' le programme sort de la boucle lorsqu'il a trouvé le x qui correspond au changement de droite
   ' on crée une plage contenant les cellules concernées,A pour les abscisses, B pour les ordonnées
 
 Set A = Range("E" & z & ":E" & (x - z))
 Set B = Range("F" & z & ":F" & (x - z))
 
' on inscrit dans les deux colonnes suivantes les valeurs de la droite de régression
 
Cells("G" & y).Formula = _
        "=INDEX(LINEST(A,B),1)"
 
Cells("H" & y).Formula = _
        "=INDEX(LINEST(A,B),2)"
 
   y = y + 1
 
Next
 
End With
 
 
'
End Sub
Bref, je suis ouvert à toute suggestion ou réflexion qui me permettrait de me désenbourber!

Bien cordialement,

Aubencheulobois