Sub aleatoire()
Application.ScreenUpdating = False
Dim i As Integer, nb As Integer, a As Integer, b As Integer, dico As Object
Set dico = CreateObject("Scripting.Dictionary")
nb = 10 'nombre de lignes du tableau
a = -1 'limite inférieur
b = 1.75 'limite supérieure
For i = 1 To nb
'Randomize 'faut-il ou pas le mettre ???
dico(i) = Int(b - a + 1) * Rnd() + a 'bidouillage algorithmique
Next
[A2].Resize(dico.Count, 1) = Application.Transpose(dico.items)
Application.ScreenUpdating = True
End Sub
Sub Aleatoire(LimInf As Double, LimSup As Double, plage As Range, Virgule As Byte)
'Dresse une liste de nombres aléatoires
'- LimInf : la plus petite valeur possible de la fourchette de nombres possibles
'- LimSup : la plus grande valeur possible de la fourchette de nombres possibles
'- Plage : plage où apparaissent les nombres aléatoires
'- Virgule : si = 0 --> nombres entiers
' si > 0 --> détermine alors le nombre de décimales après la virgule
'job75 / Magic_Doctor
Dim NbLgn As Long, dico As Object
NbLgn = plage.Rows.Count 'nombre de lignes de la plage [Plage]
If (LimSup - LimInf) * 10 ^ Virgule < NbLgn Then End 'arrête tout
Set dico = CreateObject("Scripting.Dictionary")
Randomize
While dico.Count < NbLgn
dico(Round((LimSup - LimInf) * Rnd + LimInf, Virgule)) = ""
Wend
plage = Application.Transpose(dico.keys)
End Sub
Sub Aleatoire(LimInf As Double, LimSup As Double, plage As Range, Virgule As Byte)
'Dresse une liste de nombres aléatoires
'- LimInf : la plus petite valeur possible de la fourchette de nombres possibles
'- LimSup : la plus grande valeur possible de la fourchette de nombres possibles
'- Plage : plage où apparaissent les nombres aléatoires
'- Virgule : si = 0 --> nombres entiers
' si > 0 --> détermine alors le nombre de décimales après la virgule
'job75 / Magic_Doctor
Dim NbLgn As Long, dico As Object, x$, y$
NbLgn = plage.Rows.Count 'nombre de lignes de la plage [Plage]
If (LimSup - LimInf) * 10 ^ Virgule < NbLgn Then End
Set dico = CreateObject("Scripting.Dictionary")
Randomize
While dico.Count < NbLgn
x = Int((LimSup - LimInf) * Rnd + LimInf)
y = ""
If Virgule Then y = "." & Mid(Application.Round(Rnd, Virgule), 3)
dico(x & y) = ""
Wend
plage = Application.Transpose(dico.keys)
End Sub
With Selection
.NumberFormat = "@"
Sub Aleatoire(LimInf As Double, LimSup As Double, plage As Range, Virgule As Byte)
'Dresse une liste de nombres aléatoires
'- LimInf : la plus petite valeur possible de la fourchette de nombres possibles
'- LimSup : la plus grande valeur possible de la fourchette de nombres possibles
'- Plage : plage où apparaissent les nombres aléatoires
'- Virgule : si = 0 --> nombres entiers
' si > 0 --> détermine alors le nombre de décimales après la virgule
'job75 / Magic_Doctor
Dim NbLgn As Long, dico As Object, x$, y$
NbLgn = plage.Rows.Count 'nombre de lignes de la plage [Plage]
If (LimSup - LimInf) * 10 ^ Virgule < NbLgn Then End
Set dico = CreateObject("Scripting.Dictionary")
Randomize
While dico.Count < NbLgn
x = Int((LimSup - LimInf) * Rnd + LimInf)
y = ""
If Virgule Then y = Mid(Format(CDbl(Rnd), "0." & String(Virgule, "0")), 2)
dico(x & y) = ""
Wend
plage = Application.Transpose(dico.keys)
End Sub
Sub Aleatoire(LimInf As Double, LimSup As Double, plage As Range, Virgule As Byte)
'Dresse une liste de nombres aléatoires
'- LimInf : la plus petite valeur possible de la fourchette de nombres possibles
'- LimSup : la plus grande valeur possible de la fourchette de nombres possibles
'- Plage : plage où apparaissent les nombres aléatoires
'- Virgule : si = 0 --> nombres entiers
' si > 0 --> détermine alors le nombre de décimales après la virgule
'job75 / Magic_Doctor
Dim NbLgn As Long, dico As Object, x$, y$
NbLgn = plage.Rows.Count 'nombre de lignes de la plage [Plage]
If (LimSup - LimInf) * 10 ^ Virgule < NbLgn Then End
Set dico = CreateObject("Scripting.Dictionary")
Randomize
While dico.Count < NbLgn
x = Int((LimSup - LimInf) * Rnd + LimInf)
y = ""
If Virgule Then
If Virgule < 16 Then
y = Mid(Format(CDbl(Rnd), "0." & String(Virgule, "0")), 2)
Else
y = Mid(Format(CDbl(Rnd), "0." & String(15, "0")), 2)
y = y & Mid(Format(CDbl(Rnd), "0." & String(Virgule - 15, "0")), 3)
End If
End If
dico(x & y) = ""
Wend
plage = Application.Transpose(dico.keys)
End Sub
Mais, une question, pour la culture : à quoi, ou dans quels domaines, sert une telle précision ?
x = Int((LimSup - LimInf) * Rnd + LimInf)
Sub Aleatoire(LimInf As Double, crochet1 as string, LimSup As Double, crochet2 as string, plage As Range, Virgule As Byte)
Sub Aleatoire(LimInf As Double, "[", LimSup As Double, "]", plage As Range, Virgule As Byte)
Sub Aleatoire(LimInf As Double, "[", LimSup As Double, "[", plage As Range, Virgule As Byte)
Sub Aleatoire(LimInf As Double, "]", LimSup As Double, "]", plage As Range, Virgule As Byte)
Sub Aleatoire(LimInf As Double, "]", LimSup As Double, "[", plage As Range, Virgule As Byte)
Sub Aleatoire(LimInf&, crochet1$, LimSup&, crochet2$, plage As Range, Virgule As Byte)
Dim NbLgn As Long, dico As Object, x$, y$
If crochet1 <> "[" And crochet1 <> "]" Or crochet2 <> "[" And crochet2 <> "]" Then End
If crochet1 = "]" Then LimInf = LimInf + 1
If crochet2 = "]" Then LimSup = LimSup + 1
'-----
Sub Aleatoire(LimInf As Long, Crochet1 As String, LimSup As Long, Crochet2 As String, virgule As Byte, Plage As Range)
'Dresse une liste de nombres aléatoires compris entre 2 limites établies
'- LimInf : la plus petite valeur possible de la fourchette de nombres possibles
'- Crochet1 : si "[" --> LimInf est inclue
' si "]" --> LimInf est exclue
'- LimSup : la plus grande valeur possible de la fourchette de nombres possibles
'- Crochet2 : si "]" --> LimSup est inclue
' si "[" --> LimSup est exclue
'- Virgule : si = 0 --> nombres entiers
' si > 0 --> détermine alors le nombre de décimales après la virgule (max : 30)
'- Plage : plage où apparaissent les nombres aléatoires
'job75 / Magic_Doctor
Dim NbLgn As Long, dico As Object, X$, Y$
If Crochet1 <> "[" And Crochet1 <> "]" Or Crochet2 <> "[" And Crochet2 <> "]" Then End
If Crochet1 = "]" Then LimInf = LimInf + 1 / 10 ^ virgule
If Crochet2 = "[" Then LimSup = LimSup - 1 / 10 ^ virgule
NbLgn = Plage.Rows.Count 'nombre de lignes de la plage [Plage]
If (LimSup - LimInf) * 10 ^ virgule < NbLgn Then End
Set dico = CreateObject("Scripting.Dictionary")
Randomize
While dico.Count < NbLgn
X = Int((LimSup - LimInf) * Rnd + LimInf)
Y = ""
If virgule Then
If virgule < 16 Then
Y = Mid(Format(CDbl(Rnd), "0." & String(virgule, "0")), 2)
Else
Y = Mid(Format(CDbl(Rnd), "0." & String(15, "0")), 2)
Y = Y & Mid(Format(CDbl(Rnd), "0." & String(virgule - 15, "0")), 3)
End If
End If
dico(X & Y) = ""
Wend
Plage = Application.Transpose(dico.keys)
End Sub