Bloquer dans une petite application monetaire euro==>cent (Newbie)

cs_neotof Messages postés 75 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 3 décembre 2012 - 26 nov. 2006 à 15:25
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 26 nov. 2006 à 22:26
Bonjours je voudrais faire une petit application que quand on rentre un montant par exemple 178.75 euro


qu on me dise que j ai 1 billet de 100 euro 1 billets de 50 euro 1
billet de 20 euro 1 billet de 5 euro 1 pices de 2 euro 1 peice de 1
euro 1 piece de 50 cent 1 piece de 20 cent et 1 piece de 5 cent.


Pour ce qui est des euro billet et piece ca cava mais quand je rentre
un montant avec des cents ca ne fonctionne pas. voici mon code


1. Private Sub Command1_Click()

2.

3. End Sub

4.

5. Private Sub Command2_Click()

6.

7.

8.

9. End Sub

10.

11. Private Sub Command3_Click()

12.

13. End Sub

14.

15. Private Sub Command_clear_Click()

16. Text_montant.Text = ""

17. Label1_100fb.Caption = ""

18. Label_50fb.Caption = ""

19. Label_20fb.Caption = ""

20. Label_10fb.Caption = ""

21. Label_5fb.Caption = ""

22. Label_2fb.Caption = ""

23. Label_1fb.Caption = ""

24.

25. End Sub

26.

27. Private Sub Command_end_Click()

28. End

29. End Sub

30.

31. Private Sub Command_start_Click()

32.

33. Dim int_montant As Single, reste100 As Single, reste50 As Single,
reste20 As Single, reste10 As Single, reste5 As Single, reste2 As
Single, reste1 As Single, reste50c As Single

34.

35. int_montant = Val(Text_montant)

36.

37. Label1_100fb = int_montant \ 100

38. reste100 = int_montant Mod 100

39.

40. Label_50fb = reste100 \ 50

41. reste50 = reste100 Mod 50

42.

43. Label_20fb = reste50 \ 20

44. reste20 = reste50 Mod 20

45.

46. Label_10fb = reste20 \ 10

47. reste10 = reste20 Mod 10

48.

49. Label_5fb = reste10 \ 5

50. reste5 = reste10 Mod 5

51.

52. Label_2fb = reste5 \ 2

53. reste2 = reste5 Mod 2

54.

55. Label_1fb = reste2 / 1

56. reste1 = reste2 Mod 1

57.

58. Print (Format(reste1, "#0.00" ))

59.

60. Label_50c = reste1 / 0.5

61.

62.

63. 'Label_50c = reste1 / 0.5

64. 'reste50c = reste1 Mod 0.5

65.

66. End Sub

67.

68. Private Sub Form_Load()

69. Label1_titre = "Nombre de Billets et de pièce" & Chr(13) & "Division" & Chr(13) & " Version Franc Belge"

70.

71. End Sub

72.

73. Private Sub Label8_Click()

74.

75. End Sub


si quelle qu'un a une idée pour affichier le nombre de piece de cent ca serait cool merci d avance.

16 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 nov. 2006 à 17:37
Bonjour,

c' est normal !
Val(Text_montant) ne te renvoie que la partie entière...
Déclare ta variable comme monétaire
Dim int_montant As Currency
int_montant = CCur(Text_montant)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 nov. 2006 à 17:48
Je te conseille de multiplier ton montant par 100, ainsi tu pourra utiliser les modulo pour les centimes, et diviser ensuite par 100 pour obtenir le nombre de billets/pièces en euro
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 nov. 2006 à 18:02
juste !
à ceci près que pour les billets de cent il devrait
diviser par 10000


178.75 euro * 100 = 17875
17875 / 10000 =1 'billet de cent
17875 Mod 10000 =7875
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 nov. 2006 à 18:33
Exact, Darksidious, ce qui devrait le conduire à ceci, par exemple :

Private Sub Command1_Click()
  Dim toto As Double, titi As Double, coupures(13) As Double
   toto = Val("178.72") * 100
   coupures(0) = 10000
   coupures(1) = 5000
   coupures(2) = 2000
   coupures(3) = 1000
   coupures(4) = 500
   coupures(5) = 200
   coupures(6) = 100
   coupures(7) = 50
   coupures(8) = 20
   coupures(9) = 10
   coupures(10) = 5
   coupures(11) = 2
   coupures(12) = 1
   For i = 1 To 13
     titi = Int(toto / coupures(i - 1))
     toto = toto Mod coupures(i - 1)
     If titi > 0 Then Me.Print titi & " coupures de " & coupures(i - 1) / 100
   Next
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 nov. 2006 à 19:35
et encore, c' est pas toujours vrai :
 5178.75 euro ?
0
cs_neotof Messages postés 75 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 3 décembre 2012
26 nov. 2006 à 19:50
Merci pour votre aide mais j arrive tj pas il met un message dereur pour

Label_rep.Caption = CCur(Format(reste1, "##.##"))
c est juste pour pouvoir afficher reste1 ensuite je serais me debrouiller


private Sub Command1_Click()

End Sub

Private Sub Command2_Click()

End Sub

Private Sub Command3_Click()

End Sub

Private Sub Command_clear_Click()
Text_montant.Text = ""
Label1_100fb.Caption = ""
Label_50fb.Caption = ""
Label_20fb.Caption = ""
Label_10fb.Caption = ""
Label_5fb.Caption = ""
Label_2fb.Caption = ""
Label_1fb.Caption = ""

End Sub

Private Sub Command_end_Click()
End
End Sub

Private Sub Command_start_Click()

Dim cur_montant As Currency, reste100 As Currency, reste50 As Currency, reste20 As Currency, reste10 As Single, reste5 As Currency, reste2 As Currency, reste1 As Currency, reste50c As Currency, rep1fb As Currency

cur_montant = Val(Text_montant)

Label1_100fb = cur_montant \ 100
reste100 = cur_montant Mod 100

Label_50fb = reste100 \ 50
reste50 = reste100 Mod 50

Label_20fb = reste50 \ 20
reste20 = reste50 Mod 20

Label_10fb = reste20 \ 10
reste10 = reste20 Mod 10

Label_5fb = reste10 \ 5
reste5 = reste10 Mod 5

Label_2fb = reste5 \ 2
reste2 = reste5 Mod 2

rep1fb = reste2 / 1
Label_1fb = rep1fb
reste1 = reste2 - rep1fb

Label_rep.Caption = CCur(Format(reste1, "##.##"))

Print reste1

'Label_50c = reste1 / 0.5
'reste50c = reste1 Mod 0.5

End Sub

Private Sub Form_Load()
Label1_titre = "Nombre de Billets et de pièce" & Chr(13) & "Division" & Chr(13) & " Version Franc Belge"

End Sub

Private Sub Label8_Click()

End Sub

Private Sub Label_rep_Click()

End Sub
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 nov. 2006 à 19:54
pour l' affichage tu n' es pas obligé de convertir,
Label_rep.Caption = Format(reste1, "0.00")
suffira , car c' est du texte
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 nov. 2006 à 20:50
 à chaibat05 qui dit :
et encore, c' est pas toujours vrai :
 5178.75 euro ?

Tu as essayé, oui ?
Chez moi, c'est juste !

J'obtiens :

51 coupures de 100
1 coupures de 50
1 coupures de 20
1 coupures de 5
1 coupures de 2
1 coupures de 1
1 coupures de 0,5
1 coupures de 0,2
1 coupures de 0,05

Tu as un problème d'addition ?
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 nov. 2006 à 20:57
non,  en fait j' ai pensé à deux "trucs" à la fois :
 1° pour les billets des milles euros (je ne sais pas si ça éxiste )
 2° quand on passe aux millions...

et ça a donné un mélange indigest !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 nov. 2006 à 21:03
Il suffit d'accueillir périodiquement à l'étranger (je l'ai fait pendant 4 décennies) un navire de la Marine Nationale et de préparer ce qu'il faut et à temps à partir d'un "état des monnaies" pour apprendre ces choses-là...

C'est facile dans un sens...
Voyons maintenant dans l'autre (juste pour jouer) : le même problème, mais en fonction, précisément de "l'état des monnaies". Je m'explique : la répartition faite jusqu'ici l'est en considérant que l'on a toutes les valeurs faciales souhaitables pour une distribution "idéale". Quid si tel n'est pas le cas ? (5 billets de 20 au liet d'un de 100, par exemple, car on n'a plus en caisse de billets de 100 ni de billets de 50). Un peu plus dur, donc....
Qui veut pousser ce bouchon là ? (même calcul mais en fonction des valeurs faciales réellement présentes). Ce n'est pas très difficile (celà demande simùplement un peu d'organisation de la pensée et de sa traduction la plus adaptée possible).
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 nov. 2006 à 21:10
non,  en fait j' ai pensé à deux "trucs" à la fois :
 1° pour les billets des milles euros (je ne sais pas si ça éxiste )
 2° quand on passe aux millions...

et ça a donné un mélange indigest !

Malin, va ...tu démarres ton tableau à 1000 (donc à 100000), si un billet de 100 existe  et le fais suivre par 500 (donc 50000), si un billet de 500 existe,  et le dimensionnes à 14 au lieu de 12 (cas d'un billet le plus grand 100). Le raisonnement sera TOUJOURS le même...(dans ta boucke, chakger alors For i 1 To 13 par For i = 1 To 15)
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 nov. 2006 à 21:39
excuses moi , j' étais sur un autre topic...
et donc c' est à quoi je voulais en venir.
car au départ tu ne sais pas par quoi commencer,
100 OU 100000 voir plus...?
Faire une boucle à 13, 15 ou plus ?
le raisonnement est TOUJOURS valable, mais...généralisons !

toujours malin..?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 nov. 2006 à 21:55
La généralisation est vite faite, ami :
Ton tableau doit être tout simplement dimensionné en fonction du nombre de valeurs faciales possibles (et on les connais en principe, non ?) et commencer par la plus forte (indice 0) pour terminer par la plus petite (indice n où n = nombre de valeurs faciales possibles -1)

donc : si par exemple 20 valeurs faciales possibles ===>> un tableau(19) et une boucle de 1 à 20 (pour le for...to)
et dans ton tableau(19) multiplication de chaque valeur faciale par 100.
Et c'est toujours vrai !
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 nov. 2006 à 22:00
sûr que c'est toujours vrai !
je ne dis pas !

c' est ce " ... en fonction" que j' aime,
j' aime aussi quand c' est en tout temps et tout lieux...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 nov. 2006 à 22:14
Pour le "en tout temps et en tout lieu", c'est facile également... juste un peut de réflexion... et tu verras....
Tu peux même résoudre (crois-moi) les cas où une valeur faciale est supposée exister mais qu'on en trouve plus sur place (cas de l'Argentine de 1974 à 1977, du Brésil en 1979, du Pérou en 1984 - où on trouvait même des "assignats" à la place de billets également disparus - , etc...) .
Il te suffit pour celà de prévoir une toute petite interface d'initialisation des valeurs possibles présentes... (pas de problème) .
Il ne faut pas se noyer dans un si petit verre d'eau...!

Bonne nuit, maintenant (le vieux a sommeil).
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 nov. 2006 à 22:26
bonne nuit à toi aussi...
nous sommes deux vieux alors à avoir sommeil
0
Rejoignez-nous