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.


2 réponses

  1. Gyrus Messages postés 3360 Statut Membre 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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. Oceane_vi
       
      Alors comment je peux faire pour exécuter "Function" dans mon tableau Excel ?
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Oceane_vi
       
      Re,

      Vous enlevez
      Sub calcul() et End Sub
      0
    3. Oceane_vi
       
      Merci,
      mais après si ma feuille Excel je mets =CalculImpot(revenus) il me mets #VALEUR! ça peut venir d'où ?
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > 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
    5. Oceane_vi
       
      Voici mon ficher : http://www.cjoint.com/c/FKtoCQaZDic

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