[VBA-E]multiple de 100 dans textbox

Fermé
invite05 - 15 mai 2009 à 11:36
 Invite05 - 22 mai 2009 à 16:48
Bonjour,

Je n'ai aucune idée de comment m'y prendre.
Je voudrai n'autoriser que des multiples de 100 dans un textbox. Si la valeur entrée renvoi Faux alors MsgBox "Entrer un multiple de 100"

Merci de m'aider !
A voir également:

18 réponses

thev Messages postés 1854 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 3 mai 2024 683
15 mai 2009 à 13:43
If not IsNumeric(valeur_entrée) _
Or valeur_entrée / 100 <> valeur_entrée \ 100 Then
    MsgBox "Entrer un multiple de 100"
End If
2
thev Messages postés 1854 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 3 mai 2024 683
15 mai 2009 à 17:32
Il faut remplacer valeur_entrée par la valeur de ta Textbox. D'après ton code, le nom de ta Textbox s'appelle Quota, donc sa valeur est Quota.Value
1
J'ai peut être mal posé ma question, en effet ton code marche mais je viens de comprendre que on ne peut entrer que 1, 2 etc...Or je voudrai qu'on ne puisse entrer que 100, 200, 300, 1000, 1100 etc...

Avec ton code Thev, j'entre 1 : MsgBox : entrer un multiple de 100, 2 : même message etc...

Tu as une idée ?
1
thev Messages postés 1854 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 3 mai 2024 683
20 mai 2009 à 11:05
Pas compris ta remarque

Si tu entres 1 qui n'est pas un multiple de 100, il me parait normal d'avoir le message "entrer un multiple de 100"
1

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

Posez votre question
Exact sauf que si je veux taper : 100
j'ai après avoir tapé 1 : MsgBox
Après avoir tapé 0 : Msgbox
Après avoir tapé le dernier 0 : MsgBox

Or je voudrai que la vérification du champ se fasse après avoir valider le texte tapé par exemple au moment ou je clique sur un autre champ.
Dans ce cas la je clique dans mon champ : nombre je tape : 123
Je clique sur un autre champ et la le MsgBox : Entrer un multiple de 100

Merci Thev !
1
thev Messages postés 1854 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 3 mai 2024 683
20 mai 2009 à 13:24
Private Sub Quota_BeforeUpdate() au lieu de Private Sub Quota_Change()
1
J'ai un message d'erreur avec Private Sub Quota_BeforeUpdate()

Erreur de compilation

La déclaration de la procédure ne correspond pas à la déscription de l'évenement ou de la proécdure du même nom
1
Ton code doit être bon Thev mais ca doit être dans la condition du textbox que ca ne doit pas aller, voilà mon code :

Private Sub Quota_Change()
If Not IsNumeric(valeur_entrée) _
Or valeur_entrée / 100 <> valeur_entrée \ 100 Then
MsgBox "Entrer un multiple de 100"
End If
End Sub

Je rentre 123 et pas de MsgBox.

Une idée?
Merci!
0
thev Messages postés 1854 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 3 mai 2024 683
20 mai 2009 à 22:09
Cet événement n'existe en effet que dans la textbox d'un UserForm. Il faut donc prendre celui-ci :

Sub Quota_LostFocus()

Cet événement se produit dès que le curseur sort de la textbox.
0
J'ai tester ce code :
Sub Quota_lostfocus()
If Not IsNumeric(Quota.Value) _
Or Quota.Value / 100 <> Quota.Value \ 100 Then
MsgBox "Entrez un multiple de 100"
End If
End Sub

et rien ne se passe maintenant, je suis sur Excel 2000.
Merci de m'aider.
0
thev Messages postés 1854 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 3 mai 2024 683
22 mai 2009 à 10:34
Dès que l'on clique avec la souris hors de la Textbox, le code s'exécute.
0
Et bien chez moi cela ne fonctionne pas, tu es sur quelle version d'Excel Thev?
Moi Excel 2000.
En mode création, lorsque je double clique sur Quota, il me renvoi au code :
private sub quota_change()
end sub

Est-ce normal qu'il ne me renvoi pas sur Quota_Lostfocus ?

Je rentre 123 dans le champ, je clique dans un autre textbox et rien ne se passe!
0
thev Messages postés 1854 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 3 mai 2024 683
22 mai 2009 à 11:21
je suis en excel 2007.

Quand tu double-cliques sur Quota, il y 2 ascenseurs :

l'un pour quota, l'autre pour l'événement Change. Quand tu cliques sur l'ascenseur des événements, quels sont les autres événements disponibles ? LostFocus y est-il référencé ?
0
Super j'avais vérifié déjà et j'ai testé : Quota_AfterUpdate()
Et ca fonctionne !!!Merci Thev !
Mais après le Msgbox j'aimerai qu'il me surligne les caractères entrés dans le champ quota, comment faire?
0
thev Messages postés 1854 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 3 mai 2024 683
22 mai 2009 à 12:01
Pour mettre en rouge :
Quota.ForeColor = RGB(255, 0, 0)
Pour remettre en noir :
Quota.ForeColor = RGB(0, 0, 0)
0
Ca ressemblerait à ca ?

Private Sub Quota_AfterUpdate()
If Not IsNumeric(Quota.Value) _
Or Quota.Value / 100 <> Quota.Value \ 100 Then
MsgBox "Entrez un multiple de 100"
Quota.ForeColor = RGB(255, 0, 0)
End If
End Sub
Comment donner l'instruction de remettre en noir (Quota.ForeColor = RGB(0, 0, 0)) si les données entrées renvoient VRAI sur le if ?

merci!
0
thev Messages postés 1854 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 3 mai 2024 683
22 mai 2009 à 15:20
P
rivate Sub Quota_AfterUpdate()

If Not IsNumeric(Quota.Value) _
Or Quota.Value / 100 <> Quota.Value \ 100 Then
    MsgBox "Entrez un multiple de 100"
    Quota.ForeColor = RGB(255, 0, 0)
Else
    Quota.ForeColor = RGB(0, 0, 0)
End If

End Sub
0
Merci pour ta réponse Thev, ca fonctionne !
0