[VBA] saisie dans une form

saisie dans une form [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 21-08-2008 à 09:55:50    

: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

Reply

Marsh Posté le 21-08-2008 à 09:55:50   

Reply

Marsh Posté le 21-08-2008 à 10:09:16    

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.

Reply

Marsh Posté le 21-08-2008 à 10:21:49    

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...  :??:

Reply

Marsh Posté le 21-08-2008 à 11:06:35    

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... ?

Reply

Marsh Posté le 21-08-2008 à 11:44:31    

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
Reply

Marsh Posté le 21-08-2008 à 12:01:44    

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
Reply

Marsh Posté le 22-08-2008 à 14:29:28    

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... ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed