IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Textbox 2 chiffres après la virgule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 80
    Par défaut Textbox 2 chiffres après la virgule
    Bonjour,

    Je veux force l’utilisateur a rentrer, dans un textbox un chiffre décimal , avec de chiffres après la virgule.
    J’ai un bout de code, mais dès que je tape le premier chiffre il l’affiche direct avec deux zéros après la virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox.Value = Format(TextBox.Value, "0,00")
    Pourriez vous m’aider?

    Merci d’avance

    Didier

  2. #2
    Membre éclairé
    Homme Profil pro
    aucune
    Inscrit en
    Août 2019
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Août 2019
    Messages : 59
    Par défaut
    Bonjour didier.007

    Une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_Change()
        If Right(TextBox1, 1) = "." Or Right(TextBox1, 1) = "," Then TextBox1.MaxLength = Len(TextBox1) + 2
    End Sub
    Ne pas oublier que si des opérations doivent être exécutées depuis les TextBoxs, il faut impérativement utiliser le "." comme séparateur.

    Bonne soirée

  3. #3
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour

    Citation Envoyé par didier.007 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox.Value = Format(TextBox.Value, "0,00")
    Ce code que tu utilises ne permet pas de forcer l'utilisateur à quoi que ce soit.
    Il met en format décimale à 2 zéros la saisie utilisateur. Il modifie uniquement l'affichage de la saisie.

    Tu peux vérifier que la saisie soit comme tu le souhaites avec, par exemple;
    - isnumeric pour vérifier que la saisie est bien un chiffre
    - puis vérifier que la saisie *100 - la conversion en entier de la saisie est 0

  4. #4
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 288
    Par défaut
    Salut
    Une piste qui consiste à interdire la frappe de toutes les touches du clavier, ainsi que toutes celles du NumPad sauf les touches de 0 à 9 et Enter
    Il faut saisir le nombre sans le séparateur de décimal. Ça plait ou non.
    En L4 à toi de choisir le séparateur de décimal [.] ou [,]. Si tu utilises la valeur de la TextBox pour un calcul il faut alors privilégier le [.]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub TextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        Select Case KeyCode
            Case Is = 13 ' touche Enter
                TextBox.Value = Left(TextBox.Value, Len(TextBox.Value) - 2) & "." & Right(TextBox.Value, 2)
            Case Is > 105 'voir liste ici http://blogs.longwin.com.tw/lifetype/key_codes.html
                KeyCode = 0
            Case Is < 95
                KeyCode = 0
        End Select
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    aucune
    Inscrit en
    Août 2019
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Août 2019
    Messages : 59
    Par défaut
    Bonjour le fil

    @hyperion13 : Ton code ne fonctionne pas comme il le devrait. On peut entrer des lettres et si d'aventure on entre que des chiffres avec séparateur, à la sortie du TextBox
    on ne respecte pas le choix du demandeur, à savoir 2 chiffres après la virgule.
    @+ Eric

  6. #6
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Attention avec le code ci-dessus. Il n'est pas complet.
    Il faut également autoriser les touches de suppression et les flèches directionnelles gauche et droite

  7. #7
    Membre éclairé
    Homme Profil pro
    aucune
    Inscrit en
    Août 2019
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Août 2019
    Messages : 59
    Par défaut
    Bonjour le fil

    Le code (condensé et application de divers codes de Pijaku et Patricktoulon) qui s'applique à un TextBox :
    - La saisie de valeurs uniquement numériques
    - La saisie du "." comme séparateur (opérations depuis les TextBoxs si besoin)
    - La frappe d'un nombre à 2 décimales avec si erreur la possibilité d'effacer (touche Supp) puis de refrapper un nombre entier ou décimal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub textBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not Chr(KeyAscii) Like "[0-9-.]" Then KeyAscii = 0
    End Sub
     
    Private Sub TextBox1_Change()
    If Len(TextBox1) = 0 Then TextBox1.MaxLength = 255
    If Right(TextBox1, 1) = "." Then TextBox1.MaxLength = Len(TextBox1) + 2
    End Sub
    Je pense n'avoir rien oublié - En espérant que Didier Bond revienne aux nouvelles
    Bon appétit
    @+ Eric

  8. #8
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 288
    Par défaut
    Salut
    Vous en êtes encore au stade d'utiliser les flèches directionnelles pour vous déplacer dans des objets ?
    Cela me fait penser à la pub qui passe actuellement avec cette femme qui saisie une clé wifi et qui n'arrive pas à faire la différence en zéro et O.
    Allez, une simple pression sur la touche Del et hop on ressaisit la valeur, bien plus efficace et pertinent.
    Citation Envoyé par Alex020181 Voir le message
    Attention avec le code ci-dessus. Il n'est pas complet.
    Il faut également autoriser les touches de suppression et les flèches directionnelles gauche et droite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub TextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        'http://vbtour.free.fr/codes.htm
        'http://blogs.longwin.com.tw/lifetype/key_codes.html
        Select Case KeyCode
            Case Is = 13 ' touche Enter
                TextBox.Value = Left(TextBox3.Value, Len(TextBox.Value) - 2) & "," & Right(TextBox.Value, 2)
            Case Is = vbKeyDelete
                Me.TextBox.Value = ""
            Case Is > 105
                KeyCode = 0
            Case Is < 95
                KeyCode = 0
        End Select
    End Sub

  9. #9
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 288
    Par défaut
    Salut
    Citation Envoyé par Ericcool02 Voir le message
    @hyperion13 : Ton code ne fonctionne pas comme il le devrait. On peut entrer des lettres et si d'aventure on entre que des chiffres avec séparateur, à la sortie du TextBox
    on ne respecte pas le choix du demandeur, à savoir 2 chiffres après la virgule.
    @+ Eric
    Désolé mais le code proposé fonctionne très bien.

  10. #10
    Membre éclairé
    Homme Profil pro
    aucune
    Inscrit en
    Août 2019
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Août 2019
    Messages : 59
    Par défaut
    Re le fil

    @hyperion13 - Oui désolé, ça fonctionne Parfaitement. En fait, je n'ai pas regardé ton code correctement car j'aurais du m'apercevoir que tu avais indiqué TextBox au lieu de TextBox1. Désolé de cette fâcheuse méprise.
    Pas beaucoup dormi donc gros manque de sommeil et plein de buée dans mes zeuils......

    Milles excuses - Bonne après-midi
    @+ Eric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/12/2019, 18h27
  2. limiter la saisie d'un textbox à 1 chiffre après la virgule
    Par petibonohm dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 20/02/2008, 13h43
  3. Chiffres après la virgule figés
    Par bondjames dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/03/2004, 23h09
  4. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 13h04
  5. Nb de chiffres après la virgule ?
    Par Thcan dans le forum C
    Réponses: 10
    Dernier message: 17/09/2003, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo