Randomiz et Rand

Bonjour à tous !

J'ai un petit soucis, je pense, avec la fonction Randomiz.

J'attribue à une variable une valeur aléatoire entre 1 et X (X étant dépendant de la valeur d'une cellule et étant >3 et < 8).

Je dois ensuite lui attribuer une nouvelle valeur aléatoire différente de la précédente, je stock donc l'ancienne et la nouvelle pour les comparer. Ceci 3 fois de suite.

Je dois donc avoir au final une variable aléatoire 1 - 2 et 3 toutes différentes et comprises entre 1 et X.

J'ai opté pour une While :

Randomize

valeuralea = Int(Range("B11").Value * Rnd) + 1
valeur1old = valeuralea

While valeuralea = valeur1old

Randomize
valeuralea = Int(Range("B11").Value * Rnd) + 1

Wend

valeur2old = valeuralea

While valeuralea = valeur2old or valeuralea = valeur1old 

Randomize
valeuralea = Int(Range("B11").Value * Rnd) + 1

Wend

valeur3old = valeuralea

J'ai donc bien au final, en théorie =p, 3 valeurs différentes pour valeur1old, 2old et 3old. Sauf que je ne sors JAMAIS de la première boucle While ...

Je dois logiquement y entrer car valeuralea = valeur1old au moins une fois. Puis j'y reste selon la nouvelle valeur de valeuralea. Dès que celle-ci est différente, je devrai en sortie, mais ce n'est jamais le cas !

J'ai placé une msgbox pour récupérer la valeur de valeuralea dans la boucle et elle ne change jamais ! J'ai pourtant bien mis Randomize.

Merci à tous pour votre aide !

Bonjour

Avec ton fichier, il serait plus commode de tester...

Bye !

Bonjour,

j'ai essayé ton code et il fonctionne. il faut bien veiller à avoir une valeur correcte en B11.

j'ai ajouté un test dans ton code.

Sub aargh()

    Randomize
    If Range("B11").Value < 3 Then MsgBox "B11 doit contenir une valeur >=3": Exit Sub
    valeuralea = Int(Range("B11").Value * Rnd) + 1
    valeur1old = valeuralea

    While valeuralea = valeur1old

        Randomize
        valeuralea = Int(Range("B11").Value * Rnd) + 1

    Wend

    valeur2old = valeuralea

    While valeuralea = valeur2old Or valeuralea = valeur1old

        Randomize
        valeuralea = Int(Range("B11").Value * Rnd) + 1

    Wend

    valeur3old = valeuralea

End Sub

Evidemment ... Ma valeur en B11 n'était pas correcte ...

Une bricole comme d'habitude ! C'est tellement frustrant !!!

Merci beaucoup en tout cas. Tout fonctionne nickel !

Rechercher des sujets similaires à "randomiz rand"