Ecart type de valeur de cellule variable dans une base de données [Résolu]

Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 14:20 - Dernière réponse : us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention
- 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
Afficher la suite 

Votre réponse

19 réponses

Meilleure réponse
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 29 mars 2011 à 17:37
3
Merci
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.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de us_30
Meilleure réponse
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 29 mars 2011 à 18:20
3
Merci
Désolé corrige la ligne :
Ecarttype = (sommecarre - sommecarre / nb) / nb

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


Amicalement,
Us.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de us_30
Meilleure réponse
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 29 mars 2011 à 19:19
3
Merci
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.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de us_30
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 29 mars 2011 à 14:42
0
Merci
tu dis "l'écart". Je ne comprends pas. Donne un exemple tout bête
Commenter la réponse de 4u4me4us
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 14:57
0
Merci
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
Commenter la réponse de Muygiwara56
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 29 mars 2011 à 15:11
0
Merci
Dernière question avant de savoir si je peut t'aider ou non, il y a une formule xls pour cela ?
Commenter la réponse de 4u4me4us
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 15:32
0
Merci
oui formule xls =ecartype(plage)
exemple: =ecartype(A1:A3)
A1=2001
A2=2007
A3=20013

Resultat=6

Cordialement
Commenter la réponse de Muygiwara56
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 29 mars 2011 à 15:51
0
Merci
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
Commenter la réponse de 4u4me4us
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 16:13
0
Merci
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
Commenter la réponse de Muygiwara56
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 29 mars 2011 à 16:45
0
Merci
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 ?
Commenter la réponse de 4u4me4us
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 16:55
0
Merci
même colonne mais pas même ligne
Commenter la réponse de Muygiwara56
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 16:56
0
Merci
sa peut etre L3 L6 L23 L78 comme juste L1 L57 ect
Commenter la réponse de Muygiwara56
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 29 mars 2011 à 17:14
0
Merci
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?
Commenter la réponse de 4u4me4us
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 17:25
0
Merci
non sur une autre feuille
Commenter la réponse de Muygiwara56
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 17:26
0
Merci
justement il y a surrement un autre valeur en L58 pour une autre données dans la base
Commenter la réponse de Muygiwara56
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 17:50
0
Merci
Sa doit etre presque sa, mais le résultat n'est pas bon

merci comme même
Commenter la réponse de Muygiwara56
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 19:04
0
Merci
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
Commenter la réponse de Muygiwara56
Muygiwara56 24 Messages postés mardi 29 mars 2011Date d'inscription 31 juillet 2012 Dernière intervention - 29 mars 2011 à 21:55
0
Merci
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
Commenter la réponse de Muygiwara56
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 30 mars 2011 à 13:55
0
Merci
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.
Commenter la réponse de us_30

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.