chico008 what the wookie says ? | 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
- resul = 1
- Exit For
- Else
- resul = 0
- End If
- Next cell
- Wend
- 'si tout est OK, on met les nom
- ActiveCell.Value = People_Int(tir_int, 1)
- ActiveCell.Offset(0, 1).Value = People_Pre(tir_pre, 1)
- ActiveCell.Offset(0, 2).Select
- pmax = pmax + 2
- Wend
- End Sub
|
---------------
Serveur HFR - OpenTTD
|