IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tirage au sort


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Agent Technique
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Par défaut Tirage au sort
    Bonjour,

    J'aimerai réaliser un tirage au sort pour des matchs de badminton en double. Le départ étant une liste de x noms (40 pour l'exemple). Le résultat attendu: une équipe de deux face à une autre équipe de deux. Ce tirage étant réalisable plusieurs fois sans doublons dans la mesure du possible.

    D'avance merci de l'aide qui pourrait m'être apportée.

    Sylvain

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Bonsoir Sylvain,
    Cette macro Visual Basic crée un nombre entier aléatoire compris entre 0 et 40:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub nombreAleatoireDansPlageValeurs()
        Dim Mini As Integer, Maxi As Integer
     
        Mini = 0
        Maxi = 40
     
        Randomize
        MsgBox Int((Maxi - Mini + 1) * Rnd + Mini)
    End Sub
    L'instruction Randomize, utilisée sans argument, permet au générateur de nombres aléatoires de démarrer à chaque fois sur une valeur différente.
    En l'absence de Randomize, la fonction Rnd adopte le même nombre comme valeur initiale la première fois qu'elle est appelée.

    Ce code est sur la FAQ Excel
    Alain

  3. #3
    Membre confirmé
    Homme Profil pro
    Agent Technique
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Par défaut
    Alain,

    Merci pour cette macro. J'avoue ne pas maitriser du tout le VBA, je m'y intéresse depuis peu seulement.
    J'apporte quelques précisions quant au résultat que je souhaiterai obtenir:

    -colonne A, une suite de noms. De C1 à F1 je souhaiterai que la "macro qui va bien" sorte 4 noms de façon aléatoire provenant de la liste en A, et ainsi de suite de C2 à F2, etc... et que je puisse renouveler l'opération.

    Est-ce possible ?

    Sylvain

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    une possibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub TirageAlea()
    Dim LastLig As Integer, i As Integer, j As Integer, k As Integer, m As Integer
    Dim Tb As Variant
     
    Application.ScreenUpdating = False
    With Sheets("Feuil1")    'à adpter
         LastLig = .Cells(Rows.Count, 1).End(xlUp).Row
         i = 1: j = 3
         Tb = .Range("A1:A" & LastLig).Value
         Do
              Randomize
              m = Int(LastLig * Rnd() + 1)
              .Cells(i, j).Value = Tb(m, 1)
              For k = m + 1 To LastLig
                   Tb(k - 1, 1) = Tb(k, 1)
              Next k
              If j = 6 Then
                   j = 3
                   i = i + 1
              Else
                   j = j + 1
              End If
              LastLig = LastLig - 1
         Loop While LastLig > 0
    End With
    End Sub

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Il y a quelques temps je m'étais fais un tableau pour un tournoi de backgammon, tournoi de type "Suisse", c'est à dire que chaque équipe rencontre une et une seule fois toutes les autres équipes. Le nombre d'équipes peut être pair ou impair.
    Pour l'attribution du numéro de chaque équipe j'avais procédé par un bon vieux tirage de petits papiers dans un chapeau

    Je te joins le fichier, ça pourra peut-être te servir
    Fichiers attachés Fichiers attachés

  6. #6
    Membre confirmé
    Homme Profil pro
    Agent Technique
    Inscrit en
    Avril 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2009
    Messages : 177
    Par défaut
    Merci fring, pour cette participation. Je vais tenter d'étudier les macros de ton fichier.

    sylvain

    Bonsoir Mercatoq,

    La macro que tu proposes donne le résulat que j'attendais. J'ose approfondir ma demande. Serait-il possible de pouvoir faire des tirages uniquement avec les noms masculin, ou féminin, voire les deux mélangés pour faire des doubles mixtes. Je me dis que si dans une feuille je ne met que les noms masculins j'aurai un tirage n'engageant que les hommes et idem si je met les noms féminins dans une autre. Mais pour un tirage d'équipe mixte ? Est-ce qu'un codage par 1 ou 2 mis en face de chaque nom masculin ou féminin aiderait pour ces différents tirages à réaliser.

    Sylvain

Discussions similaires

  1. Quelle fonction pour faire un tirage au sort de noms
    Par Sofie109 dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/06/2007, 14h52
  2. Tirage au sort
    Par Titeuf82 dans le forum Ada
    Réponses: 5
    Dernier message: 17/04/2007, 11h05
  3. Tirage au sort d'un mot
    Par Dav-D dans le forum C
    Réponses: 39
    Dernier message: 04/01/2007, 17h04
  4. [VBA-E] Tirage au sort avec probabilité
    Par clarisse dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/05/2006, 11h01
  5. Tirage au sort
    Par clampin dans le forum Langage
    Réponses: 2
    Dernier message: 19/12/2005, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo