VBA Fonction NormInv
Hello tt le monde!
J'ai un petit souci que j'essaies de regler tant bien que mal sous excel en VBA.
J'essaies d'utiliser la fonction NormInv function et de l'appliquer sur plusieurs colonnes
Pour chaque colonne, je dois utiliser un parametre de " standard deviation" different.
Ci apres mon code, apparemment cela bugue au niveau de :
.Cells(i, j).Value = WorksheetFunction.NormInv(Rnd(), NormalMean, NormalSD)et plus particulierement au niveau du parametre "NormalSD"
Est ce que quelqu'un aurait une piste/soluce à me filer? Merci bcp par avance!
Sub Button4_Click()
Dim i As Long 'ligne
Dim j As Integer 'column
Dim vReturn As Variant
Dim NormalMean As Double
Dim NormalSD As Single
Application.ScreenUpdating = False
With Worksheets("A")
For j = 1 To 134
For i = 4 To 152
If IsError(vReturn) Then
.Cells(i, "H") = ""
.Cells(i, "I") = ""
Else
If .Cells(2, j) = "Heure (hrs)" Then
vReturn = Application.Match(.Cells(1, j), Sheets("Data").Range("A:A"), 0)
NormalMean = Application.Index(Sheets("Data").Range("G:G"), vReturn)
NormalSD = Application.Index(Sheets("Data").Range("H:H"), vReturn)
.Cells(3, j).Value = NormalSD
Else
vReturn = Application.Match(.Cells(1, j - 1), Sheets("Data").Range("A:A"), 0)
NormalMean = Application.Index(Sheets("Data").Range("Q:Q"), vReturn)
NormalSD = Application.Index(Sheets("Data").Range("R:R"), vReturn)
.Cells(3, j).Value = NormalSD
End If
Randomize
.Cells(i, j).Value = WorksheetFunction.NormInv(Rnd(), NormalMean, NormalSD)
End If
Next i
Next j
End With
Worksheets("A").Visible = True
Worksheets("A").Activate
End Sub
PS: Voila, si je remplace dans la formule "NormalSD" par ".Cells(3, j).Value" ca ne marche pas mieux
bonsoir
dit moi ce que donne ce code ( les msgboxs)
Sub Button4_Click()
Dim i As Long 'ligne
Dim j As Integer 'column
Dim vReturn As Variant
Dim NormalMean As Double
Dim NormalSD As Single
On Error GoTo g1
Application.ScreenUpdating = False
With Worksheets("A")
For j = 1 To 134
For i = 4 To 152
If IsError(vReturn) Then
.Cells(i, "H") = ""
.Cells(i, "I") = ""
Else
If .Cells(2, j) = "Heure (hrs)" Then
vReturn = Application.Match(.Cells(1, j), Sheets("Data").Range("A:A"), 0)
NormalMean = Application.Index(Sheets("Data").Range("G:G"), vReturn)
NormalSD = Application.Index(Sheets("Data").Range("H:H"), vReturn)
.Cells(3, j).Value = NormalSD
Else
vReturn = Application.Match(.Cells(1, j - 1), Sheets("Data").Range("A:A"), 0)
NormalMean = Application.Index(Sheets("Data").Range("Q:Q"), vReturn)
NormalSD = Application.Index(Sheets("Data").Range("R:R"), vReturn)
.Cells(3, j).Value = NormalSD
End If
Randomize
.Cells(i, j).Value = WorksheetFunction.NormInv(Rnd(), NormalMean, NormalSD)
End If
Next i
Next j
End With
Worksheets("A").Visible = True
Worksheets("A").Activate
g1: MsgBox NormalMean: MsgBox NormalSD: MsgBox Rnd()
End SubBonsoir,
Tout d'abord merci pour ta réponse.
Effectivement, en rajoutant les msgbox, cela remplit mon tableau!
Par contre effectivement quelques "messages" contenant des valeurs sont apparus (4 ou 5 fois), cela veut-il dire que cela plante à certains endroits?
Par ailleurs, je ne suis pas vraiment expert en VBA (d'où mes petits soucis!), à quoi servent ces msgbox concrètement? On outrepasse les éventuels problèmes de calcul/code?
Du coup, pour les messages qui apparaissent à certains moments, faut-il que je fasse une manipulation particulière?
Merci encore pour ton aide.
Bonne soirée/nuit
bonjour
Les images sont elles ordonnées par premier qui apparaisse puis la deuxième puis la troisième.
Puisque : Si la probabilité est inférieure à 0 ou supérieure à 1, la fonction NORMINV renvoie la valeur d'erreur #NUM!
Oui les images sont ordonnées dans ce sens.
1er: chiffre 0.7269
2nd: 17.999
3rd: 54
Merci!
bonjour
Dans le code les msgbox sont ordonnées comme ca :
g1: MsgBox NormalMean: MsgBox NormalSD: MsgBox Rnd()
Alors la troisième msgbox doit être supérieure à 0 et inférieure à 1 et ce n est pas le cas sur tes images
Oui autant pour moi, c'est bien:
1er: 54
2nd: 17.999
3rd: 0.7269
Bonjour
SVP envoyer un exemple de ton fichier en PJ et effacer tt donnees inutile