Macro - VBA

Fermé
Oceane_vi - Modifié par crapoulou le 19/11/2016 à 11:09
 Oceane_vi - 19 nov. 2016 à 19:46
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
19 nov. 2016 à 11:25
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
19 nov. 2016 à 11:25
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
Alors comment je peux faire pour exécuter "Function" dans mon tableau Excel ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > Oceane_vi
19 nov. 2016 à 11:40
Re,

Vous enlevez
Sub calcul() et End Sub
0
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > Oceane_vi
Modifié par f894009 le 19/11/2016 à 13:11
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
Voici mon ficher : http://www.cjoint.com/c/FKtoCQaZDic

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