VBA - fonction monnaie à remettre

Bonjour,

Comment serait-il possible de réaliser une fonction VBA affichait en debug.print la monnaie à remettre à un client avec le minimum de pièces possible ?

Sachant que tous les articles vendus sont de 1€ ou moins et qu'un client achète forcément avec une pièce d'1€.

Les pièces pour rendre la monnaie sont uniquement 50 centimes, 25 centimes, 10 centimes, 5 centimes et 1 centime.

Merci d'avance,

Bonjour,

c'est possible.
Bonne idée de devoir qui devrait te faire progresser.
Il est temps de t'y mettre, tu as l'air d'avoir beaucoup de retard à faire faire tous tes exercices
eric

Cela s’appelle un algorithme glouton

une liste avec les valeurs disponibles (50 centimes, 25 centimes, 10 centimes, 5 centimes et 1 centime) dans un ordre décroissant ou croissant

une boucle qui cherche le rendu maximale possible

...

Parfait merci, j'ai essayé quelque chose mais cela ne fonctionne pas & je ne sais pas trop comment faire pour que cela fonctionne. J'ai réalisé ceci :

Sub monnaie()

a = Array(0.01,0.05,0.1,0.25,0.5)
b = Rnd()
c = 1
x = Val(c) - Val(b)
if x > 0 then 

For i = UBound (a) To 0 Step - 1 
if x = x & " " & ((x - (x Mod a(i))) / a(i)) & "  " & "pièces de" & " " & a(i) & "euros"
Exit For
End If 
Next
Msg.Print x
end sub

Merci d'avance pour votre aide !

En algo brut on a ceci :

23monnaie.xlsm (20.39 Ko)

Dans quel pays a-t-on des pièces de 25 cents ?

Au Canada !

Bon à savoir. Merci.

Autre possibilité se rapprochant plus de ton code :

    Dim c As Integer, b As Integer, x As Integer
    Dim p1 As Integer, p2 As Integer, p3 As Integer, p4 As Integer, p5 As Integer
    Dim nl As String

    Randomize Timer
    nl = Chr(10) & Chr(13)
    c = 100
    b = Int(Rnd() * 100) + 1
    x = c - b

    p1 = Int(x / 50)
    If p1 > 0 Then x = x - p1 * 50
    p2 = Int(x / 25)
    If p2 > 0 Then x = x - p2 * 25
    p3 = Int(x / 10)
    If p3 > 0 Then x = x - p3 * 10
    p4 = Int(x / 5)
    If p4 > 0 Then x = x - p4 * 5
    p5 = x

    MsgBox b & "---> " & nl & _
    p1 & " x 50 cents " & nl & _
    p2 & " x 25 cents " & nl & _
    p3 & " x 10 cents " & nl & _
    p4 & " x 5 cents " & nl & _
    p5 & " x 1 cent " & nl & _
    p1 + p2 + p3 + p4 + p5 & " pièces."

Je te conseille vivement de modifier ton interface utilisateur en obligeant une déclaration préalable des variables.

Rechercher des sujets similaires à "vba fonction monnaie remettre"