Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme randomize dans macro

8 réponses
Avatar
STEPH B
Bonjour,

Voici mon code
Sub range()
Dim nb_aleatoire
I = 1
Do While Sheets("MESURES_PB").Cells(I, 2) <> ""
I = I + 1
Loop
Sheets("MESURES_PB").Cells(I - 1, 14) = 0
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
Sheets("MESURES_PB").Cells(I - 1, 8) = "=RC[8]*(RC[7]-RC[6])+RC[6]"
If Sheets("MESURES_PB").Cells(I - 1, 15) = "NEG" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 1
End If
If Sheets("MESURES_PB").Cells(I - 1, 15) = "POS" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 10
End If
If Sheets("MESURES_PB").Cells(I - 1, 8) > 1 Then
Sheets("MESURES_PB").range("A1").Value = ""
End If
Sheets("MESURES_PB").Cells(I - 1, 8).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub

EN FAIT MON PROBLEME EST LA FONCTION
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
qui genere toujours le meme chiffre à l'execution de la macro qui peut etre
executer plusieurs fois....

pourrais un peu changer cela au besoin meme de creer une fonction qui
generait ce chiffre et l'appelerai a chaque fois que besoin.

merci d avance.

8 réponses

Avatar
ThierryP
Bonjour,

Je pense qu'en mettant Randomize avant ta fonction, ça devrait le faire.

Le 25/05/2010 10:11, STEPH B a écrit :
Bonjour,

Voici mon code
Sub range()
Dim nb_aleatoire
I = 1
Do While Sheets("MESURES_PB").Cells(I, 2)<> ""
I = I + 1
Loop
Sheets("MESURES_PB").Cells(I - 1, 14) = 0
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
Sheets("MESURES_PB").Cells(I - 1, 8) = "=RC[8]*(RC[7]-RC[6])+RC[6]"
If Sheets("MESURES_PB").Cells(I - 1, 15) = "NEG" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 1
End If
If Sheets("MESURES_PB").Cells(I - 1, 15) = "POS" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 10
End If
If Sheets("MESURES_PB").Cells(I - 1, 8)> 1 Then
Sheets("MESURES_PB").range("A1").Value = ""
End If
Sheets("MESURES_PB").Cells(I - 1, 8).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
End Sub

EN FAIT MON PROBLEME EST LA FONCTION
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
qui genere toujours le meme chiffre à l'execution de la macro qui peut etre
executer plusieurs fois....

pourrais un peu changer cela au besoin meme de creer une fonction qui
generait ce chiffre et l'appelerai a chaque fois que besoin.

merci d avance.





--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline
Avatar
STEPH B
merci thierry de ta reponse... mais je vois pas comment faire!
je mets randomize où?


"ThierryP" a écrit dans le message de news:
%2395OZS%23%
Bonjour,

Je pense qu'en mettant Randomize avant ta fonction, ça devrait le faire.

Le 25/05/2010 10:11, STEPH B a écrit :
Bonjour,

Voici mon code
Sub range()
Dim nb_aleatoire
I = 1
Do While Sheets("MESURES_PB").Cells(I, 2)<> ""
I = I + 1
Loop
Sheets("MESURES_PB").Cells(I - 1, 14) = 0
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
Sheets("MESURES_PB").Cells(I - 1, 8) = "=RC[8]*(RC[7]-RC[6])+RC[6]"
If Sheets("MESURES_PB").Cells(I - 1, 15) = "NEG" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 1
End If
If Sheets("MESURES_PB").Cells(I - 1, 15) = "POS" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 10
End If
If Sheets("MESURES_PB").Cells(I - 1, 8)> 1 Then
Sheets("MESURES_PB").range("A1").Value = ""
End If
Sheets("MESURES_PB").Cells(I - 1, 8).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
End Sub

EN FAIT MON PROBLEME EST LA FONCTION
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
qui genere toujours le meme chiffre à l'execution de la macro qui peut
etre
executer plusieurs fois....

pourrais un peu changer cela au besoin meme de creer une fonction qui
generait ce chiffre et l'appelerai a chaque fois que besoin.

merci d avance.





--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline
Avatar
isabelle
bonjour STEPH,

le chiffre doit t'il être entre 0 et 1 ?
est ce que la cellule est au format standard ?

isabelle

Le 2010-05-25 05:56, STEPH B a écrit :
merci thierry de ta reponse... mais je vois pas comment faire!
je mets randomize où?


"ThierryP" a écrit dans le message de news:
%2395OZS%23%

Bonjour,

Je pense qu'en mettant Randomize avant ta fonction, ça devrait le faire.

Le 25/05/2010 10:11, STEPH B a écrit :

Bonjour,

Voici mon code
Sub range()
Dim nb_aleatoire
I = 1
Do While Sheets("MESURES_PB").Cells(I, 2)<> ""
I = I + 1
Loop
Sheets("MESURES_PB").Cells(I - 1, 14) = 0
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
Sheets("MESURES_PB").Cells(I - 1, 8) = "=RC[8]*(RC[7]-RC[6])+RC[6]"
If Sheets("MESURES_PB").Cells(I - 1, 15) = "NEG" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 1
End If
If Sheets("MESURES_PB").Cells(I - 1, 15) = "POS" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 10
End If
If Sheets("MESURES_PB").Cells(I - 1, 8)> 1 Then
Sheets("MESURES_PB").range("A1").Value = ""
End If
Sheets("MESURES_PB").Cells(I - 1, 8).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
End Sub

EN FAIT MON PROBLEME EST LA FONCTION
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
qui genere toujours le meme chiffre à l'execution de la macro qui peut
etre
executer plusieurs fois....

pourrais un peu changer cela au besoin meme de creer une fonction qui
generait ce chiffre et l'appelerai a chaque fois que besoin.

merci d avance.





--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline





Avatar
STEPH B
c est exactement ca isabelle!



"isabelle" a écrit dans le message de news:
OTQgdm$%
bonjour STEPH,

le chiffre doit t'il être entre 0 et 1 ?
est ce que la cellule est au format standard ?

isabelle

Le 2010-05-25 05:56, STEPH B a écrit :
merci thierry de ta reponse... mais je vois pas comment faire!
je mets randomize où?


"ThierryP" a écrit dans le message de news:
%2395OZS%23%

Bonjour,

Je pense qu'en mettant Randomize avant ta fonction, ça devrait le faire.

Le 25/05/2010 10:11, STEPH B a écrit :

Bonjour,

Voici mon code
Sub range()
Dim nb_aleatoire
I = 1
Do While Sheets("MESURES_PB").Cells(I, 2)<> ""
I = I + 1
Loop
Sheets("MESURES_PB").Cells(I - 1, 14) = 0
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
Sheets("MESURES_PB").Cells(I - 1, 8) = "=RC[8]*(RC[7]-RC[6])+RC[6]"
If Sheets("MESURES_PB").Cells(I - 1, 15) = "NEG" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 1
End If
If Sheets("MESURES_PB").Cells(I - 1, 15) = "POS" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 10
End If
If Sheets("MESURES_PB").Cells(I - 1, 8)> 1 Then
Sheets("MESURES_PB").range("A1").Value = ""
End If
Sheets("MESURES_PB").Cells(I - 1, 8).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
End Sub

EN FAIT MON PROBLEME EST LA FONCTION
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
qui genere toujours le meme chiffre à l'execution de la macro qui peut
etre
executer plusieurs fois....

pourrais un peu changer cela au besoin meme de creer une fonction qui
generait ce chiffre et l'appelerai a chaque fois que besoin.

merci d avance.





--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline





Avatar
isabelle
j'ai fait le test suivant et j'obtient bien 10 chiffres différent,

Sub test1()
For i = 1 To 10
Cells(i, 1) = Abs(Rnd() - Rnd())
Next
End Sub

peut tu tester ?

isabelle

Le 2010-05-25 07:50, STEPH B a écrit :
c est exactement ca isabelle!



"isabelle" a écrit dans le message de news:
OTQgdm$%

bonjour STEPH,

le chiffre doit t'il être entre 0 et 1 ?
est ce que la cellule est au format standard ?

isabelle

Le 2010-05-25 05:56, STEPH B a écrit :

merci thierry de ta reponse... mais je vois pas comment faire!
je mets randomize où?


"ThierryP" a écrit dans le message de news:
%2395OZS%23%


Bonjour,

Je pense qu'en mettant Randomize avant ta fonction, ça devrait le faire.

Le 25/05/2010 10:11, STEPH B a écrit :


Bonjour,

Voici mon code
Sub range()
Dim nb_aleatoire
I = 1
Do While Sheets("MESURES_PB").Cells(I, 2)<> ""
I = I + 1
Loop
Sheets("MESURES_PB").Cells(I - 1, 14) = 0
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
Sheets("MESURES_PB").Cells(I - 1, 8) = "=RC[8]*(RC[7]-RC[6])+RC[6]"
If Sheets("MESURES_PB").Cells(I - 1, 15) = "NEG" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 1
End If
If Sheets("MESURES_PB").Cells(I - 1, 15) = "POS" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 10
End If
If Sheets("MESURES_PB").Cells(I - 1, 8)> 1 Then
Sheets("MESURES_PB").range("A1").Value = ""
End If
Sheets("MESURES_PB").Cells(I - 1, 8).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
End Sub

EN FAIT MON PROBLEME EST LA FONCTION
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
qui genere toujours le meme chiffre à l'execution de la macro qui peut
etre
executer plusieurs fois....

pourrais un peu changer cela au besoin meme de creer une fonction qui
generait ce chiffre et l'appelerai a chaque fois que besoin.

merci d avance.






--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline












Avatar
STEPH B
ben en fait
oui c ce que j avais
mais en fait quand tu ferme et reouvre et re execute la macro ce sont les
memes aléatoires qui sont générés...



"isabelle" a écrit dans le message de news:
u3Gz2LA$
j'ai fait le test suivant et j'obtient bien 10 chiffres différent,

Sub test1()
For i = 1 To 10
Cells(i, 1) = Abs(Rnd() - Rnd())
Next
End Sub

peut tu tester ?

isabelle

Le 2010-05-25 07:50, STEPH B a écrit :
c est exactement ca isabelle!



"isabelle" a écrit dans le message de news:
OTQgdm$%

bonjour STEPH,

le chiffre doit t'il être entre 0 et 1 ?
est ce que la cellule est au format standard ?

isabelle

Le 2010-05-25 05:56, STEPH B a écrit :

merci thierry de ta reponse... mais je vois pas comment faire!
je mets randomize où?


"ThierryP" a écrit dans le message de news:
%2395OZS%23%


Bonjour,

Je pense qu'en mettant Randomize avant ta fonction, ça devrait le
faire.

Le 25/05/2010 10:11, STEPH B a écrit :


Bonjour,

Voici mon code
Sub range()
Dim nb_aleatoire
I = 1
Do While Sheets("MESURES_PB").Cells(I, 2)<> ""
I = I + 1
Loop
Sheets("MESURES_PB").Cells(I - 1, 14) = 0
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
Sheets("MESURES_PB").Cells(I - 1, 8) = "=RC[8]*(RC[7]-RC[6])+RC[6]"
If Sheets("MESURES_PB").Cells(I - 1, 15) = "NEG" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 1
End If
If Sheets("MESURES_PB").Cells(I - 1, 15) = "POS" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 10
End If
If Sheets("MESURES_PB").Cells(I - 1, 8)> 1 Then
Sheets("MESURES_PB").range("A1").Value = ""
End If
Sheets("MESURES_PB").Cells(I - 1, 8).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
End Sub

EN FAIT MON PROBLEME EST LA FONCTION
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
qui genere toujours le meme chiffre à l'execution de la macro qui
peut
etre
executer plusieurs fois....

pourrais un peu changer cela au besoin meme de creer une fonction qui
generait ce chiffre et l'appelerai a chaque fois que besoin.

merci d avance.






--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline












Avatar
ThierryP
Re !

En fait, c'est une instruction VBA (voir aide pour les détails); tu la places
donc juste avant ton utilisation de rnd, et ton générateur sera réinitialisé à
chaque fois (calcul basé sur l'horloge système, de mémoire)

Le 25/05/2010 14:53, STEPH B a écrit :
ben en fait
oui c ce que j avais
mais en fait quand tu ferme et reouvre et re execute la macro ce sont les
memes aléatoires qui sont générés...



"isabelle" a écrit dans le message de news:
u3Gz2LA$
j'ai fait le test suivant et j'obtient bien 10 chiffres différent,

Sub test1()
For i = 1 To 10
Cells(i, 1) = Abs(Rnd() - Rnd())
Next
End Sub

peut tu tester ?

isabelle

Le 2010-05-25 07:50, STEPH B a écrit :
c est exactement ca isabelle!



"isabelle" a écrit dans le message de news:
OTQgdm$%

bonjour STEPH,

le chiffre doit t'il être entre 0 et 1 ?
est ce que la cellule est au format standard ?

isabelle

Le 2010-05-25 05:56, STEPH B a écrit :

merci thierry de ta reponse... mais je vois pas comment faire!
je mets randomize où?


"ThierryP" a écrit dans le message de news:
%2395OZS%23%


Bonjour,

Je pense qu'en mettant Randomize avant ta fonction, ça devrait le
faire.

Le 25/05/2010 10:11, STEPH B a écrit :


Bonjour,

Voici mon code
Sub range()
Dim nb_aleatoire
I = 1
Do While Sheets("MESURES_PB").Cells(I, 2)<> ""
I = I + 1
Loop
Sheets("MESURES_PB").Cells(I - 1, 14) = 0
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
Sheets("MESURES_PB").Cells(I - 1, 8) = "=RC[8]*(RC[7]-RC[6])+RC[6]"
If Sheets("MESURES_PB").Cells(I - 1, 15) = "NEG" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 1
End If
If Sheets("MESURES_PB").Cells(I - 1, 15) = "POS" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 10
End If
If Sheets("MESURES_PB").Cells(I - 1, 8)> 1 Then
Sheets("MESURES_PB").range("A1").Value = ""
End If
Sheets("MESURES_PB").Cells(I - 1, 8).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
End Sub

EN FAIT MON PROBLEME EST LA FONCTION
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
qui genere toujours le meme chiffre à l'execution de la macro qui
peut
etre
executer plusieurs fois....

pourrais un peu changer cela au besoin meme de creer une fonction qui
generait ce chiffre et l'appelerai a chaque fois que besoin.

merci d avance.






--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline





















--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline
Avatar
STEPH B
nikel

merci bcps

ca marche


"ThierryP" a écrit dans le message de news:
OgTnTqA$
Re !

En fait, c'est une instruction VBA (voir aide pour les détails); tu la
places donc juste avant ton utilisation de rnd, et ton générateur sera
réinitialisé à chaque fois (calcul basé sur l'horloge système, de mémoire)

Le 25/05/2010 14:53, STEPH B a écrit :
ben en fait
oui c ce que j avais
mais en fait quand tu ferme et reouvre et re execute la macro ce sont les
memes aléatoires qui sont générés...



"isabelle" a écrit dans le message de news:
u3Gz2LA$
j'ai fait le test suivant et j'obtient bien 10 chiffres différent,

Sub test1()
For i = 1 To 10
Cells(i, 1) = Abs(Rnd() - Rnd())
Next
End Sub

peut tu tester ?

isabelle

Le 2010-05-25 07:50, STEPH B a écrit :
c est exactement ca isabelle!



"isabelle" a écrit dans le message de news:
OTQgdm$%

bonjour STEPH,

le chiffre doit t'il être entre 0 et 1 ?
est ce que la cellule est au format standard ?

isabelle

Le 2010-05-25 05:56, STEPH B a écrit :

merci thierry de ta reponse... mais je vois pas comment faire!
je mets randomize où?


"ThierryP" a écrit dans le message de news:
%2395OZS%23%


Bonjour,

Je pense qu'en mettant Randomize avant ta fonction, ça devrait le
faire.

Le 25/05/2010 10:11, STEPH B a écrit :


Bonjour,

Voici mon code
Sub range()
Dim nb_aleatoire
I = 1
Do While Sheets("MESURES_PB").Cells(I, 2)<> ""
I = I + 1
Loop
Sheets("MESURES_PB").Cells(I - 1, 14) = 0
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
Sheets("MESURES_PB").Cells(I - 1, 8) = "=RC[8]*(RC[7]-RC[6])+RC[6]"
If Sheets("MESURES_PB").Cells(I - 1, 15) = "NEG" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 1
End If
If Sheets("MESURES_PB").Cells(I - 1, 15) = "POS" Then
Sheets("MESURES_PB").Cells(I - 1, 15) = 10
End If
If Sheets("MESURES_PB").Cells(I - 1, 8)> 1 Then
Sheets("MESURES_PB").range("A1").Value = ""
End If
Sheets("MESURES_PB").Cells(I - 1, 8).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues,
Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
End Sub

EN FAIT MON PROBLEME EST LA FONCTION
Sheets("MESURES_PB").Cells(I - 1, 16) = Abs(Rnd() - Rnd())
qui genere toujours le meme chiffre à l'execution de la macro qui
peut
etre
executer plusieurs fois....

pourrais un peu changer cela au besoin meme de creer une fonction
qui
generait ce chiffre et l'appelerai a chaque fois que besoin.

merci d avance.






--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline





















--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline