[excel 2007 vba] Textbox saisie

florian -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,

J'ai un userform avec plusieurs textbox et je ne veux autoriser que la saisie de chiffre, avec des chiffres décimale aussi. J'ai bloqué pour que l'utilisateur ne puisse pas rentré plusieurs virgule dans la textbox mais quand j'inscrit un chiffre décimale dans la textbox que j'efface je ne peux plus inscrire un chiffre décimale.
Voici mon code:

Private Sub TxtBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not IsNumeric(Chr(KeyAscii)) And Chr(KeyAscii) <> "." Then
        KeyAscii = 0 'on annule la pression sur la touche
    End If
    If Chr(KeyAscii) = "." Then
    If Not virgule Then virgule = True Else KeyAscii = 0
    End If
End Sub


Comment remédier à ce problème?
Merci pour vos réponses.

1 réponse

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    La solution n'est pas de tester la saisie sur l'évènement KeyPress() mais sur l'évènement Change() du TextBox. Par exemple:

    Private Sub TextBox1_Change() 
         
        If CtrlSaisie(TextBox1.Text) = False Then 
            TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 1) 
        End If 
         
    End Sub 
    
    Public Function CtrlSaisie(ByVal str As Variant) As Boolean 
    Dim i As Long 
    Dim c As Variant 
    Dim trouve As Integer 
    
        trouve = 0 
    
        For i = 1 To Len(str) 
            c = Mid(str, i, 1) 
            If c = "," Then trouve = trouve + 1 
        Next i 
         
        If trouve > 1 Then 
            CtrlSaisie = False 
            Exit Function 
        End If 
         
        For i = 1 To Len(str) 
            c = Mid(str, i, 1) 
            If Not IsNumeric(c) And c <> "," Then 
                CtrlSaisie = False 
                Exit Function 
            End If 
        Next i 
         
        CtrlSaisie = True 
    
    End Function


    J'ai fait une fonction qui effectue le contrôle, ce qui permet d'effacer et de recommencer sans problème et de l'utiliser pour d'autres Textboxes le cas échéant.

    ;o)

    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
    Nicolas Boileau
    0