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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
Sub moyenne()
Dim Dlmin, nbEssai As Integer
Dim CellFormuleMoyAire, CellFormuleMoyPres, CellFormuleEcartAire, CellFormuleEcartMoy As Variant
Dim tabDl() As Integer
nbEssai = 3
ReDim tabDl(0 To nbEssai - 1)
Cells(2, (nbEssai + 1) * 2 - 1) = "Moyenne"
Cells(2, (nbEssai + 1) * 2 - 1) = "Aire Moyenne"
Cells(2, (nbEssai + 1) * 2) = "Pression de surface moyenne"
Cells(2, (nbEssai + 1) * 2 + 1) = "Ecart Type (Aire Moyenne)"
Cells(2, (nbEssai + 1) * 2 + 2) = "Ecart Type (surface moyenne)"
'----------------Recherche de la dernière ligne de l'essai le plus "court"----------
'ceci afin de s'assurer que toutes les séries auront une valeur à soumettre à la moyenne
For j = 0 To nbEssai - 1
col = j * 2 + 1
tabDl(j) = Cells(Rows.Count, col).End(xlUp).Row
Next j
Dlmin = tabDl(0)
'recherche de la "dernière ligne" la plus petite parmi les essais
For j = 0 To nbEssai - 1
If tabDl(j) <= min Then
Dlmin = tabDl(j)
End If
Next j
For i = 3 To Dlmin
CellFormuleMoyAire = ""
CellFormuleMoyPres = ""
CellFormuleEcartAire = ""
CellFormuleEcartPres = ""
For j = 0 To nbEssai - 1
colA = j * 2 + 1
colP = colA + 1
CellFormuleMoyAire = CellFormuleMoyAire & "+" & Cells(i, colA)
CellFormuleMoyPres = CellFormuleMoyPres & "+" & Cells(i, colP)
'remplacement des virgules par des points dans la formule sinon ça bug
CellFormuleMoyAire = Replace(CellFormuleMoyAire, ",", ".")
CellFormuleMoyPres = Replace(CellFormuleMoyPres, ",", ".")
Next j
Cells(i, (nbEssai + 1) * 2 - 1).Formula = "=(" & CellFormuleMoyAire & ")/" & nbEssai
Cells(i, (nbEssai + 1) * 2).Formula = "=(" & CellFormuleMoyPres & ")/" & nbEssai
For j = 0 To nbEssai - 1
colA = j * 2 + 1
colP = colA + 1
'formule dynamique qui s'allonge en fonction du nombre de fichier
'donc de colonnes à moyenner
CellFormuleEcartAire = CellFormuleEcartAire & "+" & (Cells(i, colA) - Cells(i, (nbEssai + 1) * 2 - 1)) * (Cells(i, colA) - Cells(i, (nbEssai + 1) * 2 - 1))
CellFormuleEcartPres = CellFormuleEcartPres & "+" & (Cells(i, colP) - Cells(i, (nbEssai + 1) * 2)) * (Cells(i, colP) - Cells(i, (nbEssai + 1) * 2))
'remplacement des virgules par des points dans la formule sinon ça bug
CellFormuleEcartAire = Replace(CellFormuleEcartAire, ",", ".")
CellFormuleEcartPres = Replace(CellFormuleEcartPres, ",", ".")
Dim EcartA, EcartP As Double
EcartA = Evaluate(CellFormuleEcartAire) 'nécessaire pour prévalider la formule (sinon #NOM)
EcartP = Evaluate(CellFormuleEcartPres)
Next j
Cells(i, (nbEssai + 1) * 2 + 1) = Sqr(EcartA / nbEssai)
Cells(i, (nbEssai + 1) * 2 + 2) = Sqr(EcartP / nbEssai)
Next i
End Sub |
Partager