Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1503 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] saisie dans une form

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] saisie dans une form

n°1775319
scaryfan
Apple Inside
Posté le 21-08-2008 à 09:55:50  profilanswer
 

:hello:  
 
Voici le code concernant une zone de saisie que j'ai placée dans une boîte de dialogue.
Ma zone de saisie s'appelle R001.
 

Code :
  1. Private Sub R001_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  2.     If KeyAscii = Asc(Point) Then
  3.         If InStr(R001, Virgule) = 0 Then
  4.             KeyAscii = Asc(Virgule)
  5.         Else
  6.             KeyAscii = 0
  7.         End If
  8.     ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
  9.         KeyAscii = 0
  10.     ElseIf InStr(R001, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
  11.         KeyAscii = 0
  12.     End If
  13.    
  14.     If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
  15. End Sub


 
Si je comprends bien ce bout de code, il permet de :
  - si l'on saisit un point, il se transforme en virgule
  - si l'on tabule, on passe au champs suivant (d'ailleurs - parfois - ça "bugge" ; la tabulation s'insère au montant saisi et l'on ne passe pas au champs suivant  :fou: ; mais ça ne le fait pas tout le temps... ),
  - les entrées décimales sont permises.
 
Mon souci est que je n'arrive pas à saisir de montants négatifs... avec le "-" du pavé numérique...
 
En fait, quand j'ai commencé à faire mon programme sous VBA il y a 3 mois, j'ai dû créé une boîte de dialogue dans laquelle je saisis des montants...
Le but est d'utiliser le pavé numérique et que chaque montant saisi dans une zone de saisie soit reformaté dès que l'on passe dans la seconde zone de saisie (il y a grosso modo une cinquantaine de zones de saisie dans ma boîte de dialogue).
Exemple :
 je tape 4520 et ça devient 4 520,00
 je tape 4520.25 et ça devient 4 520,25
 par contre, le signe "-" n'est pas pris en compte...
 
Quelqu'un peut m'aider ?
 
Merci d'avance

mood
Publicité
Posté le 21-08-2008 à 09:55:50  profilanswer
 

n°1775339
olivthill
Posté le 21-08-2008 à 10:09:16  profilanswer
 

Pour que le signe moins soit accepté, il faudrait qu'il fasse partie de entrees_decimales_permises ou qu'il soit traité spécifiquement dans un if.

n°1775347
scaryfan
Apple Inside
Posté le 21-08-2008 à 10:21:49  profilanswer
 

olivthill a écrit :

Pour que le signe moins soit accepté, il faudrait qu'il fasse partie de entrees_decimales_permises ou qu'il soit traité spécifiquement dans un if.


 
Merci pour ta réponse mais j'arrive à la limite de mes possibilités en programmation VB...  :cry:  
Il faut que je rajoute un ElseIf après le deuxième...  :??:

n°1775394
scaryfan
Apple Inside
Posté le 21-08-2008 à 11:06:35  profilanswer
 

Au début de mon projet, j'ai aussi ça :
 

Code :
  1. Option Explicit
  2. Const entrees_decimales_permises = ".,0123456789" & vbCr & vbBack
  3. Const entrees_entieres_permises = "0123456789" & vbCr & vbBack
  4. Const Point = "."
  5. Const Virgule = ","


 
C'est là que je dois modifier quelque chose... ?

n°1775410
scaryfan
Apple Inside
Posté le 21-08-2008 à 11:44:31  profilanswer
 

scaryfan a écrit :

Au début de mon projet, j'ai aussi ça :
 

Code :
  1. Option Explicit
  2. Const entrees_decimales_permises = ".,0123456789" & vbCr & vbBack
  3. Const entrees_entieres_permises = "0123456789" & vbCr & vbBack
  4. Const Point = "."
  5. Const Virgule = ","


 
C'est là que je dois modifier quelque chose... ?


 
Bon, pour le signe négatif, j'ai finalement trouvé...
J'ai mis cela :
 

Code :
  1. Option Explicit
  2. Const entrees_decimales_permises = "-.,0123456789" & vbCr & vbBack
  3. Const entrees_entieres_permises = "-0123456789" & vbCr & vbBack
  4. Const Point = "."
  5. Const Virgule = ","


 
et ça marche...
 
par contre, pourquoi - parfois - le TAB ne fonctionne pas et s'insère dans la saisie... ?  :??:  
 


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
n°1775415
kiki29
Posté le 21-08-2008 à 12:01:44  profilanswer
 

Salut  
Voir validation sur TextBoxY_Exit et un Format adéquat ( aide en ligne VBA Excel ) de TextBoxY.text
Supprimer la ligne If KeyAscii = 13 Then .....

Message cité 1 fois
Message édité par kiki29 le 21-08-2008 à 12:02:00
n°1775997
scaryfan
Apple Inside
Posté le 22-08-2008 à 14:29:28  profilanswer
 

kiki29 a écrit :

Salut  
Voir validation sur TextBoxY_Exit et un Format adéquat ( aide en ligne VBA Excel ) de TextBoxY.text
Supprimer la ligne If KeyAscii = 13 Then .....


 
Merci de ton aide...
Je vais voir tout cela... ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] saisie dans une form

 

Sujets relatifs
[RESOLU] [VBA excel] copier un fichier d'un repertoire a un autreRetouver le form englobant sans partir d'un element
Tracer des graphiques à la chaînes avec Excel/VBA [Résolu][VBA] concaténer une chaîne de caractère dans une date
[VBA] Importation de modules 1 seul fois[VBA] requete SQL dans un programme VB pour publipostage vers word
[VBA] [EXCEL] Problème Collage Spécial - Transposée[VBA] Controle d'Internet Explorer (IE) avec Excel
[VBA][Excel] comparer deux dates[VBA] chemin disque réseau
Plus de sujets relatifs à : [VBA] saisie dans une form


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR