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 |
Partager