Bonjour,
J'aimerais créer une fonction de calcul de tranches que je présenterai ainsi :
=TRANCHE(Montant;Tranche1;Taux1;Tranche2;Taux2...)
et qui permettrait d'effectuer des calculs comme par exemple celui de l'impôt sur le revenu.
Pour déclarer un tableau dans ma fonction, j'ai honteusement pompé sur :
http://www.developpez.net/forums/d68...ble-parametre/
Et j'ai créé le code suivant :Dont le Debug.Print resultat doit ramener 500 car :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Sub PasserTableauEnParamètre() MT = Array(10000, 2000, 0.1, 5000, 0.05, 20000, 0.03) JeSuisEnManque (MT) End Sub Sub JeSuisEnManque(LeTableau) For i = 0 To UBound(LeTableau) If i = 0 Then ' 1er argument le montant de base base = LeTableau(i) Else If i Mod 2 = 1 Then ' cas du montant If base < LeTableau(i) Then composant = base - tr_moins Else composant = LeTableau(i) - tr_moins End If tr_moins = LeTableau(i) Else ' cas du taux resultat = resultat + composant * LeTableau(i) End If End If Next Debug.Print resultat End Sub
(2000-0)*10%+(5000-2000)*5%+(10000-5000)*3%, ça fait 500
Donc mon code fonctionne
1-Est-ce que l'un d'entre vous pourrait simpliifier ce code, car j'ai l'impression de tourner un peu en rond avec mes boucles et mes If.
2- Comment pourrais-je publier une fonction que l'utilisateur renseignerait ainsi :
=TRANCHE(10000; 2000; 0,1; 5000; 0,05; 20000; 0,03)
sans passer par deux sub et sans mettre mes arguments dans le code.
3-Est-il possible de déclarer Montant comme un Double et Tranche et Taux comme deux colonnes d'un tableau ? En solidarisant la colonne Tranche avec celle du TAUX (l'une entrainant forcément une saisie dans l'autre)
Merci beaucoup pour votre aide.
JPG
Partager