[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. 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. 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. 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. 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!
                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 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. Dès que l'on clique avec la souris hors de la Textbox, le code s'exécute.
                      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. 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. 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. Pour mettre en rouge :
                              Quota.ForeColor = RGB(255, 0, 0)
                              Pour remettre en noir :
                              Quota.ForeColor = RGB(0, 0, 0)
                              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. 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