Tirage au sort

Pour toutes vos questions à propos d'Excel ...

Tirage au sort

Messagepar BEURET » 26 Juin 2007, 14:54

Bonjour à tous,
je n'avais pas eu le temps de vous remercier lors de ma dernière demande, alors mieux vaut tard que jamais : MERCI

aujourd'hui je cherche à réaliser un tirage au sort sans macro, je m'explique :
colonne A : numérotation de 1 à 15 (1.2.3.4...15)
colonne B : les noms des participants (BERTRAND, MARTIN, GERARD...)

je voudrais qu'à chaque fois que j'inscris "suivant" (ou par un bouton) en case C1, j'obtienne par tirage au sort un numéro avec le nom correspondant (par ex : 3 et GERARD). Ca j'y arrive, mais il faudrait que ce nom soit du coup supprimer de ma liste pour qu'il ne puisse plus à nouveau etre tiré au sort.

Ca doit etre facile à réaliser mais je bloque un peu, j'étais parti sur la fonction "alea()" mais il y a surement mieux.

Merci pour votre aide.
BEURET
Membre fidèle
 
Messages: 141
Inscription: 23 Avr 2007, 14:27
Localisation: Chaumont (52)
Version Excel: Excel 2003

Messagepar michel_m » 26 Juin 2007, 19:15

Bonsoir

dans la cellule C1 par exemple tu écris:
=ENT(ALEA()*15+1)

et en D1:
=RECHERCHEV(C1;A1:B15;2;0)

pour tirer au sort, tu appuies sur la touche F9:
Cordialement,
Michel
michel_m
Membre fidèle
 
Messages: 226
Inscription: 03 Mai 2007, 11:55
Localisation: Aubenas
Version Excel: 2003 FR

oui mais après

Messagepar BEURET » 26 Juin 2007, 19:23

merci michel, mais ça je sais faire, mais après, comment faire pour continuer le tirage au sort, jusqu'au 15ème participants.
il me faut trouver la méthode pour qu'après un tirage au sort, ça le supprime de la liste pour qu'il ne soit pas tiré au sort une seconde fois.
Je dois obtenir l'ordre de départ des 15 participants.
BEURET
Membre fidèle
 
Messages: 141
Inscription: 23 Avr 2007, 14:27
Localisation: Chaumont (52)
Version Excel: Excel 2003

Messagepar Mytå » 26 Juin 2007, 20:52

Salut Beuret, Michel et le Forum

Une petite macro avec les noms de B1 à B15
Code: Tout sélectionner
Option Explicit

Sub Tirage()
Randomize
Dim I As Integer
Dim Sortie As Byte
Dim Top As Byte
Dim flag() As Integer
Top = 15 'Nbre de valeurs différentes
ReDim flag(Top)

For I = 1 To Top
  flag(I) = 1
Next I

For I = 1 To Top

Sortie = Int(Rnd() * Top) + 1
                    If flag(Sortie) = 1 Then
                            flag(Sortie) = 0
                     
                    Else
                    While flag(Sortie) = 0
                    Sortie = Int(Rnd() * Top) + 1
                    Wend
                             flag(Sortie) = 0
                    End If

Worksheets("feuil1").Cells(I, 1).Value = Sortie
Next I

Worksheets("feuil1").Range("A1:B15").Sort Key1:=Range("A1"), Order1:=xlAscending

End Sub


Mytå
Dernière édition par Mytå le 26 Juin 2007, 22:51, édité 1 fois.
Mytå
 

Merci

Messagepar BEURET » 26 Juin 2007, 22:10

impeccable ca marche
je ne comprend pas la macro malheureusement.
A quand les cours de macro sur ce site, ca serait bien !
Merci.
BEURET
Membre fidèle
 
Messages: 141
Inscription: 23 Avr 2007, 14:27
Localisation: Chaumont (52)
Version Excel: Excel 2003


Retourner vers Excel - VBA

 


  • Sujets similaires
    Réponses
    Vus
    Dernier message

Utilisateurs en ligne

Utilisateurs parcourant ce forum: Bing [Bot], rico95, weirdmax, Wink et 40 invités