Not IsNumeric >> Problème

  • Initiateur de la discussion Initiateur de la discussion Azuder
  • 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 !

A

Azuder

Guest
Bonjour,

J'aimerai un petit peu d'aide afin de résoudre un problème avec la fonction Not IsNumeric.

Je vous mets le code :

Code:
Private Sub TB_PUHT_Change()

If TB_PUHT.Value <> "" Then

     If (Not IsNumeric(TB_PUHT.Value)) Then
          MsgBox "Message d'erreur"
          TB_PUHT.Value = ""
          TB_PUHT.SetFocus
     Exit Sub
     End If

End If

Ma zone de saisie peut recevoir uniquement les chiffres. Cependant dans un prix, on peut retrouver des chiffres après une ",". Or, la "," ou le "." ne sont pas numériques et donc il m'est impossible de saisir autre chose qu'un entier...

Pouvez-vous m'aider svp ?

Merci
 
Re : Not IsNumeric >> Problème

Bonjour,

Voici ton code corrigé, j'ai mis le . en tant que séparateur de démimale ( la virgule est moins bien reconnu).

Code:
Private Sub TB_PUHT_Change()

If TB_PUHT.Value <> "" Then

 If Not IsNumeric(Right(TB_PUHT.Value, 1)) And Right(TB_PUHT.Value, 1) <> "." Then
          MsgBox "Message d'erreur"
          TB_PUHT.Value = ""
          TB_PUHT.SetFocus
     Exit Sub
     End If


End If
End Sub
 
Re : Not IsNumeric >> Problème

Un ptit bonus, a la place de TB_PHT.value = "", remplace le par :
Code:
       TB_PUHT.Value = Left(TB_PUHT.Value, Len(TB_PUHT.Value) - 1)

grace à ça , au lieu de remettre la txtbox à vide, ça supprime le caractere interdit.

@+
 
Re : Not IsNumeric >> Problème

bonjour le fil,

j'arrive un peu après la bataille, mais voici un code qui contraint la saisie d'un nombre (avec une virgule comme séparateur, comme reconnu par IsNumeric) sans message d'erreur.

Code:
Private Sub TB_PUHT_Change()
TB_PUHT.Text = Replace(TB_PUHT.Text, ".", ",")
If TB_PUHT.Text = "," Then TB_PUHT.Text = "0,": Exit Sub
If Len(TB_PUHT.Text) = 1 And Not IsNumeric(TB_PUHT.Text) Then _
    TB_PUHT.Text = vbNullString
If Len(TB_PUHT.Text) > 1 And Not IsNumeric(TB_PUHT.Text) Then _
    TB_PUHT.Text = Left(TB_PUHT.Text, Len(TB_PUHT.Text) - 1)
End Sub

edit:
on peut rajouter ce code en complément pour "nettoyer" la TextBox au moment de sa sortie :
Code:
Private Sub TB_PUHT_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Right(TB_PUHT.Text, 1) = "," Then _
    TB_PUHT.Text = Left(TB_PUHT.Text, Len(TB_PUHT.Text) - 1)
End Sub

a+
 
Dernière édition:
Re : Not IsNumeric >> Problème

Merci beaucoup, cela fonctionne parfaitement 🙂

J'ai posté que quelques messages sur ce forum et j'ai toujours été bien accueilli par les membres et les réponses sont toujours aussi intéressantes.

A la prochaine, pour un nouveau problème .... non j'espère ne plus en avoir, puisque mon projet doit se clôturer dans moins d'un mois ^^

(j'ai repéré ce problème de "." pendant la phase de tests)

A++
 
- 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

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
368
Réponses
4
Affichages
527
Retour