Probléme If > <

Résolu
Boubilion Messages postés 2 Date d'inscription dimanche 18 avril 2010 Statut Membre Dernière intervention 14 juin 2010 - 14 juin 2010 à 15:53
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 14 juin 2010 à 18:31
Dans le but d'un calcul de rentabilité pour un pteti programme de gestion que j'ai fait , ma conclusion ce finit comme tel :


Private Sub Conclusion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SR.Text = Val(Form4.CF.Text) / (CDbl(Form4.TxMCV.Text) * 100)

Dim Pmt As String
Pmt = 12 * (CDbl(SR.Text) / Val(Form3.Nbrbv.Text))

If 0 < CDbl(Pmt) < 1 Then
PM.Text = "le seuil de rentabilité sera atteind courant Janvier."
ElseIf 1 < CDbl(Pmt) < 2 Then
PM.Text = "le seuil de rentabilité sera atteind courant Février."
ElseIf 2 < CDbl(Pmt) < 3 Then
PM.Text = "le seuil de rentabilité sera atteind courant Mars."
ElseIf 3 < CDbl(Pmt) < 4 Then
PM.Text = "le seuil de rentabilité sera atteind courant Avril."
ElseIf 4 < CDbl(Pmt) < 5 Then
PM.Text = "le seuil de rentabilité sera atteind courant Mai."
ElseIf 5 < CDbl(Pmt) < 6 Then
PM.Text = "le seuil de rentabilité sera atteind courant Juin."
ElseIf 6 < CDbl(Pmt) < 7 Then
PM.Text = "le seuil de rentabilité sera atteind courant Juillet."
ElseIf 7 < CDbl(Pmt) < 8 Then
PM.Text = "le seuil de rentabilité sera atteind courant Aout."
ElseIf 8 < CDbl(Pmt) < 9 Then
PM.Text = "le seuil de rentabilité sera atteind courant Septembre."
ElseIf 9 < CDbl(Pmt) < 10 Then
PM.Text = "le seuil de rentabilité sera atteind courant Octobre."
ElseIf 10 < CDbl(Pmt) < 11 Then
PM.Text = "le seuil de rentabilité sera atteind courant Novembre."
ElseIf 11 < CDbl(Pmt) < 12 Then
PM.Text = "le seuil de rentabilité sera atteind courant Decembre."
ElseIf CDbl(Pmt) > 12 Then
PM.Text = "le seuil de rentabilité ne sera pas atteind cette année."
End If

End Sub

Toutefois le PM afficher par mon programme est tout le temps celui de janvier , malgré que le calcul Pmt soit bon .

Comment puis-je faire ? Merci

5 réponses

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
14 juin 2010 à 18:31
Ah, tant mieux. Pense à cocher "réponse accepté"... C'est plus joli avec un cadre vert, et attire l'attention pour les futurs chercheur débutant...

Amicalement,
Us.
3
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
14 juin 2010 à 17:44
Bonjour,

Plusieurs remarques :
- Ne serait-il pas mieux d'utiliser CDBl au lieu de VAL ... Je pense que oui, vu comment VAL fonctionne...
- Au calcul de pmt, pourquoi ne pas le convertir tout de suite en Double en utilisant CDBl... cela évitera de le répété sans cesse dans les tests.
->>> Ensuite un test avec deux valeurs ne se fait comme tu l'as écrit, mais ainsi :
If 0 < Pmt AND Pmt < 1 Then ...
- Ici comme tu utilises qu'une seule variable "pmt", utiliser SELECT CASE serait beaucoup plus simple et claire,
- Que se passe-t-il si pmt est égale à une valeur entière, par exemple 2... Aucun test ne sera vérifié. Donc mettre qlq chose comme :
If 0 <<gras> Pmt AND Pmt < </gras> 1 Then
enfin, à voir selon ta problèmatique. Et avec SELECT CASE, cela serait encore plus simple...

Amicalement,
Us.

PS : ">>>" c'est la raison essentielle à ton problème.
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
14 juin 2010 à 17:53
Sans pouvoir tester, voici ce que cela donne :

       SR.Text = CDbl(Form4.CF.Text) / (CDbl(Form4.TxMCV.Text) * 100)

        Dim Pmt As Double
        Pmt = 12 * (CDbl(SR.Text) / CDbl(Form3.Nbrbv.Text))

        With PM
            Select Case Pmt

                Case 0 To 1
                    .Text = "le seuil de rentabilité sera atteind courant Janvier."
                Case 1 To 2
                    .Text = "le seuil de rentabilité sera atteind courant Février."
                Case 2 To 3
                    .Text = "le seuil de rentabilité sera atteind courant Mars."
                Case 3 To 4
                    .Text = "le seuil de rentabilité sera atteind courant Avril."
                Case 4 To 5
                    .Text = "le seuil de rentabilité sera atteind courant Mai."
                Case 5 To 6
                    .Text = "le seuil de rentabilité sera atteind courant Juin."
                Case 6 To 7
                    .Text = "le seuil de rentabilité sera atteind courant Juillet."
                Case 7 To 8
                    .Text = "le seuil de rentabilité sera atteind courant Aout."
                Case 8 To 9
                    .Text = "le seuil de rentabilité sera atteind courant Septembre."
                Case 9 To 10
                    .Text = "le seuil de rentabilité sera atteind courant Octobre."
                Case 10 To 11
                    .Text = "le seuil de rentabilité sera atteind courant Novembre."
                Case 11 To 10
                    .Text = "le seuil de rentabilité sera atteind courant Decembre."
                Case Else
                    .Text = "le seuil de rentabilité ne sera pas atteind cette année."

            End Select
        End With


Amicalement,
Us.
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
14 juin 2010 à 17:56
On peut d'ailleurs encore simplifié le baratin "le seuil de rentabilité sera atteint courant " en le mettant dans une variable...

Bon prog,
Amicalement,
Us.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Boubilion Messages postés 2 Date d'inscription dimanche 18 avril 2010 Statut Membre Dernière intervention 14 juin 2010
14 juin 2010 à 18:22
Merci , je suis débutant.

Et ça marche super Thank
0
Rejoignez-nous