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

Résolu/Fermé
Justinette75 Messages postés 3 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013 - 14 mai 2013 à 19:05
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 - 15 mai 2013 à 22:47
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
14 mai 2013 à 19:10
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 mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
Modifié par Justinette75 le 14/05/2013 à 20:17
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 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
15 mai 2013 à 12:01
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 mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
15 mai 2013 à 12:49
Merci beaucoup !
Justine
0
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
15 mai 2013 à 22:47
ok, je met en résolu pour toi (en haut vers ton titre, pour la prochaine fois)
eric
0