Microsoft 365 Tirage/mélange aléatoire

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Pehache

XLDnaute Nouveau
Bonjour,

Veuillez m'excusez d'abord si ma demande se trouvait être la énième mais après mainte recherche je n'ai pas trouvés quelque chose qui correspondait à ma recherche ou même qui aurait pu s'y adapté et si c'est le cas, veuillez me le pardonner.

Chose simple (ou peut être pas..) : Je cherche à tirer/mélanger mes cellules ( en jaune dans le documents joint) pour qu'elle se retrouve aléatoirement dans le tableau de la feuille suivante. Sans doublons. Je pars pour le moment sur le principe ou il y a des espaces entre chaque lignes de données entrantes et qu'elle ne doivent pas être prisent en compte. Ce sera quelque chose à adapté si ma demande s'avérerait provenir de mars.

Merci d'avance pour votre aide.
 

Pièces jointes

Dernière édition:
Bonjour Pehache, et bienvenu sur XLD,
Un exemple en PJ avec une petite macro.
Bonjour et merci pour l'accueil !

Et bin c'est parfait !
Merci de m'avoir maché le travail car ca ne ressemble à rien de ce que j'ai pu voir et creuser pour avoir ce resultat. Puis je te demander ce qui définit les cellules sources et celles qui "réceptionnent" ? histoire de comprendre le principe et pouvoir l'intégrer à des docs. Je devrais pouvoir ensuite réussir à l'adapter par exemple en intégrant une ligne de 4 de + sur la feuille 1 pour obtenir des poules de 5.

Merci

Edit: enfaite une explication global du code me serait utile bien que j'ai déja les 3 grosses lignes de principe. Car pour un essai de ce que je cite un peu au dessus, Cad de rajouter une ligne, j'obtiens une erreur de macro . Surprenant 😆
 
Dernière édition:
C'était l'hypothèse.
Pour éviter que refaire le travail une troisième fois soit la dernière, soyez sympa et donnez un fichier vraiment représentatif avec les bonnes explications.
Car là ça revient à dire, j'ai des données quelque part débrouillez vous.
Ci joint ma base.
Le même principe qu'auparavant mais les données prises en compte entre B15 et E15 et donnant la possibilité d'ajouter des lignes qui donneront donc une ligne supplémentaire à la seconde feuille (poule de 5 , 6 , 7 etc)

Mes excuses. En procédant avec un fichier test, je souhaitais juste comprendre le fonctionnement et être capable de l'adapter suivant le cas ayant plusieurs format de tableau (6 poules).
 

Pièces jointes

Il n'y a pourtant pas plus simple que d'utiliser un objet ListeAléat.
Si, il est peut être plus simple d'utiliser les fonction perso ListeAl et Hasard.
Il y a même des exemples de tirages par poules simultanées et successives. Que vous faut-il de plus ?
 
Dernière édition:
bonsoir
comme je le dis toujours la meilleure facon (et la plus simple et même la plus sure) de faire du tirage au hasard sans doublons c'est de prendre un array tel quel et de le mélanger au hasard
VB:
Sub test()
    Dim t(), i&, a&, c&, cel As Range
    
   'on rapatri toutes les cellules jaune de la feuil1 dans un array
   With Feuil1
        For i = 3 To 12
            For c = 1 To 4
                If .Cells(i, c) <> "" Then a = a + 1: ReDim Preserve t(1 To a): t(a) = .Cells(i, c)
            Next
        Next
    End With
    
    'on mélange cet array
    For i = 1 To UBound(t):  x = 1 + (Int(Rnd * (UBound(t) - 1))):  tp = t(i): t(i) = t(x): t(x) = tp: Next
    
    a = 0
    'on repose les valeur de l'array dans la plage  de la feuil2
    With Feuil2
        For Each cel In .[A2:D5].Cells: a = a + 1: cel.Value = t(a): Next
    End With
End Sub
 
Bonsoir Pehache, Dranreb, Patrick,
En PJ un troisième et dernier essai.
La feuille poules est remise à jour en fonction du nombre de joueurs.
Si la dernière poule n'est pas complète ( nombre de joueurs non multiple de 4 ) elle est ignorée.

NB: Je n'ai pas compris votre "Nombre d'équipes", c'est plutôt le nombre de joueurs.
Le nombre d'équipes serait plutôt : =ENT(NBVAL(B15:E100)/4)
 

Pièces jointes

Bonsoir Pehache, Dranreb, Patrick,
En PJ un troisième et dernier essai.
La feuille poules est remise à jour en fonction du nombre de joueurs.
Si la dernière poule n'est pas complète ( nombre de joueurs non multiple de 4 ) elle est ignorée.

NB: Je n'ai pas compris votre "Nombre d'équipes", c'est plutôt le nombre de joueurs.
Le nombre d'équipes serait plutôt : =ENT(NBVAL(B15:E100)/4)

Bonsoir a tous,

C'est parfait Sylvanu, juste que l'objectif était que l'ajout d'une ligne de participants doit être réparti sur les 4 poules et non que cela créer une poule supplémentaire.
navré de ne pas avoir été clair sur ce point si c'était le cas.

Merci pour la base fournie.

EDIT: Avec les fichiers test en amont, j'ai réussi a obtenir ce que je voulais. Je n'arrive pas en revanche a éviter la création d'une colonne alors que c'est une ligne qui s'ajoute.
 
Dernière édition:
bonsoir
comme je le dis toujours la meilleure facon (et la plus simple et même la plus sure) de faire du tirage au hasard sans doublons c'est de prendre un array tel quel et de le mélanger au hasard
VB:
Sub test()
    Dim t(), i&, a&, c&, cel As Range
    
   'on rapatri toutes les cellules jaune de la feuil1 dans un array
   With Feuil1
        For i = 3 To 12
            For c = 1 To 4
                If .Cells(i, c) <> "" Then a = a + 1: ReDim Preserve t(1 To a): t(a) = .Cells(i, c)
            Next
        Next
    End With
    
    'on mélange cet array
    For i = 1 To UBound(t):  x = 1 + (Int(Rnd * (UBound(t) - 1))):  tp = t(i): t(i) = t(x): t(x) = tp: Next
    
    a = 0
    'on repose les valeur de l'array dans la plage  de la feuil2
    With Feuil2
        For Each cel In .[A2:D5].Cells: a = a + 1: cel.Value = t(a): Next
    End With
End Sub

Merci pour cette piste. j'explorerai cette technique !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
739
  • Question Question
Autres Macro
Réponses
4
Affichages
1 K
Retour