Affichage aléatoire avec contrainte

Bonjour les amis,

Je viens vers vous aujourd'hui car mon chef me demande quelque chose que je ne sais pas faire du tout.

J'ai un tableau excel avec 12 questions dedans. Il veut, par le biais d'un bouton, quand il clique dessus, que sur une autre feuille s'affiche 10 des 12 questions de manière aléatoire. Avec comme contrainte le fait qu'il y ai 5 d'entres elles en permanence.

En clair, j'ai un tableau, 12 cellules : me faut un contrôle qui m'affiche dans une autre feuille, 5 de ces cellules en permanence, et 5 autres sur les 7 restantes mais aléatoirement. Voilà, je sais pas si j'ai été bien clair. J'aurais vraiment besoin d'un coup de main.

Je vous remercie

Bonne journée

Bonjour Tritium31

Ci-joint un fichier qui devrait te convenir.

Bons tests et bonne continuation.

24aleaquestions.xlsm (16.08 Ko)

Salut Tritium,

Salut X Cellus,

    Do
        iRow = WorksheetFunction.RandBetween(7, 13)
        If Cells(iRow, 2) = "" Then
            Cells(iRow, 2) = WorksheetFunction.Max(Range("B7:B13")) + 1
            .Cells(6 + Cells(iRow, 2)) = Cells(iRow, 1)
        End If
    Loop Until Cells(iRow, 2) = 5

A+

6tritium.xlsm (20.67 Ko)

Merci beaucoup les gars.

Vous m'avez bien aidé.

Je reviens vers vous si j'ai d'autres questions

Bon les gars, je suis devant un petit problème. Je vous mets une capture pour que vous voyez bien. En fait, il faut que les questions permanentes soient celles où il y a un oui écrit devant. Ca, j'ai réussi à le faire. Je suis même plutôt fier c'est la première fois que je touche du VBA^^

En revanche le choix des 5 autres questions aléatoires doit se faire sur la totalité des questions car les permanentes peuvent changer. Du coup, dans le choix des aléatoires, il faut retirer celles qui ont été sélectionnées comme permanentes pour pas qu'elles s'affichent plus d'une fois. Voilà mon petit problème.

essai macro vba

Bonsoir Tritium31,

Il faut prendre l'habitude de bien poser le besoin. Dans ton 1ier message le principe du "oui" qui s'applique différemment pour les questions permanentes n'était pas mentionné.

Bon, mais si tu as avancé un peu plus. Peut-être la solution est de mettre les permanentes tirées avec le "Oui" dans les cinq premières cellules d'une colonne, par exemple F.

De rajouter à la suite les aléatoires (donc les "Non") afin que tu est bien les 12. Voir ma feuille Questions qui séparent les deux sortes de question. Puis de lancer la macro et tu as fini.

Si je comprends bien, tu me dis de trier mes questions de telle sorte à ce que les "oui" soient regroupées en haut et du coup, à la suite y auraient les "non". C'est bien ça ?

Salut Tritium,

Salut X Cellus,

Comme le dit très bien X Cellus, poser un problème sans donner des infos précises et complètes équivaut à tourner autour du pot et à faire perdre du temps à tout le monde.

Tu as bien deviné : un tri préalable facilite le travail! Bien vu, X Cellus!

Voici, d'ailleurs.

  • un clic en [C4:C15] alterne les OUI et "" avec, très justement, le tri suggéré par X Cellus ;
  • la MFC ne fonctionne pas bien (?) quand il y a 5 "OUI"... Déso...
  • un clic sur la cellule "Questions" trie le bloc dans l'ordre des questions ;
  • le bouton rouge fait le travail demandé initialement.
With Sheets(2)
    .Range("A2:A6").Value = Range("E4:E8").Value
    Do
        iRow = WorksheetFunction.RandBetween(9, 15)
        If Cells(iRow, 3) = "" Then
            Cells(iRow, 3) = WorksheetFunction.Max(Range("C9:C15")) + 1
            .Cells(6 + Cells(iRow, 3), 1) = Cells(iRow, 5)
        End If
    Loop Until Cells(iRow, 3) = 5
    Range("C9:C15").Value = ""
    .Activate
End With

A+

8tritium.xlsm (24.43 Ko)

Bonsoir Tritium31, Curulis57

C'est cela, une fois que les "oui" sont regroupées et donc ceux qui sont implicitement des "non" les suivent pour former l'ensemble des questions. Cela facilite la suite du programme.

Aussi bien du mien que celui de Curulis qui passe lui par RandBetween pour rester dans la fourchette de valeur ou s'appliquera le choix aléatoire. Il y a plusieurs possibilités de coder. Ainsi tu en auras vu deux.

Note que pour de grands écarts de valeurs RandBetween est préférable car plus rapide.

Bonne continuation.

Merci c'est niquel.

Bonne journée

Rechercher des sujets similaires à "affichage aleatoire contrainte"