VB Problème chiffre après la virgule
Résolu
spoucboss
-
spoucboss -
spoucboss -
Bonjour à tous,
voila mon problème:
j'ai créé un programme avec Access sur différent calcul de moyenne, de variance....
mon programme affiche des fenêtres dans lesquelles on demande de rentrer un effectif, une moyenne puis une variance.
Le problème est que lorsque l'on rentre une valeur a virgule comme 2,36 par exemple
dans ma fenètre d'exécution il n'affiche que 2,00 ou si la valeur rentrée était 2,85 la fenètre d'exécution affichera 3,00
et en plus de cela, les calculs se font avec l'arrondie et pas la valeur initiale...
si quelqu'un peut m'aider je lui serai très reconnaissant
merci d'avance
voici mon VB:
Private Sub exercice3()
Dim T(1 To 51, 1 To 6) As Single
Dim P(1 To 6) As Integer
Dim L As Integer
Dim C As Integer
Dim N As Integer
Dim M As Integer
Dim S As Integer
Dim Nb As Integer
Dim MS As Single
Dim SM As Single
Dim SMM As Single
Dim A As Single
Dim Z As String
Dim Flag_OK As Boolean
L = 0
Z = "Série n° 0"
P(1) = 17
P(2) = 35
P(3) = 53
P(4) = 71
P(5) = 90
P(6) = 110
Do
Z = Left(Z, 8)
Z = Z & (L + 1)
L = L + 1
Flag_OK = False
Do While Not Flag_OK
N = InputBox("Entrez un effectif (0 pour arrêt)", Z, "effectif", 0, 0)
If N < 0 Then MsgBox "Pas d'effectif négatif"
If N >= 0 Then Flag_OK = True
Loop
If N > 0 Then
T(L, 1) = N
M = InputBox("Entrez la moyenne de cet effectif", Z, "moyenne", 0, 0)
T(L, 2) = M
Do
S = InputBox("Entrez la variance de cet effectif ", Z, "variance", 0, 0)
T(L, 4) = S
Loop Until S > 0
End If
If N = 0 Then
If L <= 5 Then
MsgBox "nombre de séries insuffisant"
Else
Exit Do
End If
End If
Loop Until L = 50
Nb = L - 1
' initialisation de la ligne des cumuls
For C = 1 To 6
T(51, C) = 0
Next C
' calcul de A
For L = 1 To Nb
T(L, 3) = T(L, 1) * T(L, 2)
T(51, 1) = T(51, 1) + T(L, 1)
T(51, 2) = T(51, 2) + T(L, 2)
T(51, 3) = T(51, 3) + T(L, 3)
T(51, 4) = T(51, 4) + T(L, 4)
Next L
A = T(51, 3) / T(51, 1)
'calcul de différente colonnes du tableau
For L = 1 To Nb
T(L, 5) = T(L, 4) * T(L, 1)
T(L, 6) = T(L, 1) * (T(L, 2) - A) * (T(L, 2) - A)
T(51, 5) = T(51, 5) + T(L, 5)
T(51, 6) = T(51, 6) + T(L, 6)
Next L
'calcul des paramètres
MS = T(51, 5) / T(51, 1)
SM = T(51, 6) / T(51, 1)
SMM = SM + MS
' edition du tableau
Debug.Print "N° |"; "Effectif |"; "Moyenne |"; "Effectif*moyenne |"; "Variance |"; "Effectif*Variance |"; "ni*(mi-A)² |"
Debug.Print " |"; "ni |"; "mi |"; "ni*mi |"; "s²i |"; "ni*s²i |"; " |"
For L = 1 To Nb
Debug.Print L;
For C = 1 To 6
Debug.Print Tab(P(C)); Format$(T(L, C), "### ##0.00");
Next C
Debug.Print
Next L
Debug.Print "Total ",
For C = 1 To 6
Debug.Print Tab(P(C)); Format$(T(51, C), "### ##0.00");
Next C
Debug.Print
Debug.Print "----------------------------------------------------------------------------------------------------------------------",
Debug.Print
Debug.Print "moyenne du mélange = ", Format(A, "### ##0.00")
Debug.Print "moyenne de la série des variances = ", Format(MS, "### ##0.00")
Debug.Print "variance de la série des moyenne = ", Format(SM, "### ##0.00")
Debug.Print "variance du mélange = ", Format(SMM, "### ##0.00")
End Sub
voila mon problème:
j'ai créé un programme avec Access sur différent calcul de moyenne, de variance....
mon programme affiche des fenêtres dans lesquelles on demande de rentrer un effectif, une moyenne puis une variance.
Le problème est que lorsque l'on rentre une valeur a virgule comme 2,36 par exemple
dans ma fenètre d'exécution il n'affiche que 2,00 ou si la valeur rentrée était 2,85 la fenètre d'exécution affichera 3,00
et en plus de cela, les calculs se font avec l'arrondie et pas la valeur initiale...
si quelqu'un peut m'aider je lui serai très reconnaissant
merci d'avance
voici mon VB:
Private Sub exercice3()
Dim T(1 To 51, 1 To 6) As Single
Dim P(1 To 6) As Integer
Dim L As Integer
Dim C As Integer
Dim N As Integer
Dim M As Integer
Dim S As Integer
Dim Nb As Integer
Dim MS As Single
Dim SM As Single
Dim SMM As Single
Dim A As Single
Dim Z As String
Dim Flag_OK As Boolean
L = 0
Z = "Série n° 0"
P(1) = 17
P(2) = 35
P(3) = 53
P(4) = 71
P(5) = 90
P(6) = 110
Do
Z = Left(Z, 8)
Z = Z & (L + 1)
L = L + 1
Flag_OK = False
Do While Not Flag_OK
N = InputBox("Entrez un effectif (0 pour arrêt)", Z, "effectif", 0, 0)
If N < 0 Then MsgBox "Pas d'effectif négatif"
If N >= 0 Then Flag_OK = True
Loop
If N > 0 Then
T(L, 1) = N
M = InputBox("Entrez la moyenne de cet effectif", Z, "moyenne", 0, 0)
T(L, 2) = M
Do
S = InputBox("Entrez la variance de cet effectif ", Z, "variance", 0, 0)
T(L, 4) = S
Loop Until S > 0
End If
If N = 0 Then
If L <= 5 Then
MsgBox "nombre de séries insuffisant"
Else
Exit Do
End If
End If
Loop Until L = 50
Nb = L - 1
' initialisation de la ligne des cumuls
For C = 1 To 6
T(51, C) = 0
Next C
' calcul de A
For L = 1 To Nb
T(L, 3) = T(L, 1) * T(L, 2)
T(51, 1) = T(51, 1) + T(L, 1)
T(51, 2) = T(51, 2) + T(L, 2)
T(51, 3) = T(51, 3) + T(L, 3)
T(51, 4) = T(51, 4) + T(L, 4)
Next L
A = T(51, 3) / T(51, 1)
'calcul de différente colonnes du tableau
For L = 1 To Nb
T(L, 5) = T(L, 4) * T(L, 1)
T(L, 6) = T(L, 1) * (T(L, 2) - A) * (T(L, 2) - A)
T(51, 5) = T(51, 5) + T(L, 5)
T(51, 6) = T(51, 6) + T(L, 6)
Next L
'calcul des paramètres
MS = T(51, 5) / T(51, 1)
SM = T(51, 6) / T(51, 1)
SMM = SM + MS
' edition du tableau
Debug.Print "N° |"; "Effectif |"; "Moyenne |"; "Effectif*moyenne |"; "Variance |"; "Effectif*Variance |"; "ni*(mi-A)² |"
Debug.Print " |"; "ni |"; "mi |"; "ni*mi |"; "s²i |"; "ni*s²i |"; " |"
For L = 1 To Nb
Debug.Print L;
For C = 1 To 6
Debug.Print Tab(P(C)); Format$(T(L, C), "### ##0.00");
Next C
Debug.Print
Next L
Debug.Print "Total ",
For C = 1 To 6
Debug.Print Tab(P(C)); Format$(T(51, C), "### ##0.00");
Next C
Debug.Print
Debug.Print "----------------------------------------------------------------------------------------------------------------------",
Debug.Print
Debug.Print "moyenne du mélange = ", Format(A, "### ##0.00")
Debug.Print "moyenne de la série des variances = ", Format(MS, "### ##0.00")
Debug.Print "variance de la série des moyenne = ", Format(SM, "### ##0.00")
Debug.Print "variance du mélange = ", Format(SMM, "### ##0.00")
End Sub
A voir également:
- VB Problème chiffre après la virgule
- Excel trier par ordre croissant chiffre - Guide
- Clavier iphone chiffre et lettre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Vb - Télécharger - Langages
- Chiffre en lettre - Télécharger - Outils professionnels
merci beaucoup