Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Entrée d'un caractére alors qu'il ne devrais pas?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

néné06

XLDnaute Accro
Bonsoir le Forum.

J’ai un problème, lors de la frappe de la touche « . » 🙁 keycode =110 :keyascii=46).
En effet, j’ai placé trois « barrages », ci_dessous, pour éviter la frappe du « . » Mais malgré cela, il arrive aléatoirement que le « . » entre sur ma textbox (TB4), ce qui provoquera une erreur de calcul.


Private Sub TB4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 44, 48 To 57
Case Else: KeyAscii = 0
End Select
End Sub

Private Sub TB4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 110 Then KeyCode = 0
End Sub

Private Sub TB4_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 110 Then KeyCode = 0
End Sub


J’ai, par la suite, intégré cette routine, qui me corrige l’apparition aléatoire du « . », par la « , »
Jusqu'à présent, le bug est réparé, mais cette programmation est, je dirais, « pas très conventionnelle » !!!

Private Sub verif_tb4_pas_point()
a = Len(Me("TB4").Value)
For i = 1 To a
If Mid(Me("TB4").Value, i, 1) = "." Then
Me("TB4").Value = Left(Me("TB4").Value, i - 1) + ","
End If
Next i
End Sub


Quelqu’un aurait t-il une autre idée ou une explication à ce phénomène ?



voici le code TB4_Change


Private Sub TB4_Change()
If Me("TB4").Value = "" Then
Me("TB7").Value = Me("TB6").Value
ecrit_TB5_sur_usf5
affiche_ou_non_jh
Exit Sub
End If
On Error GoTo aa
If Me("ComboBox2").ListIndex < 6 Then
If Me("TB6").Value = "" Then Me("TB6").Value = "0"
verif_tb4_pas_point
Me("TB7").Value = CDbl(Me("TB6").Value) + CDbl(Me("TB4").Value)
End If
If Me("ComboBox2").ListIndex > 5 Then
verif_tb4_pas_point
Me("TB7").Value = CDbl(Me("TB6").Value) - CDbl(Me("TB4").Value)
End If
If CDbl(Me("TB7").Value) < 0 Then
Me("TB4").Value = ""
Me("TB7").Value = ""
Me("TB5").Value = ""
End If
If Me("TB4").Value <> "" And Me("TB4").Visible = True Then
verif_tb4_pas_point
valtb4 = CDbl(Me("TB4").Value)
End If
aa:
ecrit_TB5_sur_usf5
affiche_ou_non_jh
End Sub


D’avance merci !
 
Re : Entrée d'un caractére alors qu'il ne devrais pas?

Bonjour Néné06, bonjour à tous,

Pourquoi pas plus simplement:

Code:
TB4=Replace(TB4, ".", ",")

S'il y a une virgule dans TB4, rien ne sera modifié, sinon le "." sera remplacé par ",".

@+

Gael
 
Re : Entrée d'un caractére alors qu'il ne devrais pas?

Bonjour Gael

J'ai placé l'instruction "Replace" dans le sub TB4_change et je vais testé ,si mon ordi la prend en compte dans 100% des cas?
Les instructions écrites dans mon prog ne passaient pas à chaque fois???????

Merci pour le renseignement!

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
232
Réponses
10
Affichages
281
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
3
Affichages
665
Réponses
4
Affichages
243
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…