Ecart type de valeur de cellule variable dans une base de données

Résolu
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012
- 29 mars 2011 à 14:20
us_30
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
- 30 mars 2011 à 13:55
Bonjour,
Voici un code qui la somme des valeurs de cellule dans un tableau excel selon certaine condition(somme de la valeur de L2,L8 et L14:
'QUANTITE VRAC
Sheets("Import").Select
Range("L1").Select
For C = 1 To Selection.End(xlDown)
If Range("C" & C) "LC1" And Range("P" & C) "VRAC" Then
If Range("B" & C) = Sheets("Traitement").Range("F3") Then
QteVRAC = QteVRAC + Range("L" & C).Value
End If
End If
Next
A la place de la somme, je voudrais calculer l'écart type de c'est 3 valeurs.

Merce d'avance pour votre aide

19 réponses

us_30
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
29 mars 2011 à 17:37
Bonjour

Sheets("Import").Select
For C = 1 To Selection.End(xlDown)

If Range("C" & C) "LC1" And Range("P" & C) "VRAC" And Range("B" & C) = Sheets("Traitement").Range("F3") Then
    Somme = Somme + Range("L" & C).Value
    sommecarre = sommecarre + (Range("L" & C).Value) ^ 2
    nb = nb + 1
End If
Next C
Ecarttype = (sommecarre - sommecarre / nb) / nb
MsgBox Ecarttype


Amicalement,
Us.
3
us_30
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
29 mars 2011 à 18:20
Désolé corrige la ligne :
Ecarttype = (sommecarre - sommecarre / nb) / nb

par
Ecarttype = (sommecarre - (somme) ^ 2 / nb) / nb


Amicalement,
Us.
3
us_30
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
29 mars 2011 à 19:19
As-tu essayé ma correction ?

Je mettais trompé dans la formule de calcul définitif uniquement.

IL est nettement préférable de suivre ma voie, car il n'y a aucune complication dans la programmation.

LA formule de l'écart type est de base :
E = V ^ (1/2)

La variance vaut :
V = (1/n) Somme ( Xi - Xm )^2

Ce sont les définitions de bases. Maintenant, si tu développes le terme ( Xi - Xm )^2, tu obtiens :
V = (1/n) Somme ( Xi^2 - 2*Xi*Xm + Xm^2)

Maintenant remarque que la moyenne : Xm = (1/n) Somme (Xi)
et remplace la, tu obtiens :
V = (1/n) ( Somme(Xi^2) - (1/n)(Somme(Xi))^2 )

Donc il suffit de calcul la somme au fur et à mesure des valeurs introduite. De même, la somme au carré de chaque élément. Et le nombre d'élément "n".

En terme de programmation, cela évite les nœuds au cerveau... à toi de voir ensuite...

Amicalement,
Us.
3
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
29 mars 2011 à 14:42
tu dis "l'écart". Je ne comprends pas. Donne un exemple tout bête
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 14:57
En faite c'est une donnée statistique "l'écart type" et non "l'écart". la définition mathématique c'est: En mathématiques, plus précisément en statistiques et probabilités, l'écart type mesure la dispersion d'une série de valeurs autour de leur moyenne.
ex: l'écart type de 2001, 2007, 2013 est 6
Je ne connais pas non plus la formule mathématique.
Il existe le code:
Application.WorksheetFunction.StDev(Plage) mais c'est pour des cellules adjacentes, fixe, et à insérer dans une cellule.

J'espere que sa te donne plus d'info

Merci d'avance
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
29 mars 2011 à 15:11
Dernière question avant de savoir si je peut t'aider ou non, il y a une formule xls pour cela ?
0
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 15:32
oui formule xls =ecartype(plage)
exemple: =ecartype(A1:A3)
A1=2001
A2=2007
A3=20013

Resultat=6

Cordialement
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
29 mars 2011 à 15:51
Voila mon petit k d o

ActiveCell.FormulaR1C1 = "=STDEV(R[-9]C:R[-1]C)"

(R[-9]C:R[-1]C veut dire qu'il doit prendre en compte les cellule qui sont 9 case au-dessus ("-9) jusque'a la case qui au-dessus de lui (-1). Si t valeur sont endessous de la cellule de résultat alors les valeur dans les [] seront posistives

Si te cellule sont à gauche de la cellule de résultat alors
ActiveCell.FormulaR1C1 = "=STDEV(RC[-2]:RC[-1])" qui veut dire qu'il doit prendre depuis la cellule qui est defois a ça gauche(-2) à la cellule qui est à coté de lui(-1) si le valeur sont à droit alors la valeur des crochets sont positives.

Tien moi au courant
0
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 16:13
En faite, pour des cellules fixes y pas de probleme, je t'explique le code:

'QUANTITE VRAC
'selection de la feuille:
Sheets("Import").Select
'selectionne L1:Range("L1").Select
'Début de la boucle de la ligne 1 à la fin du Tableau
For C = 1 To Selection.End(xlDown)
'Condition: SI [C;ligne]=LC1 et [P;Ligne]=VRAC:
If Range("C" & C) "LC1" And Range("P" & C) "VRAC" Then
'2eme condition: SI [B;Ligne]= Valeur de la cellule [F3] de la feuille Traitement
If Range("B" & C) = Sheets("Traitement").Range("F3") Then
'Alors faire la somme des valeurs de cellules [L;LIgne]:
QteVRAC = QteVRAC + Range("L" & C).Value
End If
End If
Next

Il faut savoir que sa peut etre 1 à 100 cellules qui peuvent correspondre aux conditions et non adjacente et espacé de façon aléatoire.
J'arrive pas à t'envoyer mon fichier excel.
Tu sais comment on peut faire?

Cordilament
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
29 mars 2011 à 16:45
Tu dis "non adjacente et espacé de façon aléatoire. ". Il sont au moins sur la même cellule ou la même ligne ?
0
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 16:55
même colonne mais pas même ligne
0
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 16:56
sa peut etre L3 L6 L23 L78 comme juste L1 L57 ect
0
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
29 mars 2011 à 17:14
La cellule qui aura la formule d’écart serra a la suite ? Par exemple si ça vas de L3 à L57 la formule serra dans L58?
0
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 17:25
non sur une autre feuille
0
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 17:26
justement il y a surrement un autre valeur en L58 pour une autre données dans la base
0
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 17:50
Sa doit etre presque sa, mais le résultat n'est pas bon

merci comme même
0
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 19:04
Je me suis planté l'écartype est de 4,9

la formule de math en prenant tes variable c'est:

Racine carré((1/nb)*somme((Xi-moyenne)^2))

j'ai fait un code en complément de ce que tu m'avais donné mais sa me donne toujours pas le bon résultat, si tu trouve mon erreur:

'QUANTITE VRAC
Sheets("Import").Select
For C = 1 To Selection.End(xlDown)

If Range("C" & C) "LC1" And Range("P" & C) "VRAC" And Range("B" & C) = Sheets("Traitement").Range("F3") Then
somme = somme + Range("L" & C).Value
nb = nb + 1
moyenne = somme / nb
sommecarre = sommecarre + ((Range("L" & C) - moyenne) ^ 2)
End If
Next C
Ecarttype = (sommecarre / nb) ^ (1 / 2)
Sheets("Feuil2").Select
Range("B1").Select
Selection.ClearContents
Sheets("Feuil2").Range("B1") = Ecarttype
MsgBox Ecarttype & Chr(10) & nb & Chr(10) & moyenne & Chr(10) & somme
End Sub

je fais une pause

a tout à l'heure, peut etre

juju
0
Muygiwara56
Messages postés
24
Date d'inscription
mardi 29 mars 2011
Statut
Membre
Dernière intervention
31 juillet 2012

29 mars 2011 à 21:55
Merci pour le temps que tu as passé, tu m'as beaucoup aider, d'ailleur le code que je vais te présenter est pratiquement celui que tu ma donné, j'ai rajouté la racine pour avoir le bon résultat de l'équivalent de la formule excel "= ecartypep()" mais j'ai trouver aussi le code pour l'équivalent de la formule excel 'ecartype()":

Sheets("Import").Select
For C = 1 To Selection.End(xlDown)

If Range("C" & C) "LC1" And Range("P" & C) "VRAC" And Range("B" & C) = Sheets("Traitement").Range("F3") Then
QteVRAC = QteVRAC + Range("L" & C).Value
nbVRAC = nbVRAC + 1
moyenne = QteVRAC / nbVRAC
QteVRACcarre = QteVRACcarre + ((Range("L" & C).Value) ^ 2)
End If
Next C

Ecarttype = (((1 / ( nbVRAC - 1 )) * (QteVRACcarre - (1 / nbVRAC) * (QteVRAC) ^ 2))) ^ (1 / 2)

Sheets("Feuil2").Select
Range("B1").Select
Selection.ClearContents
Sheets("Feuil2").Range("B1") = Ecarttype
MsgBox Ecarttype & Chr(10) & nbVRAC & Chr(10) & moyenne & Chr(10) & QteVRAC
End Sub

Comme tu peux le constater, il fallait le "-1" en plus ( en gras). Si tu veux l'explication clique sur le lien suivant:
http://www-rocq.inria.fr/axis/modulad/archives/numero-37/Notule-Grenier-37/Notule-Grenier-37.pdf

J'aurais bien galéré sans toi

Merci encore et à bientôt peut etre.

juju
0
us_30
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
30 mars 2011 à 13:55
Ah oui, la racine carré en plus... sinon c'était la variance.
Ensuite, le -1 ou pas dépend probablement si tu veux estimer la population ou un échantillon, je suppose sans lire ton lien... Mais là, c'est de la statistique...

A+
Amicalement,
Us.
0