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

laetitia90

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

bonjour tous:):):):):):)
pour YAN c'est un sujet qui revient souvent d'ailleurs que nous avons partagés ensemble si ma mémoire est bonne???
le souci c'est toujours le setfocus
comment detecter dans ton cas la textbox qui a la "main" sans passer par des getfocus ou lostfocus qui sont assez complexe a maitriser sujet aborde entre autre par l'ami HASCO
je me rappel plus le post
dans ton cas en "bidouillant" un peu j'ai reussi a capter le focus pas si evident
par contre j'ai simplifier le module de class pas de textbox renommées

de plus j'ai l'impression que tu aimes pas redim preserve
je te mets un exemple avec des textbox renommees & utilisant redim
tu verras entre les parantheses je mets rien tu te poses pas la question du nombre de textboxs
Code:
Dim txt() As New Classe1

tu vois tu as reussi a me faire "bosser":p:p
 

Pièces jointes

  • Copie de TAXES-2.zip
    18.1 KB · Affichages: 56
  • class1.zip
    15 KB · Affichages: 56
  • class1.zip
    15 KB · Affichages: 41
  • class1.zip
    15 KB · Affichages: 49

YANN-56

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

Bonjour Laetitia, aux participants, et à ceux qui passeront par ici,

VIARD: Merci pour ton aide, mais je dois avouer ne pas avoir encore tout éplucher.

Klin: Merci pour ton aide, mais il me semble que ta méthode n'arrondi pas les nombres,
mais masque seulement les chiffres au-delà de la deuxième décimale. (Sauf erreur de lecture de ma part)

Laetitia::):):)
que nous avons partagés ensemble si ma mémoire est bonne???

Il est vrai que nous nous sommes croisés sur plusieurs sujets.
Mais tu as toujours gagné grâce à tes connaissances bien supérieures aux miennes.
(Tu m'as même un jour traité de "Pervers*** du VBA", j'avais bien aimé le compliment!):)

comment detecter dans ton cas la textbox qui a la "main"

Je l'ai fait par ailleurs avec:

Code:
Private Sub GROUPE_DE_TEXTBOXES_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 UserForm1.Label7.Caption = GROUPE_DE_TEXTBOXES.Name
End Sub

Ce qui me permettait de détecter l'intention de l'utilisateur: De H.T. à T.T.C. ou de T.T.C. à H.T.

de plus j'ai l'impression que tu aimes pas redim preserve

Il est vrai! Mais ce n'est qu'une réaction stupide d'un vieux têtu. Je vais devoir me corriger.

tu vois tu as reussi a me faire "bosser"

Et pour cela, je t'en remercie vivement, en espérant aussi t'avoir fait sourire.

*** Il a une autre idée en passant comme d'hab. par la porte de derrière,
car au final sa dernière bidouille fonctionne bien, et que seule l'absence d'arrondis est dérangeante.

Amicalement, et à plus tard avec une usine à gaz.

Yann
 

YANN-56

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

Re Bonjour Laetitia, et à ceux qui passeront par là,

Pépé a encore bidouillé à faire hurler les puristes.... Il se marre!

1) Le focus: J'ai créé un bouton qui se le prend dans la tronche par son "TabIndex" à 0
L'utilisateur est donc obligé de venir cliquer dans un des TextBoxes, et là il est piégé:
Je sais ce qu'il veut faire.

2) Comme arrondir à la deuxième décimale fiche le désordre dans la procédure,
je masque les TextBoxes par des Label qui eux, auront le bon format, sans déranger.
(Avec l'avantage d'interdire aux petits malin de venir écrire n'importe quoi là où il ne le faut pas!)

Le souci de visualisation est donc résolu... D'une façon peu académique; mais c'est fait!

On peut donc trouver un H.T. en partant d'un T.T.C., ou l'inverse.
Même en entrant un montant de T.V.A. trouver les deux.... C'est amusant!

J'ai bien dit "Amusant"........ Car du coté "Utile" faut pas se leurrer......
Peut-être aux impôts, mais ils doivent avoir ce qu'il faut.... Poil au dos.

Une réinitialisation des TextBoxes après avoir changer le taux de T.V.A.
serait un bon cas d'étude pour les soirées pluvieuses....... On a donc le temps.

Amicalement, et au plaisir,
(Sans oublier un nouveau Merci pour tout ce que tu viens encore de m'apprendre)

Yann
 

Pièces jointes

  • TAXES_3.xls
    63.5 KB · Affichages: 62

YANN-56

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

Re Laeti,

L'algorithme simplifié à toujours été mon cheval de bataille.;)
Mon compagnon cheval s'appelait "Crack", je ne pense pas pouvoir un jour usurper son nom.

Tu vas manquer à beaucoup d'XLDNautes.

De mon coté, la semaine prochaine, je me casse sine die avec ma petite caravane super confort.:)

Vers le sud-est .... Car ici, si l'on va vers le sud, 1,5 kms, et on tombe à l'eau!
Je n'ai pas testé, mais elle ne devrait pas flotter.

Remarque qu'au nord c'est un peu plus loin, mais c'est pareil.
Que d'eau, que d'eau en Bretagne! De mer, il s'entend, car l'autre nous fait défaut.

A mon retour, j'espère partager encore un bain rafraichissant avec toi dans le VBA-World.

Amicalement, et à un de ces jours.

Yann

P.S. Il est où l'auteur du Fil ?????
 

YANN-56

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

Bonjour à ceux qui passeront par là,

Laetitia m'a donné l'ordre de bosser; alors je l'ai fait! :)

La modification du taux de T.V.A. par click sur le label concerné est automatisée.

Je m'étais égaré dans une vingtaine de lignes qui ne marchaient pas terrible...
Alors que l'astuce était de faire croire à Bill une modification "Bidon" hi, hi, hi
(Voir action sur le dit Label => 2 Lignes...)

Je ne sais pas, et je doute que la bidouille puisse encore intéresser quelqu'un,
mais je joins cependant mon point final à ce sujet qui n'avait l'air de rien... Et pourtant!

Je me suis bien amusé et ai appris: Merci à mikeo d'avoir posé cette question.

Amicalement,

Yann
 

Pièces jointes

  • TAXES_4.xls
    81 KB · Affichages: 44

laetitia90

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

rebonjour tous
YAN:):):):)
vu le beau temps a grenoble j'ai décide de passer un petite heure sur le sujet
je pense pas.. si interface utilisateur de tout bloque tout de suite cela peut être frustrant a mon avis . il faut laisser la liberte de se "promener"
tant qu'il frappe pas le premier chiffre. seulement a ce moment on "bloque" pour éviter les erreurs
dans l'exemple donnée pas de variable public pas de simulation de frappe pour leurrer billou pas de moussemove ...j'utilise KeyUp enabled & un peu de couleurs
on peut meme ce passer du bouton pour reinitialiser vu quand vidant la textbox qui a le focus rend la main au autres textboxs
j'espere que cela va t'aider:):):)
 

Pièces jointes

  • taxe2.zip
    20 KB · Affichages: 40

kiki29

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

Salut,je radote car je dois déjà l'avoir posté,un pot-pourri pour des saisies
 

Pièces jointes

  • SaisieNum.zip
    19.8 KB · Affichages: 23
  • SaisieNum.zip
    19.8 KB · Affichages: 22
  • SaisieNum.zip
    19.8 KB · Affichages: 23
Dernière édition:

laetitia90

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

bonjour tous
Bebere si je peus me permettre:(:(:( le sujet d'origine a change le but de l'ami YAN:):)
c'etait d'affiner le calcul le faire dans tout les sens en partant de TT ouTVA ou TTC

On peut donc trouver un H.T. en partant d'un T.T.C., ou l'inverse.
Même en entrant un montant de T.V.A. trouver les deux.... C'est amusant!

ton calcul va uniquement marcher en partant de CALCUL TT

par contre kiki29 perso rien compris & rien a voir enfin pour moi !!! avec le sujet autrement ton code peut se resumer en quelques lignes sans passer par des OCX ou autres???
amicalement leti :)
 

kiki29

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

Salut,bof c'était juste un pot-pourri ,par exemple remplacement auto d'une virgule par un point ou l'inverse et interdiction de saisir une 2eme fois un séparateur décimal ,l'ocx c'est juste pour la saisie d'une date

je m'en suis tenu au titre du post "pb saisie textbox sur clavier numérique"
 
Dernière édition:

YANN-56

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

Bonsoir Laetitia, Bebere, Kiki, et aux observateurs,

Je me régale en voyant que la question de mikeo engendre si beau débat!!!

Ceci vient à corroborer la ligne en bleu dans ma signature... N'est-il pas?

Je n'ai pas encore ouvert les propositions de Bebere et de Kiki.
mais je vais certainement regarder attentivement.

Le rappel de Laetitia:
On peut donc trouver un H.T. en partant d'un T.T.C., ou l'inverse.
Même en entrant un montant de T.V.A. trouver les deux.... C'est amusant!
N'est pas à perdre de vue.
Je n'ai pas dit "Perte de vue" car cela fonctionne dans mon dernier exemple.
(Mal construit, je l'accorde, mais aboutissant cependant:))

La question restant à l'ordre du jour est de trouver la méthode la plus simple, et la plus claire,
afin que les personnes ayant ce souci dans un de leurs projets y trouvent leur compte.

J'ai vu 427 affichages............ !!!!!!!!!
Nous ne parlons donc plus de dialogue, mais de partage dans l'esprit du Forum.
(Je ne m'inclus pas dans cette optique, vu mon niveau limité ... Je participe seulement avec mes moyens)

Qui sait? Il y avait-il là matière à réflexion. :confused:

De la participation de ceux qui ont le plus d'expérience (BarbamachinSupertruc) sortira certainement la lumière.

En l'attente qu'ils ramènent leur fraise:), je vous dis Merci d'être ici et d'avoir apporté votre aide.
Bravo pour ce que vous savez faire. J'ai envie de me battre pour, un jour, avoir votre compétence,
et de savoir la partager comme vous le faites.

Amicalement,

Yann
 
Dernière édition:

YANN-56

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

Bonsoir à tous,

Voici mon dernier jet qui me semble allégé et compréhensible pour beaucoup.

A noter que j'ai remis en place les noms initiaux des contrôles, des variables et des modules.
Cela allonge un peu les lignes de codes, mais je préfère pour mieux m'y retrouver.:)

Je n'ai toujours pas compris pourquoi la mise en forme des TextBoxes faisait planter
mon code, lors de mes premiers essais.... Qu'importe; maintenant on s'en fiche.

Sauf le respect que je dois à la qualité des intervenants; je maintiens ma méthode.
(En ayant, bien entendu inclus, ce qu'ils m'ont efficacement enseigné)

J'ai découvert l'utilisation des actions sur le clavier. C'est super!
J'ai vraiment été sot de ne pas m'y intéresser avant!!!:mad:

Pour peaufiner ce p'tit truc, j'ai tenté d'interdire la saisie d'une deuxième virgule,
ainsi que de limiter celle-ci à deux décimales. (Logique comptable)

Avec "InStr" et "InStrRev" j'ai construit des usines à gaz inavouables...qui ont toutes fait Plouf!

Si l'un d'entre vous a une idée, je suis preneur, et l'en remercie d'avance.

Amicalement,

Yann

P.S. Je serais aussi attentif à une solution plus simple et plus courte.
 

Pièces jointes

  • TAXES_05_06_11.xls
    86 KB · Affichages: 37

klin89

XLDnaute Accro
Bonsoir à tous,
Bonsoir Yann,

Pour répondre à ceci :

Pour peaufiner ce p'tit truc, j'ai tenté d'interdire la saisie d'une deuxième virgule,
ainsi que de limiter celle-ci à deux décimales. (Logique comptable)

Vois cela :

VB:
Private Sub GROUPE_DE_TEXTBOXES_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If GROUPE_DE_TEXTBOXES.Name = "TextBox1" Then SENS_CALCUL = "HT_VERS_TTC"
  If GROUPE_DE_TEXTBOXES.Name = "TextBox2" Then SENS_CALCUL = "TVA_VERS_HT_ET_TTC"
  If GROUPE_DE_TEXTBOXES.Name = "TextBox3" Then SENS_CALCUL = "TTC_VERS_HT"

  If InStr("0123456789.,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
  If InStr(GROUPE_DE_TEXTBOXES.Value, ",") <> 0 And Chr(KeyAscii) = "," Then KeyAscii = 0 'un seul séparateur (virgule)
  If InStr(1, GROUPE_DE_TEXTBOXES.Value, ",") <> 0 Then 'seulement 2 décimales
    If Len(GROUPE_DE_TEXTBOXES.Value) > InStr(1, GROUPE_DE_TEXTBOXES.Value, ",") + 1 Then KeyAscii = 0
  End If
End Sub

Klin89
 

YANN-56

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

Merci beaucoup klin, :)

De limiter à deux décimales: Le but est atteint... Bravo!
(J'avais réussi aussi, par ailleurs, mais vachement plus lourd que ta façon de faire)

D'interdire l'erreur de taper deux virgules plantant l'appli: Non. :confused:

Cela fonctionne superbement avec le clavier Alphanumérique, mais avec le clavier numérique,
le doublon n'est pas détecté. (Of course: On tape un point et non une virgule).

Il va donc falloir ajouter:
"Replace point par virgule".... Ou un "And" ou "or" Chr(KeyAscii) = "." dans la ligne.

Je vais regarder en espérant pas me mélanger les pinceaux.

Merci encore klin, c'est sympa.

Si j'y arrive, je n'embête plus personne. :)

Amicalement,

Yann

SUITE:
En ajoutant cette ligne:

Code:
If InStr(GROUPE_DE_TEXTBOXES.Value, ",") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0 'un seul séparateur (Y compris point)
Sauf erreur; cela semble fonctionner.....
 
Dernière édition:

Discussions similaires

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

Statistiques des forums

Discussions
312 294
Messages
2 086 902
Membres
103 404
dernier inscrit
sultan87