[Excel-VBA]Fonction IF je pète un cable

Fonction IF je pète un cable [Excel-VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 26-04-2007 à 14:27:00    

Bonjour a tous, je vous explique j'ai un petit probleme avec la programmation dans excel, j'ai un userform avec 3 text box.  
Text box 1 = prix mini
Text box 2 = prix maxi
Text box 6 = prix calculé
 
En gros je veux comparer à chaque fois le prix calculé aux prix mini et maxi :  
Si le prix calculé est inférieur --> commentaire
Si le prix calculé est supérieur --> commentaire
Si le prix calculé est entre les 2 --> commentaire
 
donc tout logiquement j'ai fait ce code là :
If TextBox1.Value < TextBox6.Value Then
If TextBox6.Value < TextBox2.Value Then
Label16.Caption = "milieu"
Else: GoTo dessus
End If
End If
 
dessus:
If (TextBox6.Value > TextBox2.Value) Then
Label16.Caption = "dessus"
Else: GoTo dessous
End If
 
dessous:
If TextBox6.Value < TextBox1.Value Then
Label16.Caption = "dessous"
End If
 
Le probleme c'est que rien ne fonctionne, quand la valeur est entre les deux, le commentaire est "au dessus", quand il est au dessus, le commentaire me dit "au dessous" et jamais je n'ai le commentaire "milieu". Quelqu'un peut-il m'expliquer ou je me suis trompé ?

Reply

Marsh Posté le 26-04-2007 à 14:27:00   

Reply

Marsh Posté le 26-04-2007 à 14:39:02    

Bonjour,
En conservant ta façon d'écrire, il est nécessaire, avant dessus: et dessous: de "sauter ou sortir" en effet après les deux premiers end if on enchaine sur l'étiquette dessus: etc...
Cordialement

Reply

Marsh Posté le 26-04-2007 à 14:46:20    

seniorpapou a écrit :

Bonjour,
En conservant ta façon d'écrire, il est nécessaire, avant dessus: et dessous: de "sauter ou sortir" en effet après les deux premiers end if on enchaine sur l'étiquette dessus: etc...
Cordialement


 
HELLO merci pour ta reponse, de ce que j'ai compris, j'ai écrit ca
 
milieu:
If TextBox6.Value > TextBox1.Value Then
If TextBox6.Value < TextBox2.Value Then
Label16.Caption = "milieu"
GoTo suite
Else: GoTo dessus
End If
End If
 
dessus:
If (TextBox6.Value > TextBox2.Value) Then
Label16.Caption = "dessus"
GoTo suite
Else: GoTo dessous
End If
 
dessous:
If TextBox6.Value < TextBox1.Value Then
Label16.Caption = "dessous"
Else: GoTo suite
End If
 
suite:
end sub
mais ca ne fonctionne toujours pas lorsque la valeur est au milieu

Reply

Marsh Posté le 26-04-2007 à 15:06:53    

Je ne sais pas pourquoi ton code ne fonctionne pas...
   
En revanche tu peu xsimplifier ton code ainsi :
 
If TextBox1.Value < TextBox6.Value Then
  If TextBox6.Value < TextBox2.Value Then
    Label16.Caption = "milieu"
  Else
    Label16.Caption = "dessus"
  End If
else
  Label16.Caption = "dessous"
End If  
 
Peut-être que ton erreur va disparaitre

Reply

Marsh Posté le 26-04-2007 à 15:06:57    

Re,
tes textbox contiennent du texte il faut les convertir si tes mini maxi etc.. sont en numérique
Cordialement

Reply

Marsh Posté le 26-04-2007 à 15:25:41    

Tu peux mettre par exemple:
Dim min As Integer
Dim max As Integer
Dim calc As Integer
min = CInt(TextBox1.Value)
max = CInt(TextBox2.Value)
calc = CInt(TextBox6.Value)
    If calc < min Then
        Label16.Caption = "dessous"
    Else
        If calc > max Then
            Label16.Caption = "dessus"
        Else
            Label16.Caption = "milieu"
        End If
    End If
 
 
si = min     ou = max sont considérés comme "milieu"
 
pour les conversions tu tapes conversion dans le help VB et regardes fonctions de conversion
 
Cordialement

Reply

Marsh Posté le 26-04-2007 à 15:39:30    

seniorpapou a écrit :

Re,
tes textbox contiennent du texte il faut les convertir si tes mini maxi etc.. sont en numérique
Cordialement


 
comment on fait ca ? dans les propriétés des textbox on peut pas choisir le format...

Reply

Marsh Posté le 26-04-2007 à 15:52:00    

seniorpapou a écrit :

Tu peux mettre par exemple:
Dim min As Integer
Dim max As Integer
Dim calc As Integer
min = CInt(TextBox1.Value)
max = CInt(TextBox2.Value)
calc = CInt(TextBox6.Value)
    If calc < min Then
        Label16.Caption = "dessous"
    Else
        If calc > max Then
            Label16.Caption = "dessus"
        Else
            Label16.Caption = "milieu"
        End If
    End If
 
 
si = min     ou = max sont considérés comme "milieu"
 
pour les conversions tu tapes conversion dans le help VB et regardes fonctions de conversion
 
Cordialement


 
yes, ca fonctionne, merci beaucoup pour ton aide. C'est pourtant quelque chose d'assez simple mais depuis hier j'essaie de faire afficher milieu quand il faut et je n'ai jamais réussi, merci encore
 

Reply

Marsh Posté le 26-04-2007 à 19:47:08    

http://perso.orange.fr/galopin01/images/slip.jpg

Reply

Marsh Posté le 26-04-2007 à 19:51:38    

Sorry... j'ai pas pu résister
http://perso.orange.fr/galopin01/images/mdr3.jpg
 
3 jours d'exclusion ?
http://perso.orange.fr/galopin01/images/jesors2.jpg
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed