[VB Excel] probleme dans textBox [RESOLU]

probleme dans textBox [RESOLU] [VB Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 10-03-2004 à 11:38:05    

bonjour a tous,
 
j'ai sur l'evenement keypress de ma textbox une procedure qui empeche l'utilisateur de saisir plus de lignes que ne compte le controle :
 

Code :
  1. Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  2. Me.TextBox1 = Me.TextBox1 & Chr(KeyAscii)
  3. KeyAscii = 0
  4. If Me.TextBox1.LineCount > 3 Then
  5.     Me.TextBox1 = Left(Me.TextBox1, Len(TextBox1) - 1)
  6. End If
  7. End Sub


 
Ca limite bien la saisie mais par contre, impossible alors de modifier le texte saisi. Si par exemple je tape " bonkour c'est moi" et que je veux corriger ma faute de frappe, je peux mettre le curseur a l'endroit voulu, supprimer le "k" mais le "j" se rajoute à la fin ==> "Bonour c'est moij"
Obligé d'effacer tout ce qui suit la faute de frappe pour pouvoir la corriger...:/
 
Voila si vous voyez comment modifier mon code...
Je ne suis pas développeur [:spamafote]
 
Merci d'avance


Message édité par karoli le 11-03-2004 à 12:13:57
Reply

Marsh Posté le 10-03-2004 à 11:38:05   

Reply

Marsh Posté le 10-03-2004 à 14:39:19    

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)  
   
  Me.TextBox1 = Me.TextBox1 & Chr(KeyAscii)  
  If Me.TextBox1.LineCount > 3 Then  
      KeyAscii = 0    
  End If  
  Me.TextBox1 = Left(Me.TextBox1, Len(TextBox1) - 1)
  End Sub
 
Essaie comme ca je pense que ca devrais marché et reoudre ton probleme d'edition

Reply

Marsh Posté le 10-03-2004 à 16:29:54    

Salut axl et merci pour ton aide  :jap:  
 
Malheureusement, elle n'a aucun effet sur mon problème :/
 
Mais je suis sur que vous allez me sortir de l'embarras  ;)

Reply

Marsh Posté le 10-03-2004 à 16:32:27    

comment ca tu as tjrs ton probleme d'édition??? c'est pas trop normal ca!! comprend pas

Reply

Marsh Posté le 10-03-2004 à 16:38:30    

ca ne change strictement rien [:spamafote]
 
:(

Reply

Marsh Posté le 10-03-2004 à 21:52:43    

et si au lieu de faire ton traitement sur le key_press, tu le fais sur le key_up en remplaçant keyascii par keycode, ça marche ?


Message édité par couitchy le 10-03-2004 à 21:55:53
Reply

Marsh Posté le 11-03-2004 à 08:44:06    

Salut couitchy,
Non ca na marche pas !
Si j'utilise ma procédure( avec evenement Keyup et keycode), le comportement est assez loufoque  :pt1cable:  
 
Et si j'utilise la procedure d'axl avec tes changements, on peut editer un caractere a la fois (c'est mieux que rien ;) )mais par contre le "enter" est doublé :/
 
Allez, on ne desespere pas !  
entre vous, les "habitants" d'autres forums ou j'ai poste mon probleme, et ma maigre contribution, on devrait s'en sortir :o
 
Encore merci
Allez, on ne se relache pas ;)


Message édité par karoli le 11-03-2004 à 09:20:13
Reply

Marsh Posté le 11-03-2004 à 12:15:44    

re-
 
Bon j'ai resolu le probleme en inserant une partie de mon code de l'evenement keypress dans le code de l'evenement keydown, qui lui gerait le nombre de fois ou l'utilisateur pouvait utiliser la touche "enter".
 
Je vous mets le code pour info :
 

Code :
  1. Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  2. Dim B As Integer, A As Integer, NbEnter As Integer, NbLignes As Integer
  3. Static C As Integer, D As Integer
  4. NbEnter = 9     'à déterminer
  5. NbLignes = 9    'à déterminer
  6. If Me.TextBox1 = "" Then A = 0
  7. If KeyCode = 13 Then
  8.     B = 1
  9.     Do
  10.         A = InStr(B, Me.TextBox1, Chr(10), vbTextCompare)
  11.         D = D + 1
  12.         B = A + 1
  13.     Loop Until A = 0
  14.     C = D
  15.     D = 0
  16.     If C >= NbEnter Then
  17.         KeyCode = 0
  18.     End If
  19. End If
  20. If Me.TextBox1.LineCount > NbLignes Then
  21.     Me.TextBox1 = Left(Me.TextBox1, Len(TextBox1) - 2)
  22. End If
  23. End Sub


 
Merci a tous

Reply

Sujets relatifs:

Leave a Replay

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