Supprimer une valeur dans un array avec Randomize

Résolu/Fermé
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 5 déc. 2017 à 14:35
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 5 déc. 2017 à 19:59
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

yg_be Messages postés 23337 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 Ambassadeur 1 551
5 déc. 2017 à 15:04
bonjour, moi j'essaierais avec des Collections et pas des tables.
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
5 déc. 2017 à 15:26
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.
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 > GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
5 déc. 2017 à 15:57
Est ce que tu saurais s´il est possible de faire un rnd sur un index d´une collection ?
0
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 > GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
5 déc. 2017 à 16:03
Et ensuite de faire un remove sur l´items. Interessant la collection pas besoin de faire une redimension. gros avantage
0
yg_be Messages postés 23337 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
5 déc. 2017 à 17:13
je trouve ceci très clair, en Anglais, cependant:
https://excelmacromastery.com/excel-vba-collections/
0
yg_be Messages postés 23337 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018
Modifié le 5 déc. 2017 à 17:18
rnd sur index: je suggère, au lieu de:
Int(UBound(TPar) * Rnd)

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