V.B.A, séléctions aléatoire mais non répétitives de prénoms

Résolu
Justinette75 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Etudiante en informatique, je travaille sur un projet en VBA. En résumé, je crée un jeu. J'ai créé les macros demandant le prénom des joueurs et qui les placent dans la colonne A les uns à la suite des autres. Mon problème est le suivant : je ne trouve pas dans mes cours la manière dont, par exemple, je pourrais tirer aléatoirement 4 prénoms des 8 joueurs de façon non répétitive, pour les placer (les 4 prénoms tirés) dans la colonne B. L'objectif étant de faire la sélection des joueurs qui pourront participer au jeu.

J'espère avoir été claire dans ma question. Merci de m'avoir lu !

Justine

3 réponses

Utilisateur anonyme
 
Bonjour,

Pour un choix sans répétition, l'astuce consiste à utiliser un tableau de ce qui a déjà été tiré. A chaque tirage, tu fais une recherche dans le tableau pour voir si la valeur est présente.

J'ai fait la même chose pour un jeu de loto.
0
Justinette75 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de votre réponse.
Mais le problème c'est que je n'arrive pas à trouver un programme VBA, qui dans une plage de donné va choisir aléatoirement et sans répétition une cellule et marqué son contenu dans une autre cellule.
ex:
Colonne A................... Colonne B
Alain............................Les 2 sélectionnés sont de manière aléatoire:
Marie.......................... Jules
Jules............................Alain
etc
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

mets tes noms dans un tableau, mélange-le, et colle les 4 premiers.
Ex :
Sub alea4()
    Dim datas As Variant, lig As Long, tmp As String, alea As Long
    datas = Application.Transpose([A1:A8])
    Randomize
    For lig = 1 To 8
        alea = Rnd * 8 + 1
        tmp = datas(alea)
        datas(alea) = datas(lig)
        datas(lig) = tmp
    Next lig
    ReDim Preserve datas(1 To 4)
    [B1:B4] = Application.Transpose(datas)
End Sub

eric

0
Justinette75 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup !
Justine
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
ok, je met en résolu pour toi (en haut vers ton titre, pour la prochaine fois)
eric
0