EXO VBA avec formules aléatoires

Bonjour à tous,

Je rencontre un gros problème sur un exercice car je ne suis pas assez performant pour pouvoir le réaliser. Je vous demande donc de l'aide !

L'exo est le suivant:

Nous avons 10 personnes (de A2 à A11) et chaque personne à 20 points au jour j.

Le jour suivant (j+1), chaque utilisateurs doivent piquer 10 points sur les autres utilisateurs (autant d'utilisateurs qu'ils le souhaitent et de 0 à 10 points sur chaque utilisateur mais 10 points max au total).

Et donc bien sur, chaque utilisateur peut se faire piquer de 0 à 10*le nb d'utilisateurs.

Tout les utilisateurs doivent jouer, et tout est aléatoire.

Un utilisateur ne peut pas être en négatif.

A la verticale, les 10 utilisateurs.

A l'horizontale, chaque jour.

J’espère que vous avez compris, ce n'est pas si simple que ça...

Merci d'avance

Bonjour,

Un essai qui devrait donner des idées

15exo-niiicoco-v1.zip (14.90 Ko)

Tout d'abord merci Jean_Eric pour ton aide.

Il y a quelques petits problèmes:

- La somme des points par jours doit être égale à 200 (20*10) et pour cela il me semble que vous avez oublié de rajouter 10 à chaque utilisateur.

A partir de 20 vous avez prélevé une valeur de 0 à 10 sur chaque joueur mais chaque joueur doit également prélever 10 points sur un ou plusieurs joueurs.

- Plus les jours passent et moins les joueurs jouent. Hors ils doivent tous jouer et tout les jours.

Je suis exigent désolé

Re,

Ce n'était qu'un début, en espérant capter l'attention d'autres d'utilisateurs du forum.

Il va falloir que tu envoies un fichier avec plus de précisions et des exemples (si possible).

Cdlt.

Voici une trame et quelques explications

Si quelqu'un aurait une idée par rapport au fichier que j'ai posté au dessus...

Bonjour,

Ma contribution au problème.

Nota : Pour l'instant chaque joueur prend 10 à un seul joueur. En effet il est fort compliqué de pomper aléatoirement à chaque tour 10 points répartis sur les 9 autres joueurs en respectant toutes les conditions.

Néanmoins j'ai indiqué dans la macro la partie à améliorer.

A+

11niiicooov2.xlsm (25.48 Ko)

Re...

Voici enfin la version finalisé : A chaque tour chacun prends 10 pts répartis sur plusieurs joueurs.

Hum... Je ne dis pas que cet algo est brillant : Il est surement perfectible, néanmoins je l'ai testé pas à pas bon nombre de fois sans mettre en évidence de problème.

A+

13niiicooov3.xlsm (26.18 Ko)

Bonjour,

Merci énormément galopin01 pour ton aide, ton tableau est presque parfait

Simplement, quand je fais la somme des points qu'il reste à un joueur après 10 tours, celle ci est négatif. Ce qu'il faudrait c'est que quand un joueur est à 0, on ne puisse plus lui retirer de points.

De plus, un preneur peut taper sur la même victime sur plusieurs tours, comme plusieurs preneurs peuvent taper sur la même victime.

Une petite question: si je veux tirer mon tableau avec autant de joueurs et de tours que je souhaite, comment dois-je faire ?

Je te remet ton tableau, j'ai fais quelques petites modifications.

Merci d'avance

Je viens de remarquer que ton tableau est bon dans le sens où un joueur peut se faire piquer par plusieurs joueurs.

Donc ça c'est bon

Il faut donc juste modifier les points négatifs à laisser à 0. D'ailleurs, quand en joueur arrive à 0, il faudrait que le tour suivant il puisse récupérer 20 points (les 20 points initiaux) et jouer directement.

Et puis savoir comment étirer le tableaux autant que je veux.

Merci beaucoup

Bonjour,

J'ai testé la V3 plusieurs centaines de fois sans jamais obtenir un total inférieur à zéro ! Le total de la colonne B est toujours égal à 200 et joueur après joueur, tour après tour aucun chiffre n'est jamais négatif.

Il n'est pas possible de redonner 20 points à celui qui est à zéro car cela modifierait le total initial. (et donnerait un avantage notoire à celui qui tombe à zéro)

Ce n'est d'ailleurs ni souhaitable ni nécessaire : Le système aléatoire étant ce qu'il est, un joueur ne reste jamais longtemps à zéro.

Pour étendre sur plus de jours il suffit de modifier la ligne :

For jour = 1 To 10

et remplacer le 10 par le chiffre que tu veux. Le classeur suivant est formaté pour 100 jours.

et modifier la formule de la colonne B. Dans ce dernier classeur, la formule étant extrêmement longue a été remplacée par une formule nommée SLFM

J'ai supprimé tous les affichages de débogage, mais il est toujours possible de visualiser jour après jour en mettant un point d'arrêt sur le dernier Next et éventuellement chaque "prise" en utilisant le débogueur...

A+

17niiicooov4.xlsm (31.68 Ko)

Dernière question: Dans la formule SLFM, les 20 points du départs sont ils comptés ? Merci

Et pour étirer le nb de joueurs ?

Bonjour,

Dans la formule SLFM, les 20 points du départs sont ils comptés ?

Oui : Si tu regardes dans le gestionnaire de nom tu verras que la formule commence par :

= 20 +...

Voici le contenu de cette formule pour la cellule B3 :

=20+C3+E3+G3+I3+K3+M3+O3+Q3+S3+U3+W3+Y3+AA3+AC3+AE3+AG3+AI3+AK3+AM3+AO3+AQ3+AS3+AU3+AW3+AY3+BA3+BC3+BE3+BG3+BI3+BK3+BM3+BO3+BQ3+BS3+BU3+BW3+BY3+CA3+CC3+CE3+CG3+CI3+CK3+CM3+CO3+CQ3+CS3+CU3+CW3+CY3+DA3+DC3+DE3+DG3+DI3+DK3+DM3+DO3+DQ3+DS3+DU3+DW3+DY3+EA3+EC3+EE3+EG3+EI3+EK3+EM3+EO3+EQ3+ES3+EU3+EW3+EY3+FA3+FC3+FE3+FG3+FI3+FK3+FM3+FO3+FQ3+FS3+FU3+FW3+FY3+GA3+GC3+GE3+GG3+GI3+GK3+GM3+GO3+GQ3+GS3-D3-F3-H3-J3-L3-N3-P3-R3-T3-V3-X3-Z3-AB3-AD3-AF3-AH3-AJ3-AL3-AN3-AP3-AR3-AT3-AV3-AX3-AZ3-BB3-BD3-BF3-BH3-BJ3-BL3-BN3-BP3-BR3-BT3-BV3-BX3-BZ3-CB3-CD3-CF3-CH3-CJ3-CL3-CN3-CP3-CR3-CT3-CV3-CX3-CZ3-DB3-DD3-DF3-DH3-DJ3-DL3-DN3-DP3-DR3-DT3-DV3-DX3-DZ3-EB3-ED3-EF3-EH3-EJ3-EL3-EN3-EP3-ER3-ET3-EV3-EX3-EZ3-FB3-FD3-FF3-FH3-FJ3-FL3-FN3-FP3-FR3-FT3-FV3-FX3-FZ3-GB3-GD3-GF3-GH3-GJ3-GL3-GN3-GP3-GR3-GT3

Tous les joueurs débutent avec 20 pts : Quand tu fais un reset tu as bien 20 pts chacun avant toute prise...

La colonne B est le nombre de points de chaque joueur après chaque phase de jeu.

Si tu es en mode débogage, dès qu'un joueur prend 5 points à un autre la colonne B est modifié en conséquence et il ne reste plus que 15 au cédant.

Quand le preneur à pris ses 10 pts il en a alors 30 . Et les autres affichent une perte correspondante.

Je persiste et signe : pas de joueur en négatif dans aucune de mes versions. Si tu sais faire du débogage comme je l'ai indiqué et tu verras que l'algo n'a pas de faille. (Même s'il est perfectible !)

Inutile d'essayer de monter un tableau annexe pour prouver le contraire : La colonne B est le juge de paix.

Merci de cocher résolu pour ce sujet.

Pour étirer le nombre de joueur (non testé) dans chacune des 2 fonction mettre :

k = 10 'remplacer 10 par le nombre voulu

Dans la sub galopin mettre le nombre voulu au lieu de 10 dans les 2 lignes suivantes :

For Pr = 1 To 10

For x = 1 To 10

Allonger la colonne B en conséquence

Ajuster la zone de reset en conséquence

A+

Merci, je valide

Bonjour,

Galopin01 ton tableau devient faux à partir du moment où j'aumente le nombre de joueurs.

Les joueurs supplémentaires ne prennent pas 10 points mais 10 de plus à chaque fois que je fais "jouer" (donc: 10; 20; 30; etc.). Je pense que ca ne réinitialise pas à chaque fois les joueurs supplémentaires.

Besoin d'aide pls !

Rechercher des sujets similaires à "exo vba formules aleatoires"