Macro - VBA

Oceane_vi -  
 Oceane_vi -
Bonjour,

Voici ma macro que je suis en train de réaliser :



Sub calcul()
Function CalculImpot(revenus As Double) As Double

'Déclaration

Dim Seuil1, Seuil2, Seuil3, Seuil4, Taux1, Taux2, Taux3, Taux4, Taux5 As Double
Dim impots As Double
Dim revenus As Double

Seuil1 = Range("Seuil1").Value
Seuil2 = Range("Seuil2").Value
Seuil3 = Range("Seuil3").Value
Seuil4 = Range("Seuil4").Value
Taux1 = Range("Taux1").Value
Taux2 = Range("Taux2").Value
Taux3 = Range("Taux3").Value
Taux4 = Range("Taux4").Value
Taux5 = Range("Taux5").Value
revenues = Range("revenus").Value


'Début de mon programme
impots = Range("B5").Value
For i = 1 To impots

If revenus < Seuil1 Then
impots = revenus * Taux1
Else


    If revenues < Seuil2 Then
    impots = (Seuil1 * Taux1) + ((revenus - Seuil1) * Taux2)
        Else
        
        
        If revenues < Seuil3 Then
        impots = (Seuil1 * Taux1) + ((Seuil2 - Seuil1) * Taux2) + ((revenues - Seuil2) * Taux3)
        Else
        
            If revenues < Seuil4 Then
            impots = (Seuil1 * Taux1) + ((Seuil2 - Seuil1) * Taux2) + ((Seuil3 - Seuil2) * Taux3) + ((revenues - Seuil3) * Taux4)
            Else
            
            impots = (Seuil1 * Taux1) + ((Seuil2 - Seuil1) * Taux2) + ((Seuil3 - Seuil2) * Taux3) + ((Seuil4 - Seuil3) * Taux4) + ((revenues - Seuil4) * Taux5)
          
                                      
            End If
        End If
    End If
End If
Next

CalculImpot = impots
End Function

End Sub




Mais quand je souhaite l'éxécuter il me dit : Erreur de compilation : End Sub attendus ...
Je ne comprends pas trop, sachant que j'ai mis mon End Sub

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


A voir également:

2 réponses

Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonjour, tu as imbriqué une fonction dans une procédure.

Sub calcul()
Function CalculImpot(revenus As Double) As Double
....
End Function
End Sub

Il faut choisir !

A+
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Tout a fait normale

Sub calcul()
Function CalculImpot(revenus As Double) As Double

End Function

End Sub


Faut choisir Function ou Sub mais pas les deux
0
Oceane_vi
 
Alors comment je peux faire pour exécuter "Function" dans mon tableau Excel ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > Oceane_vi
 
Re,

Vous enlevez
Sub calcul() et End Sub
0
Oceane_vi
 
Merci,
mais après si ma feuille Excel je mets =CalculImpot(revenus) il me mets #VALEUR! ça peut venir d'où ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > Oceane_vi
 
Re,
=CalculImpot(revenus)
Normalemenr une fonction appelee d'une cellule avec parametre(s) doit avoir entre parentheses soit l'adresse d'une cellule, un nom de cellule ou autres

A l'origine votre fonction est un Sub donc il y a des modifs a faire. Ceci dit, comprends pas la boucle for next ,alors que revenues ne change pas

Vous pourriez mettre un fichier a dispo sans donnees sensibles.

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
Oceane_vi
 
Voici mon ficher : http://www.cjoint.com/c/FKtoCQaZDic

J'ai fais deux-trois modif. mais ça ne fonctionne toujours pas ...
0