Contrôle numérique avec un point

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 !

BOCARAMEL

XLDnaute Occasionnel
Bonjour a tous 🙂
je cherche depuis plusieurs jours mais je ne trouve pas

est il possible d'avoir un contrôle numerique avec (isnumeric)
sur une textbox qui accepte les points et les virgules 😕

Merci pour vos réponses
bocaramel

ci-joint le fichier
 

Pièces jointes

Re : Contrôle numérique avec un point

Bonjour bocaramel

regarde le code ci-dessous si il peut t'aider, attention chez moi le séparateur décimail est un point :

Code:
If IsNumeric(Replace(TextBox1, ",", ".")) Then MsgBox "ok"

bonne journée
@+
 
Re : Contrôle numérique avec un point

Salut,

Un exemple avec gestion du point et de la virgule :
Code:
Private Sub TextBox1_Change()
    Dim Montant As Variant
    
    If Application.DecimalSeparator = "." Then
        Montant = Replace(Me.TextBox1.Value, ",", ".")
    Else
        Montant = Replace(Me.TextBox1.Value, ".", ",")
    End If
    
    'controle le bon format nombre pour le montant
    If Not IsNumeric(Montant) Then
        Cancel = True ' Annule la validation de contrôle
        MsgBox "Veuillez entrer un nombre !"
        UserForm1.TextBox1.Value = ""
     Else
        Montant = Format(Montant, "##,##0.00")
        Sheets("feuil1").Range("a1").Value = Montant
     End If
End Sub

++
Minick
 
Re : Contrôle numérique avec un point

Hello Forum, Bocaramel, Pierrot 🙂, Minick,

Tu peux aussi faire comme ceci
Code:
Private Sub TextBox1_Change()
'controle le bon format nombre pour le montant
montant = Format(UserForm1.TextBox1, "##,##0.00")
  If Not IsNumeric(montant) Then
  Cancel = True ' Annule la validation de contrôle
  MsgBox "Veuillez entrer un nombre !"
  UserForm1.TextBox1.Value = ""
   Else
   Sheets("feuil1").Range("a1").Value = UserForm1.TextBox1.Value
   End If

End Sub
et pour la TextBox1
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    If KeyAscii = 44 Then KeyAscii = 46

End Sub
Cdt, Hulk.
 
Re : Contrôle numérique avec un point

Re, bonjour Minick

@Minick
Attention avec ton test car si la case "utiliser les séparateurs système" est cochée et que le séparateur décimal déclaré dans les paramètres régionaux est différent, ton test deviendra caduc...
@+

Edition : bonjour Hulk
 
Re : Contrôle numérique avec un point

Re,

Effectivement, j'y avais pas pense mais le probleme se poserait egalement sur un poste avec separateur point avec un remplacement direct du point en virgule...
A BOCARAMEL de voir ce qui lui le conviendra le mieux

++
Minick
 
Re : Contrôle numérique avec un point

Bonjour Pierrot93 , Minick , Hulk et le forum
Vraiment merci pour vos réponses

La solution de Minick me convient parfaitement 🙂

effectivement j'ai le même problème avec la réponse de HULK

Encore merci
Bon forum a tous 🙂
 
Dernière édition:
Re : Contrôle numérique avec un point

Re,

Petites modifs sur le premier fichier joint par Bocaramel... S'il garde son code d'origine.

Modifies le code comme ceci
Code:
Private Sub TextBox1_Change()

    montant = Format(TextBox1, "##,##0.00")
  
    If Not IsNumeric(montant) Then
        Cancel = True
            If TextBox1 = "" Then Exit Sub
            MsgBox "Veuillez entrer un nombre !"
        TextBox1 = ""
   Else
    Sheets("feuil1").Range("a1").Value = TextBox1
   End If

End Sub
Ca évitera la deuxième MsgBox 😀

Juste pour t'apporter des petites précisions Bocaramel :

Tu n'as pas besoin d'écrire UserForm1.TextBox1.value puisque la TextBox1 est dans l'Usf1.
Si tu parles d'un TextBox1 dans un UserForm2 et que tu l'appelles depuis l'UserForm1 là oui il faut écrire UserForm1.TextBox1...

Aussi, en écrivant = TextBox1 c'est comme si tu écrivais = TextBox1.Value, pas besoin du Value... Mais les puristes diront peut-être le contraire 😀

Cdt, Hulk.
 
Dernière édition:
Re : Contrôle numérique avec un point

re,

vraiment Merci à tout le monde de prendre du temps
pour aider les débutants

le mélange de tout corresponds a ça

Dim Montant As Variant
If Application.DecimalSeparator = "." Then
Montant = Replace(Me.TextBox1.Value, ",", ".")
Else
Montant = Replace(Me.TextBox1.Value, ".", ",")
End If
If Not IsNumeric(Montant) Then
Cancel = True
If TextBox1 = "" Then Exit Sub
MsgBox "Veuillez entrer un nombre !"
TextBox1 = ""
Else
Montant = Format(UserForm1.TextBox1, "##,##0.00")
Sheets("feuil1").Range("a1").Value = UserForm1.TextBox1.Value
End If


cela correspond a mes attentes

Bon forum a tous
merci
bocaramel
 
- 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
14
Affichages
670
Réponses
17
Affichages
1 K
Réponses
0
Affichages
306
Retour