Création d'un quiz aléatoire

Bonjour à toutes et tous,

Je viens solliciter votre aide en tant que novice d'Excel VBA.

Pour vous résumer ma problématique, je suis actuellement en train de construire une base de données qui regroupe l'ensemble des kanjis (=idéogrammes) japonais avec leurs traductions. Cette base de données comportera à terme plusieurs milliers de lignes.

J'aimerais ajouter à cette base de données, sur une deuxième feuille, un outil ludique qui permettra de réviser simplement chaque kanji. Concrètement je voudrais un bouton qui lance un programme qui m'affiche sur la deuxième feuille une vingtaine de kanjis sélectionnés aléatoirement dans la base de données.

J'ai commencé à "programmer" quelque chose avec le peu de notions que j'ai mais je me suis vite retrouvé bloqué sans même être sûr de ce que j'ai produit :

Sub Quiz_20_Kanjis()

    Answer = MsgBox("Voulez-vous générer un quiz aléatoire ?", vbYesNo)

    If Answer = vbNo Then
            Exit Sub

    Else
        Sheets(2).Rows("1:20").Delete
        RandomKanji = 3

             If Sheets(1).Cells(LigneJLPT, 9) = ("Kanji JLPT") Then

End Sub

Autre chose à garder en tête et pour expliquer mes formules: toutes les lignes de la BDD ne doivent pas entrer en compte dans la sélection aléatoire, seulement celles qui sont précisées comme "Kanji JLPT" dans la 9ème colonne intitulée "Type".

J'espère avoir été assez clair dans mes explications, pour résumer je veux faire apparaitre le contenu d'une vingtaine de cellules sélectionnées aléatoirement dans une colonne unique de ma base de donnée et selon un critère textuel ("KanjiJLPT"). Je vous joins un fichier simplifié pour que vous puissiez vous repérer.

Du coup j'aimerais savoir surtout s'il existe une formule qui me permette de "randomiser" la sélection d'une ou plusieurs cellules et d'afficher ou copier/coller cette sélection sur ma deuxième feuille ?

Je remercie d'avance toutes les personnes qui prendront la peine de jeter un œil sur mon problème et j'espère que vous aurez des pistes à me proposer pour m'aider !

Bonne journée à tous :)

Bonjour,

Un test qui ne me sort pas de doublon lors de la randomisation :

Sub Quiz_20_Kanjis()
Dim KANJI(), KANJI_T(0)
With Worksheets("Feuil1")
    If MsgBox("Voulez-vous générer un quiz aléatoire ?", vbYesNo) = vbNo Then Exit Sub
    LR = .Cells(.Rows.Count, 1).End(xlUp).Row 'Défini dernière ligne
    I = 0 'Initialise I à 0
    For L = 3 To LR 'Pour les lignes 3 à LR
        If .Cells(L, 9) = "Kanji JLPT" Then 'Si le critère est respecté
            ReDim Preserve KANJI(I) 'On dimensionne le tableau
            I = I + 1 'On ajoute une dimension
            KANJI(I - 1) = .Cells(L, 2) 'On remplie la dimension d'avant avec le Kanji
        End If
    Next L
End With
For L = 1 To UBound(KANJI) 'Pour L = 1 à l'indice le plus grand des kanji
    REF = Int((UBound(KANJI) - L + 1) * Rnd + L) 'On choisi une ligne aléatoire de l'array KANJI
    KANJI_T(0) = KANJI(L) 'On passe par une table intermédiaire pour randomizer KANJI
    KANJI(L) = KANJI(REF)
    KANJI(REF) = KANJI_T(0)
Next L
ReDim Preserve KANJI(19) 'On redimensionne KANJI pour avoir 20 valeurs
Worksheets("Feuil2").[A3:A22] = Application.Transpose(KANJI) 'On transpose l'array sur A3:A22
End Sub

Cdlt,

De mon côté le 1er kanji tiré aléatoirement est toujours le même et correspond au 1er kanji de la BDD mais hormis cela ca fonctionne parfaitement merci beaucoup c'est génial !

Bonjour,

C'est de ma faute désolé suite à mes multiples tests, ligne 15 apportez la correction suivante :

For L = 0 To UBound(KANJI) 'Pour L = 0 à l'indice le plus grand des kanji

Cdlt,

Ho vraiment pas de problème merci encore pour votre grande aide !

Rechercher des sujets similaires à "creation quiz aleatoire"