Générer un nombre aléatoire sans remise

Bonjour,

Dans le cadre d'un projet académique, je souhaiterais tirer des questions aléatoirement provenant d'un fichier excel. Pour cela, il me faut créer un nombre aléatoire (entre 1 et 54) sauf celui tirer au tirage précédent et ainsi de suite.

Voici mon code:

Private Sub CommandButton1_Click()

Dim Ligne As Integer
Dim Points As Intgeger
Dim i As Integer
    If CommandButton1.Caption = "COMMENCER LA DRAFT" Then
        CommandButton1.Caption = "VALIDEZ"
        Ligne = Int(54 * Rnd) + 2
        Points = 0
        i = 0
        Call Questions_Reponses
        Frame1.Visible = True
    Else
        Points = Points + Correction
        Ligne = Int(54 * Rnd) + 2
        i = i + 1
        Call Questions_Reponses
            If i = 5 Then
                MsgBox ("Vous avez obtenu " & Points & " points")
                Call Config_Initiale_Controles
                Exit Sub
            End If
            Call Questions_Reponses
    End If

End Sub

Pour la 15e ligne de code, je voudrais donc ajouter que ce tirage aléatoire ne doit pas comprendre le nombre tirer précédemment.

Auriez vous une idée de résolution ?

Merci d'avance

Cordialement

bonjour,

une proposition non testée

Dim tirage(0 To 54)
Dim i As Integer

Private Sub CommandButton1_Click()

    Dim Ligne As Integer
    Dim Points As Intgeger

    If tirage(54) = 0 Then
        For ITab = 1 To 54
            tirage(ITab) = ITab
        Next ITab
        tirage(0) = 54
    End If
    q = aleatoire(1, tirage(0))
    Ligne = tirage(q) + 2
    tirage(q) = tirage(tirage(0))
    tirage(0) = tirage(0) - 1
    If CommandButton1.Caption = "COMMENCER LA DRAFT" Then
        CommandButton1.Caption = "VALIDEZ"
        Points = 0
        i = 0
        Call Questions_Reponses
        Frame1.Visible = True
    Else
        Points = Points + Correction
        i = i + 1
        Call Questions_Reponses
        If i = 5 Then
            MsgBox ("Vous avez obtenu " & Points & " points")
            Call Config_Initiale_Controles
            Exit Sub
        End If
        Call Questions_Reponses
    End If

End Sub

Function aleatoire(borne_inférieure, borne_supérieure)
    aleatoire = Int(Rnd() * (borne_supérieure - borne_inférieure + 1)) + borne_inférieure
End Function

Merci Beaucoup, ce code fonctionne de mon coté. En revanche, étant donné que j'ai affecté à mes cellules un nombre de points en fonction de la couleur, ce code a semblé décaler mes affectations.

Voici le bout de code:

Function Correction() As Integer 'Nombres de points en fonction des réponses
    Correction = 0
    With Sheets("Feuil1")
        If OptionButton1.Value = True And .Range("B" & Ligne).Interior.ColorIndex = 6 Then 'ColorIndex 6 = Jaune
            Correction = 2
        ElseIf OptionButton1.Value = True And .Range("B" & Ligne).Interior.ColorIndex = 3 Then 'ColorIndex 3 = Rouge
            Correction = -1
        ElseIf OptionButton2.Value = True And .Range("C" & Ligne).Interior.ColorIndex = 6 Then
            Correction = 2
        ElseIf OptionButton2.Value = True And .Range("C" & Ligne).Interior.ColorIndex = 3 Then
            Correction = -1
        ElseIf OptionButton3.Value = True And .Range("D" & Ligne).Interior.ColorIndex = 6 Then
            Correction = 2
        ElseIf OptionButton3.Value = True And .Range("D" & Ligne).Interior.ColorIndex = 3 Then
            Correction = -1
        ElseIf OptionButton4 = True And .Range("E" & Ligne).Interior.ColorIndex = 5 Then 'ColorIndex 5 = Bleu
            Correction = 0
        End If
    End With

End Function

Lorsque j'exécute ce code, on ne me renvoie le résultat théorique. Avez vous une idée ?

Bonsoir,

Avez vous une idée ?

non, pas sans un fichier exemple représentatif ni sans avoir une vue complète sur le code. par exemple, où et comment est géré la valeur de la variable Ligne ? Sur base du code qui tu as mis, ta variable ligne est vide et ce code tel quel ne peut pas fonctionner. (erreur 1004), si je fais le lien avec la correction précédente, ligne reçoit bien une valeur mais elle est locale à la procédure CommandButton1_Click et son contenu n'est pas utilisable dans la procédure correction.

Rechercher des sujets similaires à "generer nombre aleatoire remise"