[VBA Excel] Tirage de personne en aleatoire selon 2 conditions
Tirage de personne en aleatoire selon 2 conditions [VBA Excel] - VB/VBA/VBS - Programmation
MarshPosté le 29-11-2017 à 18:56:54
Bonjour
Pour les besoins d'un generateur de planning, je cherche a faire une macro qui va selectionner 2 personnes chaque personne a 2 critères, competence et presence on doit avec un couple a chaque fois sur la présence, et le niveau doit pas etre inferieur a 2 (les niveau c'est juste 1 et 2) pour l'instant on a 12 personnes, et en principe, ca changera pas
J'ai un tableau avec mes personnes, leur présence et leur niveau dans une feuille, que je stock dans 2 variables tableaux (selon leur presence)
Pour l'instant j'arrive a generer mes couples sans trop de soucis, mais une fois les 6/8 premier couple en place, je commence a tomber dans une boucle infinie a cause de mon random en fait, j'aimerais que une fois un couple est tiré, que je puisse les supprimer de mes tableaux en variable, mais je sais pas faire, une idée ?
Voici mon code pour l'instant
Code :
Function aleat(max)
Randomize
aleat = Int(max * Rnd)
End Function
Sub Tirage()
Dim People_Int(5, 2)
Dim People_Pre(5, 2)
'Declaration des 2 tableaux People
' Tableau interne
Worksheets("Param" ).Activate
Range("B4" ).Select
i = 0
While (ActiveCell.Value <> "" )
People_Int(i, 0) = i
People_Int(i, 1) = ActiveCell.Value
People_Int(i, 2) = ActiveCell.Offset(0, 1).Value
i = i + 1
ActiveCell.Offset(1, 0).Select
Wend
' Tableau Presta
Range("E4" ).Select
j = 0
While (ActiveCell.Value <> "" )
People_Pre(j, 0) = i
People_Pre(j, 1) = ActiveCell.Value
People_Pre(j, 2) = ActiveCell.Offset(0, 1).Value
j = j + 1
ActiveCell.Offset(1, 0).Select
Wend
'on se remet sur la feuille de planning
Worksheets("Planning" ).Activate
'on supprime les champs si deja mis
Range("C4:N4" ).Value = ""
Range("C4" ).Select
'Calcul des binomes Int Presta
pmax = 0
While (pmax < 12)
resul = 1
While (resul <> 0)
'Test du niveau selon le tirage
niv_int = 0
niv_pre = 0
While (niv_int + niv_pre < 2)
tir_int = aleat(max_int)
niv_int = People_Int(tir_int, 2)
tir_pre = aleat(max_pre)
niv_pre = People_Int(tir_pre, 2)
Wend
'Test si deja sorti ou pas
For Each cell In Range("C4:N4" )
If (cell = People_Int(tir_int, 1) Or cell = People_Pre(tir_pre, 1)) Then
Marsh Posté le 29-11-2017 à 18:56:54
Bonjour
Pour les besoins d'un generateur de planning, je cherche a faire une macro qui va selectionner 2 personnes
chaque personne a 2 critères, competence et presence
on doit avec un couple a chaque fois sur la présence, et le niveau doit pas etre inferieur a 2 (les niveau c'est juste 1 et 2)
pour l'instant on a 12 personnes, et en principe, ca changera pas
J'ai un tableau avec mes personnes, leur présence et leur niveau dans une feuille, que je stock dans 2 variables tableaux (selon leur presence)
Pour l'instant j'arrive a generer mes couples sans trop de soucis, mais une fois les 6/8 premier couple en place, je commence a tomber dans une boucle infinie a cause de mon random
en fait, j'aimerais que une fois un couple est tiré, que je puisse les supprimer de mes tableaux en variable, mais je sais pas faire, une idée ?
Voici mon code pour l'instant
---------------
Serveur HFR - OpenTTD