Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1465 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Tirage de personne en aleatoire selon 2 conditions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA Excel] Tirage de personne en aleatoire selon 2 conditions

n°2308154
chico008
what the wookie says ?
Posté le 29-11-2017 à 18:56:54  profilanswer
 

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 :
  1. Function aleat(max)
  2. Randomize
  3. aleat = Int(max * Rnd)
  4. End Function
  5. Sub Tirage()
  6. Dim People_Int(5, 2)
  7. Dim People_Pre(5, 2)
  8. 'Declaration des 2 tableaux People
  9. ' Tableau interne
  10. Worksheets("Param" ).Activate
  11. Range("B4" ).Select
  12. i = 0
  13. While (ActiveCell.Value <> "" )
  14.     People_Int(i, 0) = i
  15.     People_Int(i, 1) = ActiveCell.Value
  16.     People_Int(i, 2) = ActiveCell.Offset(0, 1).Value
  17.     i = i + 1
  18.     ActiveCell.Offset(1, 0).Select
  19. Wend
  20. ' Tableau Presta
  21. Range("E4" ).Select
  22. j = 0
  23. While (ActiveCell.Value <> "" )
  24.     People_Pre(j, 0) = i
  25.     People_Pre(j, 1) = ActiveCell.Value
  26.     People_Pre(j, 2) = ActiveCell.Offset(0, 1).Value
  27.     j = j + 1
  28.     ActiveCell.Offset(1, 0).Select
  29. Wend
  30. 'on se remet sur la feuille de planning
  31. Worksheets("Planning" ).Activate
  32. 'on supprime les champs si deja mis
  33. Range("C4:N4" ).Value = ""
  34. Range("C4" ).Select
  35. 'Calcul des binomes Int Presta
  36. pmax = 0
  37. While (pmax < 12)
  38. resul = 1
  39. While (resul <> 0)
  40.     'Test du niveau selon le tirage
  41.     niv_int = 0
  42.     niv_pre = 0
  43.     While (niv_int + niv_pre < 2)
  44.         tir_int = aleat(max_int)
  45.         niv_int = People_Int(tir_int, 2)
  46.         tir_pre = aleat(max_pre)
  47.         niv_pre = People_Int(tir_pre, 2)
  48.     Wend
  49.     'Test si deja sorti ou pas
  50.     For Each cell In Range("C4:N4" )
  51.         If (cell = People_Int(tir_int, 1) Or cell = People_Pre(tir_pre, 1)) Then
  52.             resul = 1
  53.             Exit For
  54.         Else
  55.             resul = 0
  56.         End If
  57.     Next cell
  58. Wend
  59. 'si tout est OK, on met les nom
  60. ActiveCell.Value = People_Int(tir_int, 1)
  61. ActiveCell.Offset(0, 1).Value = People_Pre(tir_pre, 1)
  62. ActiveCell.Offset(0, 2).Select
  63. pmax = pmax + 2
  64. Wend
  65. End Sub


---------------
Serveur HFR - OpenTTD
mood
Publicité
Posté le 29-11-2017 à 18:56:54  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Tirage de personne en aleatoire selon 2 conditions

 

Sujets relatifs
[VBA] Mettre en forme une partie d'une celluleComande excel
Extraire certaines parties PDF d'un dossier vers Excel[VBA Excel] Recuperer une couleur mise en forme par condition
[VBA/HTML] SET de champ qui marche en F8 mais pas en F5[VBA] Lecture fichier texte
[VBA] formatage string[VB /VBA /VBS] Remplir un formulaire HTML a partir d'un word
Besoin d'aide en VBA Excel Concatener + déplacement de donnée 
Plus de sujets relatifs à : [VBA Excel] Tirage de personne en aleatoire selon 2 conditions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR