Souci avec la condition if

michel29

XLDnaute Nouveau
Bonjour

J'ai un gros problème avec un userform (avec la condition if)
j'ai un textbox ou je saisie un prix HT et normalement ca me calcule
automatiquement la marge et me donne le TTC
EX: je rentre 1.50 € dans la textbox et ca m'indique bien la marge 2.80€ et le
prix TTC 4,20 €

Ca fonctionne correctement jusquà 3,00€ car quand je rentre 3.01 €uros
ca m'indique une marge erronée .

Trop de conditions IF ?

Comme c'est mon premier petit log et étant débutant je pense que je suis
passé à coté de quelque chose

Amicalement
 

Pièces jointes

  • Classeur1.xls
    41 KB · Affichages: 52
  • Classeur1.xls
    41 KB · Affichages: 58
  • Classeur1.xls
    41 KB · Affichages: 55

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Souci avec la condition if

Bonjour

En fait tu te trompes de raisonnement

tu as bien compris que tes textbox te renvoient du texte et non des nombres

il faut donc que tu convertisses d'abord tes textbox en nombre avant de faire tes tests car sinon tu pars sur une valeur texte et cela ne veut rien dire

et cela deviendra

If cdbl(prix) >= 0 And cdbl(prix) <= 0.30 Then marge.Caption = 4,50

Attention il faudra peut-être remplacer cdbl par val si tu as une erreur et que tu fasses cette manipulation pour tous tes boutons et changement de textbox
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : Souci avec la condition if

Bonsoir,
remplace ton code par celui-ci :

Code:
Private Sub prix_Change()
On Error Resume Next

If CDbl(prix) >= 0# And CDbl(prix) <= 0.3 Then marge.Caption = 4.5
If CDbl(prix) >= 0.31 And CDbl(prix) <= 0.8 Then marge.Caption = 3.25
If CDbl(prix) >= 0.81 And CDbl(prix) <= 1.5 Then marge.Caption = 2.8
If CDbl(prix) >= 1.51 And CDbl(prix) <= 3# Then marge.Caption = 2.5
If CDbl(prix) >= 3.01 And CDbl(prix) <= 6# Then marge.Caption = 2.25
If CDbl(prix) >= 6.01 And CDbl(prix) <= 12# Then marge.Caption = 2#
If CDbl(prix) >= 12.01 And CDbl(prix) <= 23# Then marge.Caption = 1.9
If CDbl(prix) >= 23.01 And CDbl(prix) <= 38# Then marge.Caption = 1.75
If CDbl(prix) >= 38.01 And CDbl(prix) <= 61# Then marge.Caption = 1.6
If CDbl(prix) >= 61.01 And CDbl(prix) <= 99# Then marge.Caption = 1.55
If CDbl(prix) >= 99.01 And CDbl(prix) <= 152# Then marge.Caption = 1.5
If CDbl(prix) >= 152.01 Then marge.Caption = 1.45

pm.Caption = CDbl(prix) * marge.Caption

End Sub

Edit : oupss, bonsoir pascal
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : Souci avec la condition if

Bonsoir le fil

Select case est plus adapté pour ce type de traitement
Il faut faire attention à l'ordre au niveau de l'écriture, une fois la condition trouvée le système saute à end select.
Code:
Select Case CCur(prix.Text)' le prix est sous forme numérique sans utiliser la notation scientifique
        Case Is <= 0.3
            marge.Caption = "4,50"
        Case Is <= 0.8
            marge.Caption = "3,25"
         Case Is <= 1.5
            marge.Caption = "2,80"
         Case Is <= 3
            marge.Caption = "2,50"
         Case Is <= 6
            marge.Caption = "2,25"
           ................. 
End Select

A tester

JP
 
Dernière édition:
T

THE CAT 2007

Guest
Re : Souci avec la condition if

Bonsoir à tous,

je rebondis sur le select case

prévoir un case else pour les valeurs ésotériques ...
avec un msgbox("valeur non prévue)"
genre valeur négative ou alphabet ...

et décharger recharger le userform
unload nom du UF
nom du UF.SHOW
 

jp14

XLDnaute Barbatruc
Re : Souci avec la condition if

Bonjour

Bonsoir à tous,

je rebondis sur le select case

prévoir un case else pour les valeurs ésotériques ...
avec un msgbox("valeur non prévue)"
genre valeur négative ou alphabet ...

En reprenant l'idée
Au niveau du message signaler que la valeur saisie est incorrecte et sortir de la procédure
avec exit sub.
Et avant select case écrire pour vérifier si la valeur est bien numérique
If not isnumeric((prix.Text)) then
msgbox("Saisie incorrecte, vous devez écrire une valeur numérique)"
exit sub
end if

JP
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
313 344
Messages
2 097 337
Membres
106 916
dernier inscrit
Soltani mohamed