Textbox multiple de 5

js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 - 6 févr. 2011 à 19:58
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 7 févr. 2011 à 20:18
Bonjour,

je souhaiterai que quelque soit le nombre saisi dans txtmontant qu'il soit un multiple de 5 (à cause du F CFA).

Merci d'avance.

Cordialement.

9 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
6 févr. 2011 à 20:40
Bonjour,

IsNumeric
Mod

0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
6 févr. 2011 à 20:47
Private Sub txtMontant_LostFocus()
 On Error Resume Next 'on pourrait avoir une erreur à la conversion ; si c'est le cas, montant=0
 Dim montant As Integer: montant = CInt(Me.txtMontant.Text)
 Me.txtMontant.Text = CStr(Round(montant / 5) * 5)
End Sub


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
6 févr. 2011 à 21:07
Round(montant / 5) * 5)

Ou juste (plus performant et élégant) :
montant Mod 5


Cordialement, Bacterius !
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
6 févr. 2011 à 21:52
Alors là ... pas du tout. 1 n'est pas multiple de 5 à ce que je sache (1 mod 5)

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0

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

Posez votre question
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
7 févr. 2011 à 03:39
1 mod 5 est différent de zéro (1 mod 5 = 1), donc 1 n'est pas multiple de 5 ... où est le problème ?

Cordialement, Bacterius !
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
7 févr. 2011 à 18:58
Ce que js8bleu, c'est que quelque soit le nombre entré dans txtMontant, qu'il soit toujours multiple de 5. Je t'ai montré que ton code ne fonctionnait pas (faut pas transformer 2435 en 0) mais je suis preneur si t'as un bout de code meilleur que le mien et fonctionnel

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
7 févr. 2011 à 20:04
Là ce que tu fais dans ton code tu arrondis le nombre au plus proche multiple de 5, je ne pense pas que c'est ce que désire js8bleu et c'est une mauvaise pratique de modifier les champs de saisie ainsi. Il vaudrait mieux laisser l'utilisateur entrer sa valeur et si elle n'est pas un multiple de 5, afficher un message ou colorier le champ de saisie en rouge, un truc du genre. C'est une question d'usabilité d'interface graphique, on ne modifie pas en temps réel un texte que l'utilisateur tape.

Cordialement, Bacterius !
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
7 févr. 2011 à 20:05
C'est donc pour cela que j'ai soulevé le Mod pour pouvoir vérifier si le nombre entré est bien un multiple de 5 lors de la vérification.

Cordialement, Bacterius !
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
7 févr. 2011 à 20:18
Pas faux .
Private Sub txtMontant_LostFocus()
 On Error Resume Next
 Dim montant As Integer
 montant = CInt(Me.txtMontant.Text)
 If (Not err) And (montant Mod 5) Then
  If MsgBox("Le montant doit être un multiple de 5. Voulez-vous l'arrondir ?", vbQuestion Or vbYesNo) = vbYes Then
   Me.txtMontant.Text = CStr(Round(montant / 5) * 5)
  Else
   Me.txtMontant.SetFocus
  End If
 End If
End Sub


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
Rejoignez-nous