realisation d'équipe aleatoire

  • Initiateur de la discussion Initiateur de la discussion cakeisback
  • Date de début Date de début

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 !

C

cakeisback

Guest
Bonjour.
J'aurrais voulu savoir si vous pouvez m'aider a mon pb.
Je vous explique :
je doit orgasiner une sorte de planning sachant que j'ai 4 équipes a creer.
dans chaque équipe, il doit y avoir 1conducteur et 2 passagés.
je dispose de 4 conducteurs et de 8 passagés.
Je voudrais avoir toutes les équipes possible sans avoir de doublons dans les passagés.
Comment obtenir toutes ces combinaisons?
Merci de votre aide...
 
Re : realisation d'équipe aleatoire

Bonjour cakeisback, bienvenue sur XLD,

Le nombre de combinaisons, donné par la formule = 4*COMBIN(8;2), est de 112.

Ci-joint une solution pour les obtenir, avec ce code :

Code:
Option Base 1

Sub Equipes()
Dim tablo1, tablo2, tablo(), ub1 As Byte, ub2 As Byte, i As Byte, j As Byte, k As Byte, n As Long
tablo1 = Array("C1", "C2", "C3", "C4")
tablo2 = Array("Pas1", "Pas2", "Pas3", "Pas4", "Pas5", "Pas6", "Pas7", "Pas8")
ub1 = UBound(tablo1): ub2 = UBound(tablo2)
ReDim tablo(ub1 * Application.Combin(ub2, 2), 3)
For i = 1 To ub1
  For j = 1 To ub2 - 1
    For k = j + 1 To ub2
      n = n + 1
      tablo(n, 1) = tablo1(i): tablo(n, 2) = tablo2(j): tablo(n, 3) = tablo2(k)
    Next k
  Next j
Next i
Range("A2:C65536").ClearContents
Range("A2:C2").Resize(n) = tablo
End Sub

La macro utilise 3 tableaux :

- tablo1 => liste des conducteurs

- tablo2 => liste des passagers

- tablo => tableau des combinaisons (équipes).

A+
 

Pièces jointes

Dernière édition:
Re : realisation d'équipe aleatoire

Merci beaucoup pour ton aide...
J'aurrais bien voulu remplacer les C1...et le Pass1...par des vrai nom
et du coup je me demandais comment je pouvais mettre en relation mes tableaux de la feuille 2 (cf doc joint)
je pense qu'il faut modifier la formule
tablo1 = Array("C1", "C2", "C3", "C4")
peut tu m'aider encor?
 

Pièces jointes

Re : realisation d'équipe aleatoire

Re,

Au lieu des Array il faut écrire :

Code:
tablo1 = Application.Transpose(Sheets("Feuil2").Range("A2:A5"))
tablo2 = Application.Transpose(Sheets("Feuil2").Range("C2:C9"))

Voir fichier joint.

Par ailleurs vous avez parlé de tirage au sort, il faudrait savoir ce que vous voulez exactement.

Dans ce cas particulier où le nombre de passagers est exactement le double du nombre de conducteurs (4), si vous voulez que chacun soit seulement une fois dans une équipe, il y a 4 équipes à constituer d'une manière aléatoire.

Dans ce cas, pas besoin de la liste des combinaisons. Qu'en pensez-vous ?

A+
 

Pièces jointes

Re : realisation d'équipe aleatoire

Re,

Le fichier joint explicite mon précédent post #4.

La macro :

Code:
Sub Tirage()
Dim cond1 As Range, cond2 As Range, pas1 As Range, pas2 As Range, cel As Range, i As Byte
Set cond1 = Sheets("Feuil1").Range("A2:A5")
Set cond2 = Sheets("Feuil2").Range("A2:A5")
Set pas1 = Sheets("Feuil1").Range("B2:C5")
Set pas2 = Sheets("Feuil2").Range("C2:C9")
Union(cond1, pas1).ClearContents
Randomize
'---tirage au sort conducteur---
For Each cel In cond1
1 i = Int(1 + 4 * Rnd)
  If Application.CountIf(cond1, cond2(i)) Then GoTo 1
  cel = cond2(i)
Next
'---tirage au sort passagers---
For Each cel In pas1
2 i = Int(1 + 8 * Rnd)
  If Application.CountIf(pas1, pas2(i)) Then GoTo 2
  cel = pas2(i)
Next
End Sub

A+
 

Pièces jointes

Dernière édition:
Re : realisation d'équipe aleatoire

Super tout ce que tu fait...
un GRAND MERCI...
Je vais peut être abusé, mais je me demandais si c'était possible de constituer toutes les équipes possibles comme tu a fait pour le dernier fichier excel.
et que toutes ces équipes s'affiche dans une même feuille excel?
En tout cas merci beaucoup de ton aide, tu est vraiment un pro de l'excel.😀
 
Re : realisation d'équipe aleatoire

Bonsoir cakeisback,

(...) je me demandais si c'était possible de constituer toutes les équipes possibles comme tu a fait pour le dernier fichier excel.

Je comprends qu'il faut trouver tous les groupes de 4 équipes sans doublons.

Je ne sais pas à quoi ça peut servir 😉 mais ci-joint une solution.

On trouve 2520 groupes.

Sur mon ordi (2 Ghz), la durée de la procédure est de 14 s.

Edit : il est important que tablo() soit déclaré As String

A+
 

Pièces jointes

Dernière édition:
Re : realisation d'équipe aleatoire

Bonjour.
tout d'abord merci de consacré tout ce temps a mon petit problème.
En fait c'es pas tout a fait cela que je voulais obtenir.
je vais vous expliquer le but de tout ceci :
Il y a 4 tournée par semaine
Tout les jours de la semaine,chaque conducteur effectue une tournée avec 2 passagés.
Chaque équipe reste sur sa tournée toute la semaine et j'aimerais que pour la semaine suivant, les équipes tournent et qu'elle ne soit pas les mêmes.
En gros sur 1 mois, chaque conducteur va effectuer les 4 tournées différentes mais pas avec la même équipe de passagés, ensuite quand le conducteur 1 reviens sur sa 1ere tournée, il faut que ces passagé ne soit pas les même que lors de sa 1er tournée, mais il peut bien sur retrouvé 1 de ces anciens passagés.
exemple :
SEMAINE 1
1ere tournée : conducteur 1 avec pass 1 & 2
2ème tournée : conducteur 2 avec pass 3 & 4
3ème tournée : conducteur 3 avec pass 5 & 6
4ème tournée : conducteur 4 avec pass 7 & 8

SEMAINE 2
1ere tournée : conducteur 2 avec pass 7 & 6
2ème tournée : conducteur 3 avec pass 1 & 8
3ème tournée : conducteur 4 avec pass 3 & 2
4ème tournée : conducteur 1 avec pass 5 & 4

SEMAINE 3
1ere tournée : conducteur 3 avec pass 3 & 8
2ème tournée : conducteur 4 avec pass 5 & 2
3ème tournée : conducteur 1 avec pass 7 & 4
4ème tournée : conducteur 2 avec pass 1 & 6

SEMAINE 4
1ere tournée : conducteur 4 avec pass 4 & 5
2ème tournée : conducteur 1 avec pass 6 & 7
3ème tournée : conducteur 2 avec pass 1 & 8
4ème tournée : conducteur 3 avec pass 3 & 2

Comme vous pouvez le voir c'es un casse tête car dans la semaine 4 y'a déja des équipes de passegés qui étaient ensemble dans les semaines précedentes.
J'ai fait ça car j'aimerais bien aussi que chaque passagé fasse aussi toutes les tournées.
Oui y'a bcp de conditions...c'es pour ça que c'es un casse tête et que je m'arrache les cheveux pour faire ces répartitions..

Qu'en pensez-vous?
 
Re : realisation d'équipe aleatoire

Bonsoir cakeisback,

Avec les semaines le problème devient clair, et intéressant.

Ci-joint le fichier.

Tous les tirages ne donnent pas une solution complète, il faut alors en refaire un.

Vous remarquerez aussi qu'un passager peut se retrouver avec le même conducteur au cours des 4 semaines.

Je verrai demain s'il est possible d'éviter cet inconvénient (mais j'en doute).

A+
 

Pièces jointes

Re : realisation d'équipe aleatoire

Bonjour cakeisback, le forum,

Je crois avoir fait le tour du problème.

Il y a en fait 2 possibilités :

- chaque semaine chaque passager fait une tournée (quelconque) avec un passager différent et un conducteur différent

- chaque semaine chaque passager fait une tournée différente avec un passager différent (et un conducteur quelconque).

Ci-joint les 2 fichiers.

Le cas du conducteur différent et d'une tournée différente (même avec un passager quelconque) est impossible (j'ai essayé sans succès).

NOTA 1 : tous les calculs se font avec le tableau tablo, qui a maintenant 5 colonnes (2 colonnes de repérages).

On peut l'afficher ou l'effacer à volonté par les touches Ctrl+A.

NOTA 2 : comme dans le post précédent, un tirage (aléatoire) peut donner une solution incomplète. Mais dans ces 2 fichiers, la macro refait un tirage jusqu'à ce qu'une solution complète soit trouvée.

A+
 

Pièces jointes

Re : realisation d'équipe aleatoire

Bonjour cakeisback, le forum,

A vouloir trop simplifier la macro Recherche, j'ai fait une bêtise.

Il y avait un problème si 2 passagers s'appelaient par exemple DUBON et DUBONNET...

Prenez donc les fichiers ci-joints.

NOTA : si 2 passagers ont le même nom, le programme boucle sans fin, il faut l'arrêter par la touche Echap.

A+
 

Pièces jointes

Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
1 K
Réponses
5
Affichages
1 K
  • Question Question
Microsoft 365 planning 5*8
Réponses
19
Affichages
1 K
Réponses
40
Affichages
2 K
Retour