Bonjour à tous,
Pour une fois j'ai une question claire et précise...
Y a t'il une fonction permettant de calculer la déviation sous VBA?
Merci de votre aide,
Johann
Bonjour à tous,
Pour une fois j'ai une question claire et précise...
Y a t'il une fonction permettant de calculer la déviation sous VBA?
Merci de votre aide,
Johann
Déviation de quoi?Pour une fois j'ai une question claire et précise...
La je trravail sur la déviation d'une trajectoire semi géodésique sur une surface ellipsoidale. Si c'est ce que tu veux alors non, ou alors ca m'arrangerais de le savoir
une recher google parle pas mal de la déviation des rayon lumineux lors d'un changement de milieu (loi de descarte) mais aussi plus complexe de la déviation d'eu à la gravitation, mais dans une première approche on peu approché ca par une variation continu d'indice du milieu ca marche bien en plus on retombe sur la loi de descarte.
Sinon un des résultats renvoi sur developpez .com et la on parle de la déviation d'une variable au court du temps (en gros de l'approx numérique de la dérivé en fonction de t).
Désolé,
je cherchais pas aussi compliqué.
Voilà, je x valeurs dans un tabeau (5, 7, 9, ...),
je souhaite calculer la déviation, par rapport à la moyenne, de ces valeurs..., sachant le tableau n'est pas fixe...
J'espère que je suis assez clair cette fois.
Johann
Salut,
voici l'instruction demandée. Ici on calcule la déviation d'une série de données existantes dans la colonne A (de la ligne 1 jusqu'à la ligne 50) :
;-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 X = Application.WorksheetFunction.StDev(Range("A1:A50"))
Merci Lonely1,
le problème, ce que je ne sais pas à quelle ligne s'arrete la série de données.
J'ai essayé avec
ou a désigne la ligne à laquelle se termine ma série de donnés, mais cette formule me renvoie 0 dans tous les cas!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dev = Application.WorksheetFunction.StDev(Range("B2", "B" & a)) Range("B" & a + 4).Value = Dev
Bonjour.
Tu parles de la variance?
Pour ton code, essaiesCordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range("B2:B" & a)
PGZ
Bonjour pgz,
Je ne parle pas de variance, mais belle et bien de déviation.
Merci pour ton code, mais j'avais déjà essayé, et le résultat est une fois de plus 0!!
J'avoue que je comprends pas trop!!
Quand tu affiche a tu as quoi comme valeur?
Si ta des problème pour connaitre la valeur de a regarde ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part msgbox("a")
Après plusieurs vérification,
Ce que je recherche, c'est l'écart type!!
Je pense que je devrais trouver la fonction....![]()
Salut
Peut être comme ça
Ou encore en une ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dev = Application.WorksheetFunction.StDev(Range("B2", cells(rows.count,"B").End(XlUp))) cells(rows.count,"B").End(XlUp).Offset(4,0).value = Dev
En esperant tomber juste
Code : Sélectionner tout - Visualiser dans une fenêtre à part cells(rows.count,"B").End(XlUp).Offset(4,0).value = Application.WorksheetFunction.StDev(Range("B2", cells(rows.count,"B").End(XlUp)))
A++
Qwaz
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et SeulTutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Sauf que la déviation, ça n'existe pas. StDEv, ça doit être l'écart-type.
Pour ton pb, si tu as plusieurs feuilles, il faudrait mettre quelque chose devant le RangeEt si ça continue, vérifie la valeur de a.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Worksheets("NomFeuille").Range("B2:B" & a)
Cordialement,
PGZ
Je me disai bien que en francais je n'aivais jamais vu deviation. standard deviation est la tradution de ecart type pour nos amis anglo saxon
Si j'affiche "a"?
Tout dépend de la "longeurs" de ma série de donnés... Si j'ai deux ligne, alors a=3 et ainsi de suite.
Merci QWAZERTY pour le code,
mais j'ai toujours 0 en sortie...
Re,
Petit point sur le problème.
Si je précise la feuille, la valeur retournée est toujours 0, bien que la valeur de a soit la bonne...
Ah, les mystères de la programmation![]()
Tu peux montrer où tu en es de ton code?
Pas de problème.
Voici le code entier:
Et voici... Le problème est toujours là, cependant, il y a du nouveau. Si j'importe plus de deux fichiers, le résultat pour la valeur de l#écart type est toujours de 1!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub Sheet_resistance() Set NewBook = Workbooks.Add 'creation d'un nouveau fichier Dim nom_fichier As String nom_fichier = ActiveWorkbook.Name Dim Counter 'Declaration de counter Counter = Application.GetOpenFilename(fileFilter:=",*.map", MultiSelect:=True) Application.ScreenUpdating = False Dim a, Dev As Integer a = 1 'initialisation a 1 On Error GoTo suite While Counter(a) <> "" 'Condition Workbooks.OpenText Filename:=Counter(a), Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote Dim file, newname, average, average_value, deviation, deviation_value, unit As String 'declaration de la variable newname comme charactere file = ActiveWorkbook.Name newname = ActiveSheet.Name average = Range("D1") average_value = Range("C2") deviation = Range("E1") deviation_value = Range("D2") unit = Range("E2") Windows(nom_fichier).Activate Worksheets(1).Range("A" & a + 1) = newname Worksheets(1).Range("B" & a + 1) = average_value Worksheets(1).Range("C" & a + 1) = deviation_value a = a + 1 'fermeture de file Windows(file).Activate ActiveWindow.Close savechanges:=False Wend %%%%%%%%%%%%%%%%%%%%%%%% suite: 'Mise en forme Windows(nom_fichier).Activate Range("A1").Value = "Sample Name" Range("B1").Value = average & unit Range("C1").Value = deviation Range("B" & a + 2).Value = "=AVERAGE(R[" & CStr(-a) & "]C:R[-1]C)" Range("C" & a + 2).Value = "=AVERAGE(R[" & CStr(-a) & "]C:R[-1]C)" Range("A" & a + 2).Value = "Average" Range("A" & a + 4).Value = "Deviation" Dev = Application.WorksheetFunction.StDev(Range("B2:B" & a)) Worksheets(1).Range("B" & a + 4).Value = Dev MsgBox a Name = "Sheet_Resistance_Resume" Range("A1:F1").Font.Bold = True Cells.EntireColumn.AutoFit Cells.HorizontalAlignment = xlCenter Application.ScreenUpdating = True 'Mise a jour de l'ecran Application.Dialogs(xlDialogSaveAs).Show 'Ouvre la boite de dialogue save as End Sub
En passant, je sais que la boucle While n'est pas terrible, je suis tout oui à vos suggestions pour améliorations.
Merci.
Je pense avoir trouver mon erreur!! Quel Boulet
Je déclarais ma variable "dev" comme "Integer"....
En la remplaçant par "string", çà fonctionne.
Merci de votre aide,
Johann
ET donc tu avais juste oublié de préciser que tu travaillais sur un autre classeur...
Oublie les .activate, .Select, ActiveWorkbook, ...
Quand tu veux un range d'un autre classeurou alors
Code : Sélectionner tout - Visualiser dans une fenêtre à part NewBook.Worksheets("NomFeuille").Range(...)PGZ
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 With NewBook.Worksheets("NomFeuille") .Range(ceci) = ... .Range(Cela) .... End With
Salut pgz,
Je comprends pas très bien ta remarque concernant les classeurs. En effet, ma série de données et le calcul de l'écart type sont dans le meme classeur et la meme feuille...
Puis-je te demandé de plus amples détails STP?
Pour la suite, je suivrais tes conseils et tenterrai de ne plus utiliser les .activate
Re
On gagnerait sans doute du temps si tu fournissais un Zip avec les fichiers nécessaire a l'exécution de ton code.
En ce qui concerne le code par lui même, commence par désactiver la ligne "On error Resume Next", ce genre de ligne ne se rajoute qu'a la toute fin de la création d'un code, quand il est en principe exant de bugg, il y a de grande chance qu'une partie de ton code plante et la macro passe a la suite ... d'ou certainement le 0 final.
a++
Qwaz
MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
Ma page perso DVP
Dernier et SeulTutoriel : VBA & Internet Explorer
Dernière contribution : Lien Tableau Structuré et UserForm
L'utilisation de l’éditeur de message
Partager