[VBA-E]multiple de 100 dans textbox

invite05 -  
 Invite05 -
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 !

18 réponses

  1. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  2. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  3. Invite05
     
    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
  4. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Invite05
     
    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
  7. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    Private Sub Quota_BeforeUpdate() au lieu de Private Sub Quota_Change()
    1
  8. Invite05
     
    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
  9. invite05
     
    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
  10. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  11. Invite05
     
    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
  12. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    Dès que l'on clique avec la souris hors de la Textbox, le code s'exécute.
    0
  13. Invite05
     
    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
  14. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  15. Invite05
     
    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
  16. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    Pour mettre en rouge :
    Quota.ForeColor = RGB(255, 0, 0)
    Pour remettre en noir :
    Quota.ForeColor = RGB(0, 0, 0)
    0
  17. Invite05
     
    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
  18. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
  19. Invite05
     
    Merci pour ta réponse Thev, ca fonctionne !
    0