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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    novembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : novembre 2017
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Remplacement point et virgule dans une TextBox (VBA)

    Bonjour à vous,

    Comme expliqué dans le titre, j'ai créé un formulaire dans Excel pour remplir un tableau.
    Dans ce tableau, je souhaite insérer ma colonne prix via mon formulaire.
    J'ai presque réussi à un détail près.

    Après quelques recherches sur le forum j'ai trouvé ce bout de code qui ma permis d'avancer :

    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
     
    Option Explicit
     
    Const entrees_decimales_permises = ".,0123456789" & vbCr & vbBack
    Const Point = "."
    Const Virgule = ","
     
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        If KeyAscii = Asc(Point) Then
            If InStr(TextBox1, Virgule) = 0 Then
                KeyAscii = Asc(Virgule)
            Else
                KeyAscii = 0
            End If
        ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
            KeyAscii = 0
        ElseIf InStr(TextBox1, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
            KeyAscii = 0
        End If
    End Sub
    Mon unique problème, c'est que la macro ne permet qu'un seul chiffre après la virgule. Je souhaiterais en avoir deux.
    Avez-vous une idée de la modification à faire ?

    Mon OS est configuré en Français.

    Merci à vous.
    Baladasha.

  2. #2
    Membre averti
    Homme Profil pro
    sapeurs pompiers
    Inscrit en
    février 2008
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : sapeurs pompiers
    Secteur : Service public

    Informations forums :
    Inscription : février 2008
    Messages : 425
    Points : 403
    Points
    403

    Par défaut

    Bonsoir,

    Si j'ai bien compris votre besoin, vous avez un formulaire de saisie et vous souhaitez changer le point par une virgule.
    Pourquoi ne pas faire un replace tout simplement.
    On va récupérer le texte du TextBox1 et on va le convertir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat_sans_code = Replace(TextBox1, ".", ",")
    En espérant vous avoir aidé.
    Cordialement

    Sebing
    Débutant j essaie de m améliorer en essayant d'aider sur le fourm
    Merci d être indulgent sur le code ou reponse proposé je reçois volontier les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  3. #3
    Débutant  
    Avatar de patricktoulon
    Homme Profil pro
    cuisiniste
    Inscrit en
    avril 2009
    Messages
    15 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 15 308
    Points : 13 224
    Points
    13 224
    Billets dans le blog
    7

    Par défaut re

    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        If KeyAscii = 44 Then KeyAscii = 46    ' on remplace la virgule  par le  point
        If TextBox1 = "" And KeyAscii = 46 Then KeyAscii = 0
        If Not Chr(KeyAscii) Like "[01,2,3,4,5,6,7,8,9,.]" Or Right(TextBox1, 3) Like ".##" Then KeyAscii = 0 ' que des nums et 2 decimales
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [XL-2010] Remplacer point par blanc dans une chaine avec des points et des virgules
    Par Denis_67 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2017, 16h45
  2. [XL-2010] Avoir un point ou une virgule dans une textbox
    Par phiphi27700 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/09/2015, 06h15
  3. Convertir le point par une virgule dans une textbox
    Par trentks95 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/04/2013, 13h58
  4. [AC-2007] Problème de virgule dans une requête vba
    Par Mut dans le forum VBA Access
    Réponses: 9
    Dernier message: 24/08/2012, 17h16
  5. VBA - Limiter la saisie d'une seule virgule ou point dans une TextBox
    Par natab dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/08/2011, 13h00

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