pb saisie textbox sur clavier numérique

  • Initiateur de la discussion Initiateur de la discussion mikeo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mikeo

XLDnaute Occasionnel
Bonjour le forum,

J'ai un petit souci sur mes textbox. Si je saisis un nombre décimal sur le clavier numérique, il envoie une erreur. Apparamment, VBA n'aime pas le point (.) du clavier numérique. Par contre, la virgule (,) du clavier alphanumérique est acceptée.

Comment dois-je faire pour contourner ce problème ?
 

Pièces jointes

Re : pb saisie textbox sur clavier numérique

Bonjour Papou,

Encore une fois, c'est toi qui me dépannes. Je te remercie infiniment de m'avoir donné la solution.

Mais ce que je ne comprends pas c'est que VBA n'accepte pas les points mais accepte les virgules. Normalement, c'est le contraire, non ?

Mikeo
 
Re : pb saisie textbox sur clavier numérique

Bonjour mikeo, papou🙂 🙂 🙂, et à ceux qui passeront par ici,

Pour ce qui est de cette affaire de virgules et de points;
je n'arrive plus à mettre la main sur le n° de tél. de Bill, mais je vais lui en parler. 🙂

Pour ce qui est de la bonne saisie numérique du TextBox; je serais tenté de faire comme ceci:

Code:
Private Sub TextBox1_Change()
' ON VA REMPLACER LE POINT PAR UNE VIRGULE, ET INTERDIRE L'UTILISATION DES TOUCHES "ALPHA"


TextBox1 = Replace(TextBox1, ".", ",")

   If Not IsNumeric(Right(TextBox1, 1)) And Right(TextBox1, 1) <> "," Then

     TextBox1 = Replace(TextBox1, Right(TextBox1, 1), "")

   End If

End Sub
Amicalement,

Yann
 

Pièces jointes

Re : pb saisie textbox sur clavier numérique

Bonjour YANN56, rebonjour,

Merci à toi. Effectivement, ta solution permet de compléter celle de Papou et empêcher de provoquer une erreur avec le clavier alpha. Mais il faut répéter cela avec tous les textbox.

Maintenant un autre problème se pose quand je veux récupérer le textbox.value dans une feuille de calcul, car Excel considère la virgule comme un texte (voir exemple).

! Et pourtant j'ai appris dans des tutoriels (par exemple didier-gonard dans développez.com) que VBA n'accepte en numérique que des points.! Bill quand tu nous tiens.

MIkeo
 

Pièces jointes

Re : pb saisie textbox sur clavier numérique

Re mikeo,

Vite fait, car je suis sur autre chose pour l'instant.

J'ai une astuce, quand il m'énerve d'utiliser les "CDbl", qui est de *1 la valeur "Text" du contrôle.
Cela fonctionne pour les ListView, mais je n'ai pas testé une caisse de contrôles.

Quand à éviter d'avoir à répéter ce code pour tous les TextBoxes:
Je ne vois qu'une solution: Les mettre dans un module de classe.

A plus tard,

Yann
 
Re : pb saisie textbox sur clavier numérique

bonjour mikeo les amis PAPOU & YANN 🙂🙂
perso...je vois pas bien ou se trouve le pb...
il est vrai que dans un user tous est considere comme du texte pour faire des calculs il faut convertir
l'avantage de CDBL on peut faire des calculs avec virgule ou point par contre si on utilise la virgule puis envoi sur feuille il faut replacer d'ou l'interet d'utiliser seulement le point
un exemple basique avec le point dans ce cas la je vais utiliser VAL suffisant dans mon exemple
attention par contre VAL lui accepte uniquement que le point
les variables public je sais pas a quoi elles servent??😕
 

Pièces jointes

Re : pb saisie textbox sur clavier numérique

Bonjour Laetitia🙂🙂 Yves🙂 Mikeo,
Mikéo Je vois que mes deux amis ont bien complété ma réponse, là tu as tout ce qu'il faut
moi j'avais répondu bêtement à la question première.
a+
papou🙂
 
Re : pb saisie textbox sur clavier numérique

Bonjour le forum,
Laetitia, Yann, Papou (merci encore)

Merci Laetitia, je te reconnais comme spécialiste en textbox sur beaucoup de tes messages.

Bon, je sais que je peux me débrouiller, car le code de Yann marche, mais il s'agit de comprendre pour pas mourir idiot.

J'ai remplacé les Cdbl par Val mais le problème subsiste. Sur mon Usf le point du clavier numérique renvoie un texte (voir exemple : dans mon Usf, dès que je touche le point, les autres textbox 2 et 3 ne se calculent plus) alors que sur celui de Laetitia, le même point renvoie bien un nombre.

Je ne vois pas d'où cela vient.

Bonne journée à tous.

Mikeo
 

Pièces jointes

Re : pb saisie textbox sur clavier numérique

Bonjour à tous,

Voici un dernier jet avec lequel on peut entrer un T.T.C. pour trouver le H.T., et inversement.

Un click sur le Label "T.V.A....." permet de changer le taux.

Je ne parviens pas à arrondir à deux décimales les values des TextBoxes.
J'ai un plantage avec "Round" ou le "Format Nombre"!!! 😕

Mais comme il ne s'agit pas ici de réinventer la calculette, je ne cherche pas plus loin.

Sauf si quelqu'un s'en amuse, ou que mikeo ait besoin de complément.

Amicalement,

Yann
 

Pièces jointes

Re : pb saisie textbox sur clavier numérique

Bonjour ma Laetitia préférée, 🙂

A qui tu causes?

En voyant ton intervention, j'ai un instant rêvé que tu m'avais peaufiné une solution pour
l'arrondi à deux décimales dans ma bidouille...............

Pff! Déçu! Mais pas grave! ..................... Juré: Je ne boude pas... 😀

Au plaisir,

Yann
 
Re : pb saisie textbox sur clavier numérique

Bonjour à tous Laetitia, Papounet, Yann, Mikeo

Je viens de saisir le fil.
Pour ma part cette question m'a beaucoup perturbé.
A force de chercher, voici ma solution.
Ici les prix sont à mettre dans la colonne 'D'.

Code:
Sub FormaCompta() 'Mise au format colonne "D" "Feuil2" (Prix Unitaire (€))
Dim i%, Y$, NbC%, M%, J%
Dim Text$, Num As Double, Num1 As Double
Dim Devise$, Form$

Devise = "€"
'Devise="xfp"
'----------- Format devise -----------
If Devise = "xfp" Then
    Form = "###,##0[$ " & Devise & "-1]"
Else
    Form = "###,##0.00[$ " & Devise & "-1]"
End If
'-------------------------------------

Application.ScreenUpdating = False
Sheets("Feuil2").Select
Range("D2").Value = "Prix Unit. (" & Devise & ")"
M = Sheets("Feuil2").Range("D65536").End(xlUp).Row

'------------ Traitement -----------
For i = 3 To M + 10
    Y = Range("D" & i).Value
    With Range("D" & i).Font
        .Name = "arial narrow"
    End With
    If Y <> "" Then
        NbC = Len(Y)
        For J = 1 To NbC
            Text = Mid(Y, J, 1)
'------------ Mise au format sans "." ni "," -------------
            If Text <> Chr(44) Or Text <> Chr(46) And Text = "" Then
                Num1 = Range("D" & i).Value
                Range("D" & i).Select
                Range("D" & i).NumberFormat = Form
                Range("D" & i).Value = Num1
            End If
'------------ Mise au format si "," (virgule) -------------
            If Text = Chr(44) Then
                Num1 = Range("D" & i).Value
                Range("D" & i).Select
                Range("D" & i).NumberFormat = Form
                Range("D" & i).Value = Num1
            End If
'--- Mise au format si "." (point) transformé en virgule ---
            If Text = Chr(46) Then
                Num = Replace(Range("D" & i).Value, ".", ",")
                Range("D" & i).Select
                Range("D" & i).NumberFormat = Form
                Range("D" & i).Value = Num
            End If
        Next
    End If
Next
Application.ScreenUpdating = True
End Sub

Il suffit de placer une liste en colonne 'D'.

j'espère que cela rendra service.

Bien amicalement

Jean-Paul
 
Bonsoir à tous,
Pour répondre à la question de Yann :

Dans le fichier de laetitia, remplace ceci :

VB:
Private Sub TextBox1_keyPress(ByVal keyAscii As MSForms.ReturnInteger)
If InStr("0123456789,.", Chr(keyAscii)) = 0 Then keyAscii = 0
If keyAscii = Asc(".") Then keyAscii = Asc(",")
End Sub
par cela :

VB:
Private Sub TextBox1_keyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789,.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
If InStr(TextBox1.Value, ",") <> 0 And Chr(KeyAscii) = "," Then KeyAscii = 0 'un seul séparateur (virgule)
If InStr(1, TextBox1.Value, ",") <> 0 Then 'seulement 2 décimales
  If Len(TextBox1.Value) > InStr(1, TextBox1.Value, ",") + 1 Then KeyAscii = 0
End If
End Sub

Klin89
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
953
Réponses
7
Affichages
3 K
Retour