Supprimer une valeur dans un array avec Randomize

Résolu
Bonjour,

En ces périodes de fetes je fais une interface qui tire au "hasard" les gagnants ainsi que les cadeaux.

Pour traiter mes doublons dans mes tables je voudrais éliminer la valeur tiré au sort et ainsi réinitialisé ma table pour procéder a un nouveau tirage.

' fonction gagnant
'TPar est un array contenant la liste des participants, et TGani un array vide pour enregistrer les gagnants
Function TirageP(TPar As Variant, TGani As Variant)
Dim i%, Inti%
' un peu plus de la moitié des participants ont un cadeau
Inti = Int((UBound(TPar) / 2) + 0.5)
ReDim TGani(Inti)
Randomize
For i = 0 To Inti
 TGani(i) = TPar(Int(UBound(TPar) * Rnd))
'a ce moment sortir la valeur TGani dans ma table TPar
Next
End Function


Je n´ai pas vu de remove ou autre fonction donc pense que je dois passer par une boucle et une autre table temporaire mais la je bloque un peu...

J´utilise tout récement des tables, donc si vous avez des commentaires ludiques je suis prenneur aussi :)

Merci d´avance!

1 réponse

  1. Contributeur
    bonjour, moi j'essaierais avec des Collections et pas des tables.
    1. Bonjour yg_be,

      collection.... je vais faire des recherches car jms vu et utilisé, merci pour la piste mais i tu as un petit exemple sous la main je te remercie d´avance.
    2. @GermPeruEst ce que tu saurais s´il est possible de faire un rnd sur un index d´une collection ?
    3. @GermPeruEt ensuite de faire un remove sur l´items. Interessant la collection pas besoin de faire une redimension. gros avantage
    4. Contributeur
      @GermPerurnd sur index: je suggère, au lieu de:
      Int(UBound(TPar) * Rnd)

      de faire:
      Int(1+CPar.Count * Rnd)