Affichage d'un tirage au sort

Messages postés
1
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
17 janvier 2010
- - Dernière réponse : jrivet
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
- 13 déc. 2011 à 07:35
bonjour à toutes et tous,
pour commencer bonne et heureuse année à tout le monde,
je suis nouveau et voila mon problème
je souhaite réaliser un petit programme avec des macros
1- j'ai six villes différentes, je souhaite effectuer un tirage au sort pour l'ordre de passage et au moment du tirage je souhaite voir le nom sur mon écran en plein page
si quelqu'un a une solution je vous remercie d'avance
bonne journée à tout le monde (soleil ce jour en saone et loire)
Afficher la suite 

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
0
Merci
Salut la Saone et Loire, ici la Normandie.
Il te faut mettre le nom de chaque ville dans un tableau :
Dim aVilles(0 To 5) As String
et pour le tirage aléatoire :
Un Randomize au démarrage de ton programme (une seule fois)
Une boucle For-Next de 0 à 5
L'instruction Rnd te fournira un chiffre à virgule entre 0 et 0.999999.
Pour transposer ce chiffre en un entier de 0 à 5, il te suffit de le multiplier par 6 (car Rnd ne sort jamais 1) et d'en prendre la partie entière :
iTirage = Int(Rnd() * 6)
Ensuite, comme tu ne veux pas tirer deux fois de suite le même nom, il te faudra trouver une astuce pour mémoriser qu'un élément à déjà été tiré, par exemple en vidant l'élément du tableau :

    Dim aVilles(0 To 5) As String
    Dim r As Integer
    Dim iTirage As Integer
    Randomize   ' Mieux vadrait le mettre dans le Form_Load (si)
    aVilles(0) = "Trifouilli les oies"
    aVilles(1) = "Tarazout"
    aVilles(2) = "Cluny"
    aVilles(3) = "Mâcon"
    aVilles(4) = "Autun"
    aVilles(5) = "Le Creusot"
    For r = 0 To 5
        iTirage = Int(Rnd() * 6)
        Do While aVilles(iTirage) = ""
            iTirage = Int(Rnd() * 6)
            DoEvents
        Loop
        Debug.Print iTirage, aVilles(iTirage)
        aVilles(iTirage) = ""
        DoEvents
    Next r

Regarde le résultat dans la fenêtre de debug (Ctrl-G)
A toi de voir ce que tu feras des noms et tes histoires d'affichage en grand, c'est de la cosmétique

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
45
0
Merci
Salut,
Je tombe par hasard sur ce post et qu'est ce que je vois!! Jack tu es du 71?
Perso je suis d'Autun et j'ai fait mes études au Creusot. Marrant non?

Aller sur ce @ bientôt

@+: Ju£i€n
Pensez: Réponse acceptée
Commenter la réponse de jrivet