pb saisie textbox sur clavier numérique

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

  • textbox.xls
    23 KB · Affichages: 117
  • textbox.xls
    23 KB · Affichages: 128
  • textbox.xls
    23 KB · Affichages: 134

mikeo

XLDnaute Occasionnel
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
 

YANN-56

XLDnaute Barbatruc
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

  • CORRECTIF.xls
    26.5 KB · Affichages: 150

mikeo

XLDnaute Occasionnel
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

  • textbox.xls
    35.5 KB · Affichages: 124
  • textbox.xls
    35.5 KB · Affichages: 114
  • textbox.xls
    35.5 KB · Affichages: 112

YANN-56

XLDnaute Barbatruc
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
 

laetitia90

XLDnaute Barbatruc
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??:confused:
 

Pièces jointes

  • calcul.zip
    11.7 KB · Affichages: 96
  • calcul.zip
    11.7 KB · Affichages: 96
  • calcul.zip
    11.7 KB · Affichages: 105

Paritec

XLDnaute Barbatruc
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:)
 

mikeo

XLDnaute Occasionnel
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

  • textboxlaetitia.xls
    35.5 KB · Affichages: 97

YANN-56

XLDnaute Barbatruc
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"!!! :confused:

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

  • TAXES.xls
    32.5 KB · Affichages: 99

laetitia90

XLDnaute Barbatruc
Re : pb saisie textbox sur clavier numérique

rebonjour :):):)
si tu tiens vraiment a travailler avec des virgules je pars seulement calcul ttc
il faut cdbl & non val comme dit plus haut
 

Pièces jointes

  • Copie de textbox2.zip
    13.8 KB · Affichages: 90

YANN-56

XLDnaute Barbatruc
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... :D

Au plaisir,

Yann
 

VIARD

XLDnaute Impliqué
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
 

klin89

XLDnaute Accro
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:

Discussions similaires

Réponses
7
Affichages
2 K
Réponses
64
Affichages
6 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote