Calcul automatisé d'une prime selon ancienneté

Bonjour,

J'ai besoin de votre aide, je souhaiterais automatisé une prime qui varie en fonction de l'ancienneté.

Ci-dessous la règle :

  • Moins de 2 ans d'ancienneté : pas de prime
  • De 0 à 5 ans : 1/10 * salaire mensuel * ancienneté (maximum 5 ans)
  • De 6 à 10 ans : 1/7 * salaire mensuel * ancienneté (maximum 10 ans)
  • De 11 à 20 ans : 1/5 * salaire mensuel * ancienneté (maximum 20 ans)
  • De 21 à 30 ans : 1/4 * salaire mensuel * ancienneté (maximum 30 ans)
  • Au-delà de 30 ans : 1/3 * salaire mensuel * ancienneté
Maximum à ne pas dépasser 1 an de salaire (plafond maximum)

Comment pourrais-je calculer automatiquement cette prime avec les éléments suivants :

Salaire mensuel : 2500

Salaire annuel : 30000

Ancienneté : 22 ans

Prime à calculer : (1/10 * 2500 * 5) + (1/7 * 2500 * 5) + (1/5 * 2500 * 10) + (1/4 * 2500 * 2) = 9286

J'ai essayé avec une fonction SI imbriquée mais je reste bloquer sur l'année et la plafond (1 an de salaire max).

D'avance, merci.

Cordialement,

Bonjour,

Ci-après un essai sur fichier.

Normalement c'bon tu me dit.

Cdlt,

703xl-prat.xlsx (10.95 Ko)
Send a écrit :

- Moins de 2 ans d'ancienneté : pas de prime

- De 0 à 5 ans : 1/10 * salaire mensuel * ancienneté (maximum 5 ans)

Si pas de prime pour les deux premières années, alors, 2ème tranche :

De 2 à 5 ans : 1/10 .......

Dans ce cas, je peux te proposer une formule.

bonjour

a tester

214xl-prat.xlsx (10.66 Ko)

cordialement

C2 :

=B2*SOMME(($B$4:$B$12-$B$3:$B$11)*(Ancienneté-$A$3:$A$11+ABS(Ancienneté-$A$3:$A$11)))/2

Formule matricielle.

bareme

Bonjour,

Merci pour ces réponses mais ce n'est pas exactement ce que je recherche, je me suis peut être mal exprimée car je ne retrouve pas le même résultat.

La prime est progressive, pour la tranche 2 ans à 5 ans, la prime est majorée de 1/10, pour la tranche de 6 à 10 ans, majoré de 1/7 ....

j'ai trouvé cette formule :

=SI(ET(D5>=2;D5<6);(1/10*D21*D5);SI(ET(D5>=6;D5<11);(1/7*D21*D5);SI(ET(D5>=11;D5<21);(1/5*D21*D5);SI(ET(D5>=21;D5<30);(1/4*D21*D5);SI(D5>=30;(1/3*D21*D5);0)))))

D5 = Ancienneté

D21 = salaire mensuel

Le problème est que l'ancienneté n'est pas correcte dans la formule :

Exemple : 1/10*D21*D5 ===> il faut que je trouve un moyen pour soit mettre 5 ans s'il a plus de 5 d'ancienneté ou mettre l'ancienneté exacte si moins de 5 ans d'ancienneté.

Comment puis je faire ?

Merci.

Bonjour,

Une proposition à étudier, avec une fonction de feuille personnalisée (fonction VBA).

ALT F11 pour ouvrir l'éditeur VBE ; Voir module 'modFunctions'.

Cdlt.

Merci cette solution fonctionne, mais Est-ce possible d'avoir une formule dans une cellule ?

Il ne faut afficher que le salaire, l'ancienneté et la prime.

D'avance, merci.

RE,

C'est une fonction personnalisée qui comporte 2 arguments (s_m, le salaire mensuel et anc, l'ancienneté).

Elle s'utilise comme une fonction de feuille, telle que Somme() dans Excel.

C'est donc un formule.

Cdlt.

Très bien, merci beaucoup.

Je viens d'essayer mais je n'y arrive, je connais pas du l'éditeur VBE.

Pourriez-vous me guider svp ?

Ou je suis preneuse d'une formule excel ?

Merci encore.

Si la prime est comptée dès l'embauche :

primes

Ou, avec une formule qui ne nécessite pas une validation matricielle :

prime

Bonjour,

Enregistre le fichier texte ci dessous.

73modfunctions.txt (725.00 Octets)

Tu le renommes avec l'extension .bas (au lieu de .txt)

Tu ouvres ton vrai fichier Excel et lui seul (pour simplifier les choses).

Tu fais ALT F11. L'éditeur VBE va s'ouvrir.

Dans la fenêtre de gauche, fais un clic-droit sur 'ThisWorkbook' (de ton classeur), puis 'Importer un fichier...'

Tu sélectionnes 'modFunctions.bas' et tu valides.

Tu enregistres ton fichier.

La fonction est alors opérationnelle dans toutes les feuilles du classeur.

Cdlt.

Bonjour,

Je n'arrive pas à refaire ce qui a été fait sur un autre classeur. Vous serait-il possible de me guider svp ? Car je ne connais pas le VBE.

Ou me donner une formule excel plus simple ?

D'avance, merci.


Bonjour,

Je n'avais pas vu votre reponse. je vais réessayer, merci beaucoup.

Bonne journée.

Re-bonjour,

J'y suis arrivé, cependant je pense qu'il y a une petite correction à apporter.

Exemple :

Pour un salarié qui a 12.5 ans d'ancienneté, prime attendue : 4285.71.

Avec votre formule, je trouve 4035.71, je viens de voir que la 1/2 année n'avait pas été pris en compte, uniquement 12 ans ont été pris en compte dans le calcul.

Est-il possible d'apporter la correction dans la formule ? Comment puis je faire ?

D'avance, merci.

Bonne journée.

Bonjour,

Dans la procédure ci-dessous, modifie la partie surlignée en vert (anc as Double ald Byte).

Fais des tests afin de t'assurer sue les résultats sont bien ceux attendus...

A te relire.

Cdlt.

Public Function Prime(s_m As Double, anc As Double) As Double
Dim s_a As Double, x As Double
    s_a = s_m * 12
    Select Case anc
        Case 0
            x = 0
        Case 2 To 5
            x = anc * s_m * 0.1
        Case 6 To 10
            x = s_m * 0.5 + (Application.Min(anc, 10) - 5) * s_m / 7
        Case 11 To 20
            x = s_m * 8.5 / 7 + (Application.Min(anc, 20) - 10) * s_m / 5
        Case 21 To 30
            x = s_m * 22.5 / 7 + (Application.Min(anc, 30) - 20) * s_m / 4
        Case Else
            x = s_m * 40 / 7 + (anc - 30) * s_m / 3
            x = Application.Min(s_a, x)
    End Select
    Prime = x
End Function

Bonjour,

Merci pour votre réactivité.

Je ne dois pas être très douée car je n'y arrive pas, j'ai modifié comme demandé.

Dans la cellule, le résultat est #NOM? donc j'imagine qu'il y a un souci sur ce que j'ai fait.

A quoi cela pourrait être du ?

Merci encore !

Bonjour,

Es-tu certain que la fonction personnalisée est disponible dans ton classeur ?

Après avoir copié la procédure dans ton classeur, as-tu enregistré ton classeur xlsm (avec macros) ou xlsx ?

Il faut impérativement l'enregistrer au format xlsm.

Cdlt.

En pièce jointe mon fichier, j'ai bien enregistré en prenant compte les macros. Mais je ne comprends pas, peut-être la formule que j'ai mal copié.

Merci beaucoup.

81test.xlsm (33.67 Ko)
Rechercher des sujets similaires à "calcul automatise prime anciennete"