[VBA-E]multiple de 100 dans textbox

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. If not IsNumeric(valeur_entrée) _
    Or valeur_entrée / 100 <> valeur_entrée \ 100 Then
        MsgBox "Entrer un multiple de 100"
    End If
    1. 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
      1. 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!
        1. Pour mettre en rouge :
          Quota.ForeColor = RGB(255, 0, 0)
          Pour remettre en noir :
          Quota.ForeColor = RGB(0, 0, 0)
          1. 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?
            1. 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é ?
              1. 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!
                1. Dès que l'on clique avec la souris hors de la Textbox, le code s'exécute.
                  1. 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.
                    1. 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.
                      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. 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. 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. 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. 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. 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!