Macro - VBA

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.


2 réponses

  1. 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
    1. 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
      1. Alors comment je peux faire pour exécuter "Function" dans mon tableau Excel ?
        0
      2. @Oceane_viRe,

        Vous enlevez
        Sub calcul() et End Sub
        0
      3. Merci,
        mais après si ma feuille Excel je mets =CalculImpot(revenus) il me mets #VALEUR! ça peut venir d'où ?
        0
      4. @Oceane_viRe,
        =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
      5. Voici mon ficher : http://www.cjoint.com/c/FKtoCQaZDic

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