Bloquer une textbox pour n'avoir que des valeurs numériques avec décimales

  • Initiateur de la discussion Initiateur de la discussion Lauwn
  • Date de début Date de début

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 !

L

Lauwn

Guest
Bonjour,

Un petit pépin rencontré sous excel 2007 : Je souhaite ne pouvoir saisir dans une textbox que des valeurs numériques avec décimales. Du coup, j'ai créé le code suivant :

Private Sub TextBox5_Change()
If InStr(1, Right(TextBox5.Value, 1), ".", 1) Then
Else
TextBox5.Value = Val(TextBox5.Value)
End If
End Sub


A la base, ce code a été créé sous excel 2003... Et fonctionnait correctement. Depuis ma migration sur 2007, mon point apparait à la saisie, mais est supprimé dès que je cherche à saisir une décimale derrière.

Est ce que quelqu'un saurait me dire d'où vient le problème ?

Merci d'avance !
 
Re : Bloquer une textbox pour n'avoir que des valeurs numériques avec décimales

Bonjour Lauwn, salut Papou 🙂

Essayez :

Code:
Private Sub TextBox5_Change()
Dim t$, t1$, i%
t = Replace(TextBox5, ",", ".")
t1 = Replace(t, ".", ",")
For i = 1 To Len(t)
  If Not (IsNumeric(Left(t, i)) Or _
    IsNumeric(Left(t1, i))) Then Exit For
Next
t = Left(t, i - 1)
If t Like "0#*" Then t = Val(t) '0 non significatifs
TextBox5 = t
End Sub
Fonctionne quel que soit le séparateur décimal de l'ordi.

A+
 
Re : Bloquer une textbox pour n'avoir que des valeurs numériques avec décimales

Re,

La macro du post #3 n'accepte pas l'entrée de nombres négatifs.

Si l'on désire qu'ils soient acceptés, utiliser :

Code:
Private Sub TextBox5_Change()
Dim t$, neg$, t1$, i%
t = Replace(TextBox5, " ", "") 'supprime les espaces
t = Replace(t, ",", ".")
If Left(t, 1) = "-" Then neg = "-": t = Mid(t, 2)
t1 = Replace(t, ".", ",")
For i = 1 To Len(t)
  If Not (IsNumeric(Left(t, i)) Or _
    IsNumeric(Left(t1, i))) Then Exit For
Next
t = Left(t, i - 1)
If t Like "0#*" Then t = Val(t) '0 non significatifs
TextBox5 = neg & t
End Sub
Edit : j'avais oublié de supprimer les espaces, faites de même pour la macro du post #3.

A+
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
2
Affichages
1 K
Antoine C.
A
U
Réponses
4
Affichages
6 K
Ukiki
U
Réponses
3
Affichages
751
B
Réponses
4
Affichages
7 K
B
Retour