Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème avec la boucle For I=15000 To 100000 en VBA

DJAMAL

XLDnaute Nouveau
Bonjour tout le monde;

merci de me donner un coup de main sur le sujet,voici les données en question:

Sub Function ()
------->
For salaire =15000 To 100000
IF salaire= 150000 then IRG =0
-------->
"salaire est argumenter de 10
"IRG est argumenter de 2
IF 15000 <salaire And salaire< 15000+10 then IRG = 2
...........>
End if
NEXT
End fuction

MERCI ENCORE
 
Dernière modification par un modérateur:

mutzik

XLDnaute Barbatruc
Re : Problème avec la boucle For I=15000 To 100000 en VBA

bonjour,

je suppose que tu veux mettre ce code dans une sub et non dans une fonction
Sub test()

IF salaire= 150000 then IRG =0

salaire = salaire + 10
irg = irg + 2

IF salaire > 15000 And salaire < 15010 then IRG = 2


End sub
 

Dranreb

XLDnaute Barbatruc
Re : Problème avec la boucle For I=15000 To 100000 en VBA

Bonjour.

Alors c'est plutôt une Function ?
VB:
Function IRG(ByVal Salaire As Double) As Double
Select Case Salaire
   Case Is > 15010: IRG = 0
   Case Is > 15000: IRG = 2
   Case Else:       IRG = 0
   End Select
End Function
 

DJAMAL

XLDnaute Nouveau
Re : Problème avec la boucle For I=15000 To 100000 en VBA

Pour une meilleure approche du Problème: comment adapter cette fonction dans access 2010
------------------------------------------------------------------------------------------------------------------ Merci encore:
Public Function irg(ByVal montant)

Dim impos As Double
impos = 0#
irg = 0#
montant = Int(montant)



If ((montant >= 10001) And (montant <= 30000)) Then impos = (montant - _
10000) * 0.2
If ((montant >= 30001) And (montant <= 120000)) Then impos = 4000 + _
(montant - 30000) * 0.3
If montant >= 120001 Then impos = 31000 + _
(montant - 120000) * 0.35

abat = (40 * impos / 100)
If abat < 1000 Then abat = 1000
If abat > 1500 Then abat = 1500
impos = impos - abat

impos = (impos * 10) + 0.0001
impos = impos / 10
impos = Int(impos)
irg = impos

End Function
 

Dranreb

XLDnaute Barbatruc
Re : Problème avec la boucle For I=15000 To 100000 en VBA

Bonjour.

Mais de quelle adaptation auriez vous besoin ?
Il est vrai qu'elle n'est pas vraiment parfaitement écrite…
Est il normal qu'elle renvoie une valeur négative jusqu'à 14999 ?
 

DJAMAL

XLDnaute Nouveau
Re : Problème avec la boucle For I=15000 To 100000 en VBA

Bonjour.

Mais de quelle adaptation auriez vous besoin ?
Il est vrai qu'elle n'est pas vraiment parfaitement écrite…
Est il normal qu'elle renvoie une valeur négative jusqu'à 14999 ?

Bonsoir
il est normal qu'elle renvoie une valeur négative jusqu'à 14999 car le salaire Min est 15000 pour cela la valeur
(valide si >=15000)
merci encore pour votre aide,
 

Dranreb

XLDnaute Barbatruc
Re : Problème avec la boucle For I=15000 To 100000 en VBA

Je ne sais pas moi, elle pourrait peut être aussi s'écrire comme ça :
VB:
Public Function IRG(ByVal Montant As Double) As Double
Dim N As Long, Impos As Double, MinTrch As Double, _
   MaxTrch As Double, Taux As Double, Abat As Double
Montant = Int(Montant)
For N = 1 To 4
   MinTrch = MaxTrch
   MaxTrch = Choose(N, 10000, 30000, 120000, 1E+99)
   Taux = Choose(N, 0, 0.2, 0.3, 0.35)
   If Montant < MaxTrch Then Exit For
   Impos = Impos + (MaxTrch - MinTrch) * Taux: Next N
Impos = Impos + (Montant - MinTrch) * Taux
Abat = 40 * Impos / 100
If Abat < 1000 Then Abat = 1000
If Abat > 1500 Then Abat = 1500
IRG = Int(Impos - Abat + 0.00001)
End Function
À tester
 

Discussions similaires

Réponses
7
Affichages
288
Réponses
4
Affichages
451
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…