Tirage au sort aléatoire avec liste déroulante

Bonjour à tous,

Tout d'abord merci par avance pour votre aide. Dans le cadre de la création d'un générateur de question aléatoire, nous retrouvons dans l'onglet "Base de Données" l'ensemble des questions, des réponses et du niveau de la question. Dans l'onglet questionnaire qui génère les questions, nous avons le bouton test qui nous permet de générer 15 questions aléatoires dans cet onglet. De plus, j'aimerais faire en sorte que la ComboBox qui s'ouvre au moment du test puis faire en sorte d'avoir 3 niveaux de difficulté du questionnaire.

Le niveau Pyro Base prendrait en compte uniquement les questions Pyro Base. Le niveau Pyro Pro prendrait en compte les questions Pyro Base et Pyro Pro. Le niveau Pyro Pro Plus prendrait en compte les questions Pyro Base, Pyro Pro et Pyro Pro Plus.

Serait-il donc possible de m'aider sur le choix des questions aléatoires en fonction des niveaux souhaitées ? Merci par avance pour votre aide.

Vous trouverez le fichier en pièce jointe.

Bonjour

Un essai à tester. Te convient--il ?

Bye !

Merci Beaucoup c'est vraiment top. Il y a juste une petite subtilité c'est que à partir du moment ou je rajoute en ligne 50 le niveau Pyro Base, il me fait plus 1 et va donc me chercher la 18ème ligne qui ne correspond pas au niveau souhaitée. Serait-il possible pour vous d'agir cela. Sinon c'est vraiment super top merci beaucoup !

Je ne suis pas sûr d'avoir compris le problème mais essaie ça :

Bye !

Cela ne fonctionne pas. En effet, je pense ne pas avoir été assez calire dans mes explications alors je vais réessayer ahah !

Je disais donc quand j'ajoute dans le classeur "Base de Données une nouvelle question avec le niveau Pyro Base. Celle-ci prendra le numéro 51. Elle se retrouvera donc à la toute fin du tableau. Cependant, le compteur va donc compter non plus 17 niveau Pyro Base mais bien 18. Il ira donc chercher un nombre random jusqu'à 18. Cependant la ligne 18 correspond au niveau Pyro Pro. Le questionnaire ne concernera donc plus que les questions Pyro Base mais aussi une question Pyro Pro etc etc

Alors, peut-être ça, essaie :

Bye !

bonjour TomR35,gmb,

@gmb, je pense que vous devez plutôt utiliser un filtre

Sub gmb()
     Dim Arr, i, sp, x

     reponse = "Pyro pro"                    'la réponse pour le niveau

     With Range("Tableau1").ListObject
          With .Range
               .AutoFilter
               Select Case reponse
                    Case "Pyro Base": .AutoFilter 8, "Pyro Base"     'seulement "Base"
                    Case "Pyro Pro": .AutoFilter 8, "Pyro Pro Plus", xlOr, "Pyro Base"     'les 2
               End Select
          End With

          With .DataBodyRange.Columns(100)   '100 colonnes vers droite, plage temporaire comme brouillon
               .FormulaR1C1 = "=subtotal(103,rc[-99])*rand()"     'seulement les visibles auront une valeur >0
               Arr = Application.Transpose(.Value)     'lire ces données
               .ClearContents
          End With

          .Range.AutoFilter                  'déactiver filtre
     End With

     On Error Resume Next
     For i = 1 To Application.Min(20, UBound(Arr))     'supposons 20 questions
          x = 0: x = WorksheetFunction.Large(Arr, i)     'les i plus grand.valeurs
          If x > 0 Then r = Application.Match(x, Arr, 0): s = s & "," & r Else Exit For
     Next
     On Error GoTo 0

     MsgBox "série aléatoire avec les numéros : " & Mid(s, 2)
     If Len(s) = 0 Then sp = Split(s)
     et puis .... 

End Sub
Rechercher des sujets similaires à "tirage sort aleatoire liste deroulante"