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 :

chiffre décimal dans une textbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 201
    Par défaut chiffre décimal dans une textbox
    Bonjour,
    je souhaiterai envoyer un message d'erreur via une msgbox au cas où l'utilisateur entrerai un chiffre décimal avec un point et non une virgule dans un textbox, j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim i As Integer
     
    For i = 1 To 9
    If Me.Controls("Textbox" & i) = "." Then
    MsgBox "entrez des chiffres à virgules (", ") et non à point"
    Exit Sub
    End If
    Next i
    Mais ça ne marche pas, le but étant d'éviter un bug quand l'utilisateur entre un chiffre décimal avec un point et non une virgule. Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Le plus simple est de modifier le séparateur décimal entré par l'utilisateur (point ou virgule) afin qu'il corresponde à celui du système (avec API). A mettre dans le module de ta Form, ici, le texbox s'appelle "TextBox1" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Private Declare Function GetSystemDefaultLCID _
                    Lib "kernel32" () As Long
     
    Private Declare Function GetLocaleInfo _
                    Lib "kernel32" _
                    Alias "GetLocaleInfoA" ( _
                    ByVal Locale As Long, _
                    ByVal LCType As Long, _
                    ByVal lpLCData As String, _
                    ByVal cchData As Long) As Long
     
    Function SeparateurDecimal() As String
     
        Dim Tampon As String
        Dim LongTampon As Long
        Dim LCID As Long
     
        LCID = GetSystemDefaultLCID
     
        LongTampon = 255
     
        Tampon = String$(LongTampon, vbNullChar)
     
        LongTampon = GetLocaleInfo(LCID, &HE, Tampon, LongTampon)
     
        If LongTampon > 0 Then
     
            SeparateurDecimal = Left$(Tampon, LongTampon - 1)
     
        Else
     
            SeparateurDecimal = ","
     
        End If
     
    End Function
     
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        If KeyAscii = 44 Or KeyAscii = 46 Then
     
            KeyAscii = Asc(SeparateurDecimal)
     
        End If
     
    End Sub
    Hervé.

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Une solution éventuelle est de convertir automatiquement le point en virgule dans chaque TextBox via son évènement "KeyPress"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        If KeyAscii = 46 Then KeyAscii = 44
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 201
    Par défaut
    En effet c'est beaucoup mieux. Merci!

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

Discussions similaires

  1. [XL-2003] Une seule Décimale dans un TextBox
    Par magnum812 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/06/2011, 11h06
  2. Taper uniquement des chiffres dans une TextBox?
    Par christopher07 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/06/2007, 16h22
  3. Ne rentrer que des chiffres dans une TextBox
    Par nimois3O dans le forum ASP.NET
    Réponses: 25
    Dernier message: 11/06/2007, 11h44
  4. insérer un nombre décimale dans une table
    Par mouloudéen dans le forum Access
    Réponses: 4
    Dernier message: 02/10/2005, 21h29
  5. [c#]Gros text à afficher dans une textbox
    Par famemaur dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/05/2005, 10h12

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