VBA - Isumeric ou 0

Bonsoir,

J'ai un code qui affiche un message d'erreur lorsque les données entrées ne sont pas sous forme numérique. Seul problème, le message d'erreur s'affiche aussi quand les textbox sont laissées vides. Et je dois donc remplir 0 dans toutes les TB concernées... assez fastidieux !

Quelle modification puis-je apporter pour éviter cela ?

Merci de votre aide !

Private Sub CommandButton1_Click()
    Dim lastrow As Long
    Dim i As Long
    Dim element As Variant
    Dim msgErreur As String
    Dim nbErreur As Integer

   If MsgBox("Etes-vous certain de vouloir ajouter ces informations?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
        Set ws = Sheets("BDD")
        ws.Unprotect

    nbErreur = 0
    msgErreur = "Merci de vérifier les erreurs suivantes:" & vbCrLf

    If CB_code.value = "" Then
        nbErreur = nbErreur + 1
        msgErreur = msgErreur & " - Code obligatoire" & vbCrLf
    End If

       If Not IsNumeric(TB_poids) Then
        nbErreur = nbErreur + 1
        msgErreur = msgErreur & "Le poids doit être au format nombre" & vbCrLf
    End If

    If nbErreur > 0 Then
       MsgBox (msgErreur) & " Autrement saisir 0 dans les cases concernées" & vbCrLf
    Else
         

Bonsoir,

Une TextBox ne contient que du texte. Si vide, sa valeur est donc "". Testée avec IsNumeric, la réponse sera naturellement False, car la valeur texte vide n'est pas numérique (ne peut être convertie en nombre).

Si ta saisie est à caractère numérique, mais n'est pas obligatoire, il te faut tester si la valeur est <>"" et non numérique pour décréter une erreur.

Cordialement.

Bonjour Globularia,

La solution

  If TB_Poids.Value <> "" And Not IsNumeric(TB_Poids) Then
    nbErreur = nbErreur + 1
    msgErreur = msgErreur & "Le poids doit être au format nombre" & vbCrLf
  End If

A+

Bonjour, Re, Bruno !

Un autre conseil que je ferais volontiers serait de répartir le travail :

- Vérifier la validité de la saisie au moment de la saisie, en utilisant une procédure AfterUpdate ou BeforeUpdate ou Change ... du contrôle selon le type de vérification à faire, qui peut inclure des corrections automatiques. Ainsi si une saisie a été réalisée, tu garantis qu'elle est valide.

- Dans la procédure de validation, tu n'as alors plus qu'à vérifier que tous les champs obligatoires ont été saisis.

Cordialement.

Rechercher des sujets similaires à "vba isumeric"