INDEX & EQUIV Avec Plages nommées
INDEX & EQUIV
📌 Exemple la formule d’ancienneté :
Cette formule permet de
déterminer le taux d’indemnité ou prime
en fonction du
nombre d’années d’ancienneté
saisi dans la cellule E4.
🔍 Détail étape par étape :
-
E4: contient le nombre d’années d’ancienneté du salarié. -
'Base de calcule'!$AJ$3:$AJ$8: plage contenant les années MINIMUM par palier. -
'Base de calcule'!$AK$3:$AK$8: plage contenant les années MAXIMUM par palier. -
'Base de calcule'!$AL$3:$AL$8: plage contenant le taux correspondant à chaque intervalle d’ancienneté.
🧠 Que fait la formule ?
-
Elle vérifie si l’ancienneté (
E4) est supérieure à 0. -
Ensuite, elle cherche le bon intervalle dans lequel se trouve
E4:
| Formule |
|---|
| =SIERREUR(SI(E4>0;INDEX('Base de calcule'!$AL$3:$AL$8;EQUIV(1;(E4>='Base de calcule'!$AJ$3:$AJ$8)*(E4<'Base de calcule'!$AK$3:$AK$8);0));"");"") |
Cette formule compare l’ancienneté à chaque plage (min ≤ E4 ≤ max), puis
retourne la position du bon palier.
Ensuite, elle utilise INDEX(...; ...) pour récupérer le taux correspondant
dans la colonne $AL$3:$AL$8.
Finalement, SIERREUR(...) est là pour éviter une erreur si l’ancienneté ne
correspond à aucun palier (dans ce cas, elle renvoie vide " ").
📌 Pourquoi la cellule E4 change et les autres restent figées ?
E4 est une cellule relative.
👉 Quand on tire la formule vers le bas, Excel la change automatiquement en
E5, E6, etc. pour s’adapter à chaque ligne du tableau.
'Base de calcule'!$AJ$3:$AJ$8, $AK$3:$AK$8 et $AL$3:$AL$8 sont des cellules
absolues, grâce au signe $.
👉 Cela signifie qu’elles ne changent jamais, même si on copie ou tire la
formule vers une autre cellule. C’est important car ces plages contiennent les
données de référence (les intervalles et les taux), qui restent toujours les
mêmes pour tous les salariés.
📌 Explication de la formule des indemnités non imposable IR & CNSS :
dans cette formule aussi je vais utiliser $ pour figer les plage mais après on va utiliser les Plages nommées c'est plus pratique
| Formule |
|---|
|
=SI(F4="";0; SI(ET(F4<>""; INDEX('Base de calcule'!$AE$2:$AE$11; EQUIV(F4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AG$2:$AG$11; EQUIV(F4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"; INDEX('Base de calcule'!$AB$2:$AB$11; EQUIV(F4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AD$2:$AD$11; EQUIV(F4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"); G4 ;0)) + SI(H4="";0; SI(ET(H4<>""; INDEX('Base de calcule'!$AE$2:$AE$11; EQUIV(H4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AG$2:$AG$11; EQUIV(H4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"; INDEX('Base de calcule'!$AB$2:$AB$11; EQUIV(H4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AD$2:$AD$11; EQUIV(H4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"); I4;0)) + SI(J4="";0; SI(ET(J4<>""; INDEX('Base de calcule'!$AE$2:$AE$11; EQUIV(J4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AG$2:$AG$11; EQUIV(J4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"; INDEX('Base de calcule'!$AB$2:$AB$11; EQUIV(J4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AD$2:$AD$11; EQUIV(J4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"); K4;0)) + SI(L4="";0; SI(ET(L4<>""; INDEX('Base de calcule'!$AE$2:$AE$11; EQUIV(L4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AG$2:$AG$11; EQUIV(L4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"; INDEX('Base de calcule'!$AB$2:$AB$11; EQUIV(L4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AD$2:$AD$11; EQUIV(L4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"); M4;0)) + SI(N4="";0; SI(ET(N4<>""; INDEX('Base de calcule'!$AE$2:$AE$11; EQUIV(N4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AG$2:$AG$11; EQUIV(N4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"; INDEX('Base de calcule'!$AB$2:$AB$11; EQUIV(N4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AD$2:$AD$11; EQUIV(N4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"); O4;0)) + SI(P4="";0; SI(ET(P4<>""; INDEX('Base de calcule'!$AE$2:$AE$11; EQUIV(P4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AG$2:$AG$11; EQUIV(P4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"; INDEX('Base de calcule'!$AB$2:$AB$11; EQUIV(P4; 'Base de calcule'!$AA$2:$AA$11; 0))="FAUX"; INDEX('Base de calcule'!$AD$2:$AD$11; EQUIV(P4; 'Base de calcule'!$AA$2:$AA$11; 0))="NULL"); Q4;0)) |
- Si la cellule F4 est vide → on met 0
- Sinon, on vérifie plusieurs conditions dans la feuille 'Base de calcule', en fonction du code de l’indemnité (F4).
- Si toutes les conditions sont vraies, on prend la valeur de G4 (le montant de l’indemnité).
- Sinon, on prend 0.
- qu’elle ne soit pas imposable
- pas soumise à abattement
- pas soumise à CNSS
- et pas soumise à une autre cotisation (ou champ vide)
📌 Explication des la formule Plages nommées
Plages nommées utilisées dans le fichier
Les plages nommées ci-dessous ont été créées à partir de la feuille
"Base de calcul", pour
faciliter les recherches par fonction
EQUIV et
INDEX dans les formules de
calcul des indemnités :
|
Nom de la plage |
Plage Excel | Contenu / Rôle |
|---|---|---|
nom_PRIME_Indemnité
|
'Base de calcule'!$AA$2:$AA$20
|
Liste des noms des primes/indemnités |
imposable_CNSS
|
'Base de calcule'!$AB$2:$AB$20
|
Indique si la prime est
soumise à la CNSS
(VRAI /
FAUX)
|
imposable_Taux
|
'Base de calcule'!$AC$2:$AC$20
|
Taux applicable CNSS si soumis |
imposable_CNSS_plafond
|
'Base de calcule'!$AD$2:$AD$20
|
Plafond de soumission CNSS le cas échéant |
imposable_IR
|
'Base de calcule'!$AE$2:$AE$20
|
Indique si la prime est
soumise à l’IR
(VRAI /
FAUX)
|
imposable_IR_Taux
|
'Base de calcule'!$AF$2:$AF$20
|
Taux applicable IR si imposable |
imposable_IR_plafond
|
'Base de calcule'!$AG$2:$AG$20
|
Plafond d’exonération IR si existant (ex : 20% du salaire brut) |
appliquer_abatement_IR
|
'Base de calcule'!$AH$2:$AH$20
|
Indique si un abattement pour frais professionnels doit être appliqué |
🔧 Comment ces plages ont été créées ?
-
Aller dans Formules > Gestionnaire de noms.
-
Cliquer sur Nouveau.
-
Donner un nom clair (ex :
imposable_IR). -
Dans Fait référence à :, sélectionner la plage voulue (ex :
'Base de calcule'!$AE$2:$AE$20). -
Répéter l’opération pour chaque plage.
✅ Avantage
L’utilisation des plages nommées permet d’avoir :
-
des formules plus lisibles et compréhensibles
-
une meilleure organisation des données
-
une facilité de mise à jour des paramètres en un seul endroit
📌 Explication de la formule des Indemnité imposable soumis à l'abattement de FRAIS PROFESSIONEL :
| Formule |
|---|
|
=SI(F4="";0;
SI(ET(F4<>"";
INDEX(imposable_IR; EQUIV(F4;
nom_PRIME_Indemnité;
0))="FAUX"; INDEX(imposable_IR_plafond; EQUIV(F4;
nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(F4<>"";
INDEX(imposable_IR; EQUIV(F4;
nom_PRIME_Indemnité;
0))="VRAI"; INDEX(appliquer_abatement_IR; EQUIV(F4;
nom_PRIME_Indemnité;
0))="VRAI";
INDEX(imposable_IR_plafond; EQUIV(F4;
nom_PRIME_Indemnité;
0))="NULL"); G4;
SI(ET(F4<>""; INDEX(imposable_IR; EQUIV(F4;
nom_PRIME_Indemnité;
0))="VRAI"; INDEX(appliquer_abatement_IR; EQUIV(F4;
nom_PRIME_Indemnité;
0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(F4;
nom_PRIME_Indemnité;
0))="NULL"); 0;
SI(ET(F4<>""; INDEX(imposable_IR; EQUIV(F4;
nom_PRIME_Indemnité;
0))="FAUX"; INDEX(imposable_IR_plafond; EQUIV(F4;
nom_PRIME_Indemnité;
0))>0;
INDEX(appliquer_abatement_IR; EQUIV(F4;
nom_PRIME_Indemnité;
0))="VRAI";G4>$D4*INDEX(imposable_IR_plafond; EQUIV(F4; nom_PRIME_Indemnité;
0)));
G4-$D4*INDEX(imposable_IR_plafond; EQUIV(F4; nom_PRIME_Indemnité;
0));
0))))) +
SI(H4="";0;
SI(ET(H4<>""; INDEX(imposable_IR; EQUIV(H4;
nom_PRIME_Indemnité; 0))="FAUX"; INDEX(imposable_IR_plafond;
EQUIV(H4; nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(H4<>""; INDEX(imposable_IR; EQUIV(H4;
nom_PRIME_Indemnité; 0))="VRAI"; INDEX(appliquer_abatement_IR;
EQUIV(H4; nom_PRIME_Indemnité; 0))="VRAI";
INDEX(imposable_IR_plafond; EQUIV(H4;
nom_PRIME_Indemnité; 0))="NULL"); I4;
SI(ET(H4<>""; INDEX(imposable_IR;
EQUIV(H4; nom_PRIME_Indemnité; 0))="VRAI";
INDEX(appliquer_abatement_IR; EQUIV(H4; nom_PRIME_Indemnité;
0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(H4;
nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(H4<>""; INDEX(imposable_IR;
EQUIV(H4; nom_PRIME_Indemnité; 0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(H4; nom_PRIME_Indemnité; 0))>0;
INDEX(appliquer_abatement_IR; EQUIV(H4; nom_PRIME_Indemnité;
0))="VRAI";I4>$D4*INDEX(imposable_IR_plafond; EQUIV(H4;
nom_PRIME_Indemnité; 0)));
I4-$D4*INDEX(imposable_IR_plafond;
EQUIV(H4; nom_PRIME_Indemnité; 0));
0)))))
+
SI(J4="";0;
SI(ET(J4<>""; INDEX(imposable_IR; EQUIV(J4;
nom_PRIME_Indemnité; 0))="FAUX"; INDEX(imposable_IR_plafond;
EQUIV(J4; nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(J4<>""; INDEX(imposable_IR; EQUIV(J4;
nom_PRIME_Indemnité; 0))="VRAI"; INDEX(appliquer_abatement_IR;
EQUIV(J4; nom_PRIME_Indemnité; 0))="VRAI";
INDEX(imposable_IR_plafond; EQUIV(J4; nom_PRIME_Indemnité;
0))="NULL"); K4;
SI(ET(J4<>""; INDEX(imposable_IR; EQUIV(J4;
nom_PRIME_Indemnité; 0))="VRAI"; INDEX(appliquer_abatement_IR;
EQUIV(J4; nom_PRIME_Indemnité; 0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(J4;
nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(J4<>""; INDEX(imposable_IR;
EQUIV(J4; nom_PRIME_Indemnité; 0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(J4; nom_PRIME_Indemnité; 0))>0;
INDEX(appliquer_abatement_IR; EQUIV(J4; nom_PRIME_Indemnité;
0))="VRAI"; K4>$D4*INDEX(imposable_IR_plafond; EQUIV(J4;
nom_PRIME_Indemnité; 0)));
K4-$D4*INDEX(imposable_IR_plafond;
EQUIV(J4; nom_PRIME_Indemnité; 0));
0)))) +
SI(L4="";0;
SI(ET(L4<>""; INDEX(imposable_IR; EQUIV(L4;
nom_PRIME_Indemnité; 0))="FAUX"; INDEX(imposable_IR_plafond;
EQUIV(L4; nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(L4<>""; INDEX(imposable_IR; EQUIV(L4;
nom_PRIME_Indemnité; 0))="VRAI"; INDEX(appliquer_abatement_IR;
EQUIV(L4; nom_PRIME_Indemnité; 0))="VRAI";
INDEX(imposable_IR_plafond; EQUIV(L4;
nom_PRIME_Indemnité; 0))="NULL"); M4;
SI(ET(L4<>""; INDEX(imposable_IR;
EQUIV(L4; nom_PRIME_Indemnité; 0))="VRAI";
INDEX(appliquer_abatement_IR; EQUIV(L4; nom_PRIME_Indemnité;
0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(L4;
nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(L4<>""; INDEX(imposable_IR;
EQUIV(L4; nom_PRIME_Indemnité; 0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(L4; nom_PRIME_Indemnité; 0))>0;
INDEX(appliquer_abatement_IR; EQUIV(L4; nom_PRIME_Indemnité;
0))="VRAI"; M4>$D4*INDEX(imposable_IR_plafond; EQUIV(L4;
nom_PRIME_Indemnité; 0)));
M4-$D4*INDEX(imposable_IR_plafond;
EQUIV(L4; nom_PRIME_Indemnité; 0));
0))))) +
SI(N4="";0;
SI(ET(N4<>""; INDEX(imposable_IR; EQUIV(N4;
nom_PRIME_Indemnité; 0))="FAUX"; INDEX(imposable_IR_plafond;
EQUIV(N4; nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(N4<>""; INDEX(imposable_IR; EQUIV(N4;
nom_PRIME_Indemnité; 0))="VRAI"; INDEX(appliquer_abatement_IR;
EQUIV(N4; nom_PRIME_Indemnité; 0))="VRAI";
INDEX(imposable_IR_plafond; EQUIV(N4;
nom_PRIME_Indemnité; 0))="NULL"); O4;
SI(ET(N4<>""; INDEX(imposable_IR; EQUIV(N4;
nom_PRIME_Indemnité; 0))="VRAI"; INDEX(appliquer_abatement_IR;
EQUIV(N4; nom_PRIME_Indemnité; 0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(N4;
nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(N4<>""; INDEX(imposable_IR;
EQUIV(N4; nom_PRIME_Indemnité; 0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(N4; nom_PRIME_Indemnité; 0))>0;
INDEX(appliquer_abatement_IR; EQUIV(N4; nom_PRIME_Indemnité;
0))="VRAI"; O4>$D4*INDEX(imposable_IR_plafond; EQUIV(N4;
nom_PRIME_Indemnité; 0)));
O4-$D4*INDEX(imposable_IR_plafond;
EQUIV(N4; nom_PRIME_Indemnité; 0));
0))))) +
SI(P4="";0;
SI(ET(P4<>""; INDEX(imposable_IR; EQUIV(P4;
nom_PRIME_Indemnité; 0))="FAUX"; INDEX(imposable_IR_plafond;
EQUIV(P4; nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(P4<>""; INDEX(imposable_IR; EQUIV(P4;
nom_PRIME_Indemnité; 0))="VRAI"; INDEX(appliquer_abatement_IR;
EQUIV(P4; nom_PRIME_Indemnité; 0))="VRAI";
INDEX(imposable_IR_plafond; EQUIV(P4; nom_PRIME_Indemnité;
0))="NULL"); Q4;
SI(ET(P4<>""; INDEX(imposable_IR; EQUIV(P4;
nom_PRIME_Indemnité; 0))="VRAI"; INDEX(appliquer_abatement_IR;
EQUIV(P4; nom_PRIME_Indemnité; 0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(P4;
nom_PRIME_Indemnité; 0))="NULL"); 0;
SI(ET(P4<>""; INDEX(imposable_IR;
EQUIV(P4; nom_PRIME_Indemnité; 0))="FAUX";
INDEX(imposable_IR_plafond; EQUIV(P4; nom_PRIME_Indemnité; 0))>0;
INDEX(appliquer_abatement_IR; EQUIV(P4; nom_PRIME_Indemnité;
0))="VRAI"; Q4>$D4*INDEX(imposable_IR_plafond; EQUIV(P4;
nom_PRIME_Indemnité; 0)));
Q4-$D4*INDEX(imposable_IR_plafond;
EQUIV(P4; nom_PRIME_Indemnité; 0));
0))))))
|


Commentaires
Enregistrer un commentaire