vba calcul par tranche avec IF ne fonctionne pas

slaurent01

XLDnaute Junior
Bonjour le forum,

Bonjour à tous, j'ai un problème dans mon programme. J'ai un calcul qui doit se faire selon des tranches. j'ai donc saisi le code suivant :
Code:
Sub test()

Dim val As Currency
Dim val1 As String

Dim fourn1 As Currency
Dim fourn2 As Currency

val = ThisWorkbook.Worksheets("Feuil1").Range("A2").Value
val1 = ThisWorkbook.Worksheets("Feuil1").Range("b2").Value

If val > 3000 Then
fourn1 = val * 0.04
Else
    If val > 1 Or val < 150 Then
    fourn1 = 15
    Else
        If val > 150 Or val < 380 Then
        fourn1 = 45
        Else
            If val > 380 Or val < 760 Then
            fourn1 = 60
            Else
                If val > 760 Or val < 1500 Then
                fourn1 = 75
                Else
                    If val > 1500 Or val < 3000 Then
                    fourn1 = 90
                    End If
                End If
            End If
        End If
    End If
End If

 If val1 = "N" Then
fourn2 = 0
Else
fourn2 = (val * 0.01 * 8.5) + 8
End If

Range("c2").Value = fourn1
Range("d2").Value = fourn2
End Sub

Si la valeur est > 3000 le calcul se fait bien, sinon il s'arrête toujours à la première tranche. Je ne comprends pas pourquoi ca ne marche pas. J'appelle donc à l'aide et vous en remercie par avance.

Je joins le code de mon programme qui ne marche pas.

cordialement
Stéphane
 

Pièces jointes

  • Classeur1.xlsm
    15 KB · Affichages: 41
  • Classeur1.xlsm
    15 KB · Affichages: 46
  • Classeur1.xlsm
    15 KB · Affichages: 57

slaurent01

XLDnaute Junior
Re : vba calcul par tranche avec IF ne fonctionne pas

bonjour Pierrot93, dans mon programme "val" est à un autre nom, et ca ne marche pas non plus. Mais j' en prends bonne note et ne l'utiliserai plus dans les procédures.
Merci
Bonne journée
Stéphane
 

slaurent01

XLDnaute Junior
Resolu : vba calcul par tranche avec IF ne fonctionne pas

bonjour à tous,

J'ai enfin trouvé la solution. je n'indique une valeur minimum et maximum de la tranche, mais que la maximum.
Il y a certainement plus simple comme écriture, mais ca marche.

Code:
If val > 3000 Then
fourn1 = val * 0.04
Else
    If val <= 150 Then
    fourn1 = 15
    Else
        If val <= 380 Then
        fourn1 = 45
        Else
            If val <= 760 Then
            fourn1 = 60
            Else
                If val <= 1500 Then
                fourn1 = 75
                Else
                    If val <= 3000 Then
                    fourn1 = 90
                    End If
                End If
            End If
        End If
    End If

Merci bonne fin de journée.

Stéphane
 

Bebere

XLDnaute Barbatruc
Re : vba calcul par tranche avec IF ne fonctionne pas

bonjour
à tester
Code:
Public Sub x()
    If valeur > 3000 Then
        fourn1 = valeur * 0.04
    ElseIf valeur <= 150 Then
        fourn1 = 15
    ElseIf valeur <= 380 Then
        fourn1 = 45
    ElseIf valeur <= 760 Then
        fourn1 = 60
    ElseIf valeur <= 1500 Then
        fourn1 = 75
    ElseIf valeur <= 3000 Then
        fourn1 = 90
    End If
End If
End If
End If
End If

End Sub

Public Sub xx()

    Select Case valeur
    Case Is > 3000
        fourn1 = valeur * 0.04
    Case Is <= 150
        fourn1 = 15
    Case Is <= 380
        fourn1 = 45
    Case Is <= 760
        fourn1 = 60
    Case Is <= 1500
        fourn1 = 75
    Case Is <= 3000
        fourn1 = 90
    End Select

End Sub
 

slaurent01

XLDnaute Junior
Re : vba calcul par tranche avec IF ne fonctionne pas

bonsoir le forum,

bonsoir bebere, merci pour votre réponse. Je vais tester ces codes qui sont mieux construits que le mien
et reviendrait pour donner les conclusions.
Bonne soirée.

cordialement
stéphane
 

Statistiques des forums

Discussions
312 447
Messages
2 088 496
Membres
103 871
dernier inscrit
julienleburton