Nombre "semi-aleatoire" ?

bonjour,

je cherche a creer un outil de revision (verbes irreguliers en anglais) avec une boite de dialogue demandant a l'utilisateur les bonnes reponse par rapport a un verbe en francais (la liste sera sur une feuille cachee...)

j'aimerai le faire de maniere aleatoire et pour ca j'ai trouve ceci qui fonctionne :

Dim NB As Integer
NB = Int((999 - 1 + 1) * Rnd + 1)

mais ce que je voudrai c'est qu'un chiffre n'apparaisse qu'une seule fois (semi aleatoire quoi) tout le temps que le tour complet n'a pas ete fait... la je seche...

quelqu'un a surement une idee super simple, car cela m'etonnerai qu'il y ai besoin de stocker chaque ancien chiffre dans une variabvle differente pour comparer

merci d'avance, greg

PS desole pour les accent je suis a l'etranger

bonjour

une idée de départ :

un tableau avec les verbes en colonne,

une colonne de nombres =ALEA(). Cette colonne contient donc des nombres à virgules tous différents (vu la quantité de chiffres et le peu de verbes irréguliers )

à ce stade il faut figer les ALEA() ainsi : copier tout, collage VALEURS

il te suffit de trier le tableau selon les chiffres, tu obtiens un classement aléatoire

pour le test des élèves, tu affiches les verbes en partant du haut

Salut Gratteux

Tu peux essayer en utilisant une collection, comme ceci

Dim NB As Integer, Liste As New Collection
  On Error Resume Next
  Do
    ' Tirer un nombre au sort
    NB = Int((999 - 1 + 1) * Rnd + 1)
    ' L'ajouter dans la collection
    Liste.Add NB, "" & NB
    ' En cas d'erreur = existe déjà, alors on recommence
  Loop While Err.Number > 0
  On Error GoTo 0

Ensuite tout dépend comment est utiliser cette routine

A+

bonjour merci beaucoup pour vos reponses,

je viens d'essayer ce code, en utilisant la variable NB pour ecrire dans une MsgBox le contenu d'un tableau..

exemple si NB = 4, afficher le contenu de la cellule F a ligne 4...

mais ce code continue a faire des chiffres aleatoire sans exclure le 4 deja fait au passage precedant...

exemple de ce que je cherche sur un tableau de 6 lignes :

3 4 1 2 6 5 (puis stop et calcul d'une note, mais chaque chose en son temps..)

ce que me donne ce code :

2 4 1 1 6 3 5 5 4 2 1 3 6 etc....

sinon pourquoi pqs avec ALEA() mais j'aimerai autant que faire se peut du VBA par plaisir... quoi il devrait etre possible de faire ca aussi en VBA...

Bonjour

Sans fichier il va être très difficile de te comprendre

A+

Bonjour,

Si j'ai bien compris..mettre dans un module général (Module1 par exemple)

Option Explicit

Dim Question() As Boolean
Dim NbQ As Long

'A initialiser avec le OPEN ou nouveau "client"
'0ù pour les tests mettre le cursuer dans la sub et tapre F5
Sub InitialiseTB()
    NbQ = Sheets("FeuilleCachée").Cells(Rows.Count, 1).End(xlUp).Row
    ReDim Question(N)
End Sub

Sub TirerQuestion()
Dim A As Long, Q As Integer
    Randomize Timer 'Pour changer le "tableau aléatoire"
    Do While Question(Q)
        Q = Int(NbQ * Rnd) + 1
        DoEvents 'si toute les question ont étés posées permet d'arèter.
    Loop
    Question(Q) = True
    MsgBox Sheets("FeuilleCachée").Cells(Q, 1)
End Sub

dans le module ThisWorkBook

Private Sub Workbook_Open()
    InitialiseTB
End Sub

Un bouton avec Question suivante qui pointe sur TirerQuestion

Chaque question ne pourra être posée qu'un seule fois.

A+

Rechercher des sujets similaires à "nombre semi aleatoire"