VBA - Fonction If dans UserForm

Résolu
RussellD Messages postés 60 Statut Membre -  
RussellD Messages postés 60 Statut Membre -
Bonjour à tous,

j'ai un souci avec une fonction IF dans un userform. En fait j'ai écris une fonction If en VBA qui, si la valeur entrée dans une des cases du UserForm est supérieure à une valeur de ma feuille de calcul (Excel 2003), envoie un message d'erreur.

If TextBox1.Value > Range("I17").Value Then
MsgBox "La température est trop élevée", vbExclamation, "Erreur saisie"
TextBox1.Value = ""
Exit Sub
End If


Le souci c'est qu'une fois ce code entré, pour chaque valeur que je met dans TextBox1 le message d'erreur apparait, même si la valeur entrée est inférieure à la valeur en I17.
Je me demande donc s'il reconnait bien la commande Range("I17").Value ? Faut-il le formuler autrement, vu que l'on se trouve dans un UserForm et que l'on fait appel à une valeur de la feuille de calcul?

Merci d'avance pour vos réponses !

4 réponses

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

    Il faut peut être préfixé le Range en indiquant dans quelle feuille il se trouve : Worksheets(1).Range("I17").Value. Ensuite ou se trouve ce bout de code ? dans quelle procédure ?

    ;o)
    0
  2. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Je pense que c'est parceque textbox ne donne pas une valeur numérique, je propose le code suivant :

    
    If Not IsNumeric(TextBox1.Value) Then
        MsgBox "Saisir une valeur numérique", vbExclamation, "Erreur saisie"
        TextBox1.Value = ""
        Exit Sub
    ElseIf CDec(TextBox1.Value) > Range("I17").Value Then
        MsgBox "La température est trop élevée", vbExclamation, "Erreur saisie"
        TextBox1.Value = ""
        Exit Sub
    End If
    
    


    On teste si c'est numérique puis on compare en transformant en décimal.

    A+
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour russel, polux
    Textbox te renvoie du texte que tu compare à un nombre dans I17
    donc modifie comme ceci
    If val(TextBox1.Value) > Range("I17").Value Then
    0
  4. RussellD Messages postés 60 Statut Membre 7
     
    Bonjour à tous et merci de vos réponses.

    La proposition de michel marche parfaitement pour mon cas, merci beaucoup. Le problème était en effet que TextBox renvoie du texte, et non pas du numérique

    Merci à tous !

    Cordialement
    0