vba calcul par tranche avec IF ne fonctionne pas

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
177
Réponses
0
Affichages
566
Réponses
4
Affichages
548
Réponses
1
Affichages
520
Réponses
3
Affichages
508
Réponses
6
Affichages
604
Réponses
0
Affichages
459
Retour