XL 2016 Enlever la valeur minimum dans plusieurs nombres randomisé VBA

Deadrak

XLDnaute Nouveau
Hello tout le monde o/.

Voilà ma petite colle du jour ^^.

Voila, je crée une fiche de personnage pour un JDR papier, je voudrais tirer 4 dés à 6 faces et retirer la valeur la plus petite.

J'ai bien cette fonction qui me permet de tirer aléatoirement des chiffres:

de1 = Int((6 * Rnd) + 1)
de2 = Int((6 * Rnd) + 1)
de3= Int((6 * Rnd) + 1)
de4= Int((6 * Rnd) + 1)

mais voilà où je bute,

Je voudrais qu'un msgbox m'affiche le totale de ces quatre opérations mais en ayant retiré la plus petite valeur. Alors, j'ai mis les résultats des tirages dans des dim "de*" mais je ne trouve pas la méthode pour lui demander d'ignorer la plus petite valeur. Sans compter que j'ai peur de ce qu'il pourrait faire si la plus petite valeur soit identique à un autre dé. Si nous avons "10" "14" "9" "9" comment lui dire de garder un "9" et de supprimer l'autre?

Je vous remercie d'avance pour le temps que vous m'accorderez.

Passez à tous une bonne soirée ^^ (Et passez de bonnes fêtes ;) )

Deadrak.
 
Solution
Bonsoir,

Essayez ce code :
VB:
Sub Test()
Dim de1, de2, de3, de4, somme

   de1 = 1 + Int(6 * Rnd)
   de2 = 1 + Int(6 * Rnd)
   de3 = 1 + Int(6 * Rnd)
   de4 = 1 + Int(6 * Rnd)
   somme = de1 + de2 + de3 + de4 - Application.Min(Array(de1, de2, de3, de4))
   MsgBox "Somme = " & somme & " pour " & de1 & ", " & de2 & ", " & de3 & ", " & de4
End Sub

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

Essayez ce code :
VB:
Sub Test()
Dim de1, de2, de3, de4, somme

   de1 = 1 + Int(6 * Rnd)
   de2 = 1 + Int(6 * Rnd)
   de3 = 1 + Int(6 * Rnd)
   de4 = 1 + Int(6 * Rnd)
   somme = de1 + de2 + de3 + de4 - Application.Min(Array(de1, de2, de3, de4))
   MsgBox "Somme = " & somme & " pour " & de1 & ", " & de2 & ", " & de3 & ", " & de4
End Sub
 

Deadrak

XLDnaute Nouveau
Bonsoir,

Essayez ce code :
VB:
Sub Test()
Dim de1, de2, de3, de4, somme

   de1 = 1 + Int(6 * Rnd)
   de2 = 1 + Int(6 * Rnd)
   de3 = 1 + Int(6 * Rnd)
   de4 = 1 + Int(6 * Rnd)
   somme = de1 + de2 + de3 + de4 - Application.Min(Array(de1, de2, de3, de4))
   MsgBox "Somme = " & somme & " pour " & de1 & ", " & de2 & ", " & de3 & ", " & de4
End Sub
Merci beaucoup pour cette réponse rapide! Je ne connaissais pas "Array", elle était là la solution ahah.

Un grand merci à toi!!
 

Statistiques des forums

Discussions
315 103
Messages
2 116 246
Membres
112 695
dernier inscrit
ben44115