VBA : Centrer et réduire des données

  • Initiateur de la discussion Initiateur de la discussion 1ma9
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

1ma9

XLDnaute Nouveau
Bonjour à tous,

Je vous remercie par avance de votre patience.

Je tente de faire une analyse en composante principale, pour cela je dispose d'une base de données, je dois centrer et réduire mes données, mais ce n'est pas la partie la plus importante. Je dois commencer par calculer les moyennes par colonne ce que j'ai fait.
Puis les variances, il est là le hic ! en effet, la formule de la variance consiste d'abord a tout mettre au carré puis à faire la somme des données au carré puis à soustraire la moyenne au carré

un exemple si j'ai 3 notes : 8, 3, 7 la moyenne c'est (8+3+7) / 3 = 6
La variance c'est (8²+3²+7²) - 6²

mais quand je fais le test de ma formule cela ne colle pas... et je suis vraiment dans l'embarras, si quelqu'un pouvait me dire mon erreur je serai ravi, je vous présente mon code:

Sub Moyenne()

Dim i As Integer
Dim somme As Single
For i = 2 To 31
somme = somme + Cells(i, 2).Value
Cells(32, 2).Value = CStr(somme)
Next i
'calcul du total des données d'une colonne

Dim k As Single
k = Cells(32, 2).Value / 30
Cells(33, 2).Value = CStr(k)
'calcul de la moyenne de la colonne

End Sub

Sub Variance()

Dim i As Integer
Dim var As Single
For i = 2 To 31
var = var + Cells(i, 2).Value ^ 2
Cells(34, 2).Value = CStr(var)
Next i
'faire la somme des éléments au carré

Dim x As Single
x = var - Cells(33, 2).Value ^ 2
Cells(35, 2).Value = CStr(x)
'retrancher la moyenne au carré

End Sub
 
Re : VBA : Centrer et réduire des données

Sinon j'ai essayé ça mais ca ne marche toujours pas !

Sub variancetest()

Dim x As Integer
Dim y As Single
For x = 2 To 31
y = Cells(x, 2).Value * Cells(x, 2).Value
Cells(x, 2).Value = CStr(y)
Next x
'remplacer les cellules par les carrés des nombres

Dim z As Integer
Dim t As Single
t = 0
For z = 2 To 31
t = t + Cells(z, 2).Value
Cells(34, 2).Value = CStr(t)
Next z
'faire la somme des carrés

Dim a As Single
a = t / 30
Cells(35, 2).Value = CStr(a)

Dim var As Single
var = Cells(35, 2).Value - Cells(32, 2).Value ^ 2
Cells(36, 2).Value = CStr(var)
'calcul de la variance

End Sub
 
Re : VBA : Centrer et réduire des données

Bonsoir 1ma9,

Premièrement, il me semble que ton calcul de la variance est erronée.
Je crois que la formule est plutôt : variance = [somme des écarts à la moyenne au carré] / [nombre d'échantillon].
Donc dans ton exemple, ce serait plutôt [ (8-6)^2 + (3-6)^2 + (7-6)^2 ] / 3 = 4.6666

De plus, pourquoi vouloir réinventer la roue???
Ces formules existent déjà dans Excel :
MOYENNE
VAR variance pour un échantillon
VAR.P variance pour une population
 
Re : VBA : Centrer et réduire des données

Oui Oui j'ai vu que mon calcul était erroné, pour ta démonstration de la roue, c'est que je suis contraint de le faire, et crois moi cela ne m'amuse pas...

j'ai trouvé l'erreur, en fait, j'avais mis en Single, et cela dépassait la capacité, ça me réduisait mes calculs et je ne trouvais pas le bon résultat ! merci !!
 
Re : VBA : Centrer et réduire des données

Dis moi tu sais pourquoi lorsque je tape :
Dim z As Integer
For z = 2 To 31
t = t + Cells(z, 2).Value
Cells(34, 2).Value = CStr(t)
Next z
'faire la somme des carrés

a = Cells(34, 2).Value / 30
Cells(35, 2).Value = CStr(a)

le résultat de la division n'est pas bon ?
 
Re : VBA : Centrer et réduire des données

Si c'est pour calculer la variance, alors ta formule devrait être :

Code:
Dim z As Integer
For z = 2 To 31
t = t + (Cells(z, 2).Value - Cells(33,2))^2
Cells(34, 2).Value = CStr(t)
Next z
'faire la somme des carrés

a = Cells(34, 2).Value / 30
Cells(35, 2).Value = CStr(a)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
703
Réponses
2
Affichages
427
Réponses
4
Affichages
580
Réponses
10
Affichages
531
Réponses
5
Affichages
477
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Réponses
8
Affichages
647
Retour