VBA - Fonction If dans UserForm
Résolu
RussellD
Messages postés
60
Statut
Membre
-
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.
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 !
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
-
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) -
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+ -
Bonjour russel, polux
Textbox te renvoie du texte que tu compare à un nombre dans I17
donc modifie comme ceciIf val(TextBox1.Value) > Range("I17").Value Then -
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