VBA - Fonction If dans UserForm

Résolu/Fermé
RussellD Messages postés 57 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 6 septembre 2010 - 27 avril 2010 à 17:31
RussellD Messages postés 57 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 6 septembre 2010 - 28 avril 2010 à 09:49
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

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 avril 2010 à 18:15
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
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
27 avril 2010 à 18:28
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
27 avril 2010 à 18:36
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
RussellD Messages postés 57 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 6 septembre 2010 7
28 avril 2010 à 09:49
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