Délivrer un numéro aléatoire (Bis et bis répétita)

JohnBill

XLDnaute Occasionnel
Mes salutations à tout le forum.
Après des recherches infructueuses sur le forum et dans des bouquins spécialisés ( du moins pour ce cas particulier ), quelqu'un peut il me dire s'il existe une formule ( ou un code VBA ) pour attribuer un numéro aléatoire à une liste d'une quarantaine de personnes (7 femmes et 33 hommes) mais en donnant un numéro aléatoire de 1 à 40 aux femmes puis un numéro aléatoire de 1 à 40 aux hommes sans doublonner avec le numéro déjà attribué aux femmes.
Merci d'avance à tout ceux qui voudront bien m'aider et bonne journée à tous.
 

job75

XLDnaute Barbatruc
Re : Délivrer un numéro aléatoire (Bis et bis répétita)

Bonjour JohnBill,

Ne croyez-vous pas qu'un petit fichier serait le bienvenu ?

Cela éviterait de devoir se fatiguer à l'inventer.

Et une remarque : si le numéro attribué à chaque individu doit être unique, la distinction homme/femme est superflue...

A+
 

mercant76

XLDnaute Impliqué
Re : Délivrer un numéro aléatoire (Bis et bis répétita)

bonjour,

tu attribues un N° aléatoire aux hommes et aux femmes en même temps,

aucun intérêt à les séparer, puisque tu ne veux pas de doublons,

et tu attribues 40 N° à 40 personnes.

@+
 

pierrejean

XLDnaute Barbatruc
Re : Délivrer un numéro aléatoire (Bis et bis répétita)

Bonjour JohnBill

Vois si cela te convient

Les nbre de femmes et d'hommes n'ont a priori pas d'importance

Edit: Salut mercant
 

Pièces jointes

  • N°_aleatoire.zip
    12.5 KB · Affichages: 84

JohnBill

XLDnaute Occasionnel
Re : Délivrer un numéro aléatoire (Bis et bis répétita)

Milles excuses. Je suis un gros ane. J'étais tellement obnubilé par le fait que je ne voulais pas que deux femmes puissent tomber dans la même équipe que j'ai réfléchi comme un bébé de six mois.
En fait, le nombre de participants peut être variable (J'adapterais ensuite).
Je joint un bout de fichier dans lequel ma première feuille contient la liste des membres.
La deuxième les membres présents ce jour là.
Et les suivantes, les parties par groupes de 3. Il ne faut pas que deux femmes puissent se retrouver dans le même groupe de 3.
 

Pièces jointes

  • ClasseurTest.xlsx
    20 KB · Affichages: 93
  • ClasseurTest.xlsx
    20 KB · Affichages: 100
  • ClasseurTest.xlsx
    20 KB · Affichages: 103

JohnBill

XLDnaute Occasionnel
Re : Délivrer un numéro aléatoire (Bis et bis répétita)

Job, Mercant et Pierrejean je vous présente mes excuses si je m'exprime mal. Je vais essayer de recommencer.
J'essaye de faire un tirage au sort pour le concours de pétanque hebdomadaire dans mon petit club.
Le groupe est composé de femmes et d'hommes et de samedi en samedi, le nombre de participants n'est jamais identique.
Pour faire le tirage nous ne voulons pas que deux femmes puissent faire partie de la même équipe (C 'est tout mon problème)
Dans la feuille base se trouve la liste des membres.
Dans la feuille inscriptions se trouve la liste des présents après épuration (macro supprime absents).
Je voudrais attribuer à chacun un numéro aléatoire afin de les placer dans les grilles de tirage (Résultats 38, 39 et 40) selon les nombre de participants (Bien entendu, je rajouterais des feuilles selon le nombre de participants (De 20 à 40). La seule contrainte c'est que deux femmes ne puissent pas se retrouver dans la même équipe.
Suis je assez clair ?
Ci joint nouveau fichier.
Merci de votre patience.
 

Pièces jointes

  • ClasseurTest.xlsm
    28.2 KB · Affichages: 95
  • ClasseurTest.xlsm
    28.2 KB · Affichages: 90
  • ClasseurTest.xlsm
    28.2 KB · Affichages: 89

job75

XLDnaute Barbatruc
Re : Délivrer un numéro aléatoire (Bis et bis répétita)

Re,

Voici une solution sur la feuille "Inscriptions", mais elle fonctionnerait aussi bien sur la feuille "Base" :

Code:
Sub Tirage()
Dim N As Byte, NF As Byte, d As Object, i As Byte, tablo, j As Byte
Application.ScreenUpdating = False
Randomize
[E2:E65534].ClearContents
[A:D].Sort [D1], xlAscending, , [C1], xlAscending, Header:=xlYes 'tri, femmes en tête
N = Application.CountIf([D:D], "P") 'nombre de participants
NF = Application.CountIf([C:C], "F") 'nombre de femmes
1 Set d = CreateObject("Scripting.Dictionary")
While d.Count < N
  i = Int((N * Rnd) + 1)
  d(i) = i
Wend
[E2].Resize(N) = Application.Transpose(d.items) 'transcription dans la feuille
tablo = [E2].Resize(NF)
For i = 1 To NF - 1 'analyse des écarts
  For j = i + 1 To NF
    If Abs(tablo(i, 1) - tablo(j, 1)) < 3 Then GoTo 1
  Next
Next
End Sub
Les numéros tirés au sort sont donc les numéros des cases dans la feuille utilisée pour le résultat.

Pour que 2 femmes ne puisse pas se retrouver dans une même équipe de 3, la macro procède ainsi :

- tri préalable du tableau, les femmes se retrouvant en début de liste

- tirage d'une série de nombres entiers aléatoires

- pour 2 femmes quelconques, vérification que l'écart entre les nombres est au moins égal à 3

- si ce n'est pas le cas, on fait un nouveau tirage.

A+
 

Pièces jointes

  • Tirage(1).xls
    70.5 KB · Affichages: 131
  • Tirage(1).xls
    70.5 KB · Affichages: 145
  • Tirage(1).xls
    70.5 KB · Affichages: 150

JohnBill

XLDnaute Occasionnel
Re : Délivrer un numéro aléatoire (Bis et bis répétita)

Merci beaucoup Job (Merci aussi à Mercant et Pierrejean).
Je vais faire des essais avec cette solution sur différents nombre de membres (Car quelquefois nous sommes 20 et quelquefois 40), et je te tiens au courant.
 

JohnBill

XLDnaute Occasionnel
Re : Délivrer un numéro aléatoire (Bis et bis répétita)

Salut à toi Job.
J'ai fait pas mal d'essais sur beaucoup de tirages et cela à l'air de très bien fonctionner.
Je vais commencer à faire les reports sur mes feuilles de tirages puis collationner les résultats pour faire un classement annuel.
Si pb, je me permettrais de revenir à la charge.
Merci encore.
 

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 872
Membres
103 007
dernier inscrit
salma_hayek