Vous êtes sur la page 1sur 19

IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

EXCEL niveau 3 ?
Bon à savoir sur
Excel au moment de
partir en entreprise ?
Caisse à outils ?
Bref, ce complément de cours s’adresse à des étudiants dont la maîtrise sur Excel
est déjà quelque peu affirmée : travaux de base et tout ce qui concerne les filtres
automatiques, tableaux croisés et autres formules telle que =RECHERCHEV().

En particulier, l’usage des zones nommées paraît, pour le moins, recommandé.

Par expérience des rapports de stage, et grâce aux apports des collègues de la liste
de diffusion Eco-gestion, on trouvera ici un éventail assez large de procédures utiles
à la mise en place de tableaux de bord ou d’outils pour le contrôle de gestion.

Le dossier s’adosse sur deux classeurs EXCEL

TD formules avancees abouti.xls : version finalisée corrigée


TD formules avancees matrice.xls : version initiale

A priori, ce cours peut être utilisé en apprentissage individuel, à condition d’être dans
l’urgence professionnelle et/ou curieux de nature et/ou accro à la logique.

De fait, on évitera d’attendre des recettes car tout est fruit d’une analyse préalable
(disons c’est l’objectif visé).

On pardonnera quelques jeux de mots, pathétiques certes, mais dont l’origine serait
liée à une exposition trop prolongée au couple infernal écran/clavier.
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

1. THEME : ATTRIBUTION D’UNE PRIME AU PERSONNEL 1

2. TRAVAUX. PREALABLES : 3
2.1. Les volets 3

2.2. Nommer les colonnes individuelles du tableau principal 3

2.3. Actualiser la plage couverte par le tableau de données 4

2.4. Le contrôle et l’aide à la saisie des données 5


2.4.1. Contrôle de saisie 5
2.4.2. Zone de liste 5
2.4.3. Format mise en forme conditionnelle (sur le contenu de la cellule) 6
2.4.4. Format mise en forme conditionnelle (test sur une autre cellule) 6

2.5. Saisie de nouveaux enregistrements 8

2.6. Importations de données : 8


2.6.1. Provenance d’ACCESS 8
2.6.2. Provenance INTERNET ou progiciel de gestion 8

3. LES TRAITEMENTS 9
3.1. Traitements des chaînes de caractères 9
3.1.1. =DROITE() et =GAUCHE() pour extraire des données d’un code 9
3.1.2. =STXT() ou comment isoler des caractères dans un texte 9
3.1.3. =NBCAR() et CHERCHE() pour scinder du texte 9
3.1.4. =CONCATENER() et collage spécial pour regrouper du texte 10

3.2. =ANNEE() et AUJOURDHUI() pour calculer l’ancienneté 10

3.3. Autres formules utiles sur les dates 11

3.4. =NB.SI() ou le dénombrement conditionnel 11

3.5. =SOMME.SI() ou la somme conditionnelle 11

3.6. =RECHERCHEV() avec argument VRAI ou omis 12

3.7. =INDEX() ou les tableaux à double entrée 13

3.8. EQUIV() et =INDEX() pour repérer dans une plage et exploiter le rang renvoyé 14

3.9. =EQUIV() ,INDEX() et MIN() ou MAX() pour distinguer les extrèmes 16

3.10. Macro complémentaire pour écrire les chiffres en lettres 17


IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

1. Thème : attribution d’une prime au personnel


a) Les éléments constitutifs sont :

Prime ancienneté : prétexte à revoir =RECHERCHEV()

Prime familiale : liée à l’échelon et à un indice familial pour gérer


=INDEX()

Prime présence : pour « récompenser » les moins absents afin


d’utiliser =EQUIV() et =INDEX().

b) Afin d’illustrer =SOMME.SI() et =NB.SI() on renverra le total des jours


d’absence des salariés dont l’ancienneté atteint les 10 ans (il paraîtrait que
l’absentéisme y serait corrélé) et le nombre de personnes absentes plus de
14 jours.

c) Pour voir d’autres aspects d’INDEX() et NB.SI() on mettra en évidence le


salarié le plus assidu et le « moins présent », bien sûr en gérant d’éventuels
ex-aequo, ce qui sera l’occasion de revenir au =SI()

d) Le surligneur devenant indispensable, nous pratiquerons la mise en forme


conditionnelle pour mettre en évidence automatiquement nos « vainqueurs »
et ceux qui dépassent la barre des 14 jours d’absence.

e) La saisie de l’échelon et de l’indice familial seront prétexte à la mise en place


de contrôle des saisies (n’accepter pour valeur d’échelon qu’un entier de 1 à
5) et de zones de liste (proposer les valeurs 1, 2 et 3).

f) Pour finir, avec une pensée pour la secrétaire qui aura longtemps dû réécrire
les montants de nos rémunérations en toutes lettres (et qui y aura perdu un
temps fou jusqu’à ce que je trouve cette solution à … un an de sa retraite), on
se servira d’une macro complémentaire pour transformer les chiffres en
lettres.

g) Puisqu’on parle de lettres, nous verrons comment traiter les chaînes de


caractères et les dates.

Comme on pourra le constater sur la copie du tableau final en page suivante, les
statistiques figurent au-dessus des données. Dans la mesure ou la liste des
salariés est appelée, on l’espère, à s’allonger, ce sera une bonne habitude à
prendre :
☺ La place reste libre dessous de façon quasi infinie (63536 lignes).
☺ Nommer les plages est plus pratique
☺ L’usage des volets permet de garder toujours en vue les 8 premières lignes.

Page : 1
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

En haut la feuille principale. En bas les tables pour le calcul des trois sous-primes.

Page : 2
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

2. Travaux. préalables :
2.1. Les volets
Pour garder en vue les 8 premières lignes (et pas de colonne) :
se placer en cellule A9
FENETRE
FIGER VOLETS

2.2. Nommer les colonnes individuelles du tableau principal


Les colonnes du tableau étant appelées à s’allonger on pourrait opérer comme on va
le voir plus loin en 1-3. Ici, on peut se contenter de nommer toute la colonne
concernée à partir de la ligne 9 et jusqu’en ligne 65536
Par divers FIN et aller en K65536
MAJ + CLIC sur A8 pour sélectionner toutes les
informations du tableau des salariés y compris les titres.
Après sélection, passera par :
INSERTION
NOM
CREER
En une seule manipulation, on a nommé les zones suivantes :
Zone nommée Plage de cellules
Matricule =Liste!$A$9:$A$65536
Nom =Liste!$B$9:$B$65536
Prenom =Liste!$C$9:$C$65536
Echelon =Liste!$D$9:$D$65536
Indice_Familial =Liste!$E$9:$E$65536
NB_jours_Absence =Liste!$F$9:$F$65536
Ancienneté =Liste!$G$9:$G$65536
Prime_Ancienneté =Liste!$H$9:$H$65536
Prime_Familiale =Liste!$I$9:$I$65536
Prime_Présence =Liste!$J$9:$J$65536
Total_Prime =Liste!$K$9:$K$65536
Toutes les formules de calcul à venir seront facilitées …
Cas particulier des tableaux croisés : nous avons tous pesté contre les tableaux
croisés dont la mise à jour ne tient pas compte de l’allongement de la zone initiale.
Après chaque ajout de nouvelles lignes, nous devons redéfinir la zone concernée. Le
plus souvent, nous réservons, comme ci-dessus, un très grand nombre de lignes.
Une contribution récente d’un collègue, me permet désormais de redimensionner
automatiquement la zone nommée aussi bien en terme de nombre de lignes que de
colonnes. D’où le point suivant …

Page : 3
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

2.3. Actualiser la plage couverte par le tableau de données


L’idée de base est d’annoncer que le tableau, que nous nommerons TSALARIES,
commence en A9 ; il occupe à tout moment une plage correspondant au nombre de
lignes saisies et au nombre de colonnes occupées. La zone sera mise à jour en
temps réel et donc … les tableaux croisés intègreront tout ajout de ligne ou colonne.
INSERTION
NOM
DEFINIR
Taper le nom TSALARIES et saisir la formule ci-dessous :

Cliquer sur la Cliquer sur la Cliquer sur la


cellule A8 colonne A Ligne 8

EXPLICATION SOMMAIRE : la plage démarrera en A8 (coin supérieur du tableau)


sans décalage de ligne ou de colonne (d’où le double ; 0 ; 0) et s’étendra sur le
nombre de lignes et de colonnes que compte le tableau à tout instant.
ATTENTION : pour que cela fonctionne soit penser à ne rien mettre dans la
colonne A et sur la ligne 8 soit utiliser les noms dans la zone nommée dynamique.
Ci-dessous, une variante en utilisant la zone nommée MATRICULE dont on mesure
le nombre de lignes (avec + 1 pour compter le titre).

ALERTE : « Damned ! » dirait Etienne, le nom n’apparaît pas dans la liste déroulante
à gauche de la barre de formule. Pour contrôler la mise à jour de la zone nommée, il
« suffira » de revenir par INSERTION NOM DEFINIR, de choisir un nom et de
cliquer dans la case « Fait référence à » et là … la plage est mise en pointillés.
Ne pas se gêner pour ajouter des lignes de salariés ou de nouvelles colonnes et
constater que tout cela marche bien et VIVE les tableaux croisés à venir !!!!

Page : 4
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

2.4. Le contrôle et l’aide à la saisie des données


Deux procédures sont mises en œuvre ici : un contrôle sur la saisie de l’échelon en
colonne D et une zone de liste pour l’indice familial en Colonne E

2.4.1. Contrôle de saisie

Sélectionner la zone nommée Echelon puis


DONNEES
VALIDATION

Dans l’onglet ALERTE D’ERREUR définir


Dans l’onglet OPTIONS définir la règle
l’action à lancer en cas de fausse
applicable ici un nombre entier entre 1
manœuvre de l’utilisateur (ici Refus et
et 5 sera autorisé pour l’échelon
nom simple message

2.4.2. Zone de liste

Pour l’indice familial, on proposera donc les valeurs 1, 2 ou 3.


Soit préparer sur la même feuille (EXCEL refusera si on met la liste sur un
onglet différent)
Soit annoncer, c’est le cas ici, les valeurs proposées.

Comme plus haut, sélectionner la plage


entière de l’indice familial et DONNEES
VALIDATION
Dans la case AUTORISER choisir LISTE
puis au choix :
- désigner la source avec la souris
- taper, comme ici, les propositions en
séparant par ;

Page : 5
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

2.4.3. Format mise en forme conditionnelle (sur le contenu de la cellule)

C’est fou comme on aime la couleur de nos jours.


Bien entendu, de façon automatique, il suffit de vérifier, on souhaite sanctionner par
un rouge vif le « moins présent » (comme dans les émissions de télé-réalité restons
positifs !), par un vert lumineux le plus assidu (sans doute un candidat à une
promotion …), et par un jaune d’alerte ceux qui dépassent les 14 jours.
Comme d’habitude sélectionner toute la plage nommée « NB_jours_Absence » et
passer par :
FORMAT
MISE EN FORME CONDITIONNELLE
Ici on a posé trois conditions puis choisi un Format …

On notera qu’en cas d’ex æquo aux extrêmes, chacun est en couleur …
Ici, on a posé la condition sur la valeur de la cellule elle-même. Comment mettre en
place un format conditionnel sur la base du contenu d’une autre cellule.

2.4.4. Format mise en forme conditionnelle (test sur une autre cellule)

Au-delà de la coloration sur les valeurs extrêmes des nombres de jours d’absence,
on désire également mettre en évidence les personnes concernées :
Analyse :
« Si, pour la personne concernée, le nombre
de jours d’absence correspond au maximum
des jours d’absence alors format en rouge (en
vert pour l’inverse comme il se doit).
Illustration : les 5 cellules A27 :E27 sont en
rouge car en F27 nous rencontrons le
maximum de la série.
Astuce : nous allons pouvoir tout gérer en une
seule fois

Page : 6
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

Procédure :
Sélectionner les informations des salariés soit A9 : E48
FORMAT
MISE EN FORME CONDITIONNELLE

La condition porte non plus sur « la valeur


de la cellule est … » mais « La formule
est » puisque on teste sur le nombre de
jours d’absence.

Sélectionner toutes les cellules car, posée


ainsi, la même mise en forme
conditionnelle s’applique à toutes.

Bien écrire le = du début qui annonce la formule.


$F9 permet de tester le contenu de la cellule en colonne F mais reste en
relatif pour la ligne (à la recopie vers le bas $F10, $F11 etc.
Etonnant : on doit faire référence à l’adresse de la cellule et pas à la zone
nommée =NB_jours_absence=MAX(NB_jours_absence) ne marche pas !
Le deuxième = est l’opérateur (on peut utiliser aussi : > ; < ; ; >= ; <= ; <> etc).

Page : 7
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

2.5. Saisie de nouveaux enregistrements

Cliquer dans le tableau puis passer par


DONNEES FORMULAIRE NOUVELLE
qui a l’avantage de recopier les formules
et les mises en forme (attention
DONNEES GRILLE avec Excel 2000).

Lancé après avoir monté les


formules, seules les données
élémentaires sont à saisir … les
formules sont recopiées dès la
validation effectuée

2.6. Importations de données :


2.6.1. Provenance d’ACCESS

Soit un copier-coller d’une table ou requête en mode affichage, soit à partir


d’ACCESS un FICHIER EXPORTER d’une table ou requête avec un type EXCEL (le
classeur EXCEL ainsi créé s’ouvre tout a fait classiquement).

2.6.2. Provenance INTERNET ou progiciel de gestion

Un copier-coller d’un tableau peut réserver des surprises Données d’une ligne
dans une cellule unique.
Selon la version d’Excel (2000 ou 2003), faire un collage spécial :

Ligne du haut : HTML (pas


bon sur EXCEL 2003).
En bas : bien meilleur avec
Texte unicode ou texte.

Problème de la décimale : on notera le point pour la décimale et la position à gauche


dans les cellules Pas de calcul possible !
Solution : Il faut substituer le point par la virgule donc : pour les cellules concernées
EDITION REMPLACER . par , …

Le moment est venu (enfin) de passer aux traitements !

Page : 8
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

3. Les traitements
On pourra commencer , à titre de révision par :
Mettre en place le filtre automatique pour extraire les salariés selon l’échelon,
l’assiduité et autre élément familial.
Monter des tableaux croisés, dont je le rappelle la plage d’origine est mise à
jour automatiquement, pour étudier l’absentéisme (il sera utile auparavant de
calculer l’ancienneté pour chercher une corrélation).
Utiliser =RECHERCHEV() pour renvoyer à partir du matricule toutes les
informations sur un salarié …
Le moment sera alors venu d’aller plus loin pour répondre aux inévitables demandes
de l’entreprise.

3.1. Traitements des chaînes de caractères


3.1.1. =DROITE() et =GAUCHE() pour extraire des données d’un code

Ici, il s’agit d’extraire l’année d’embauche qui constitue les 4 premiers caractères du
matricule afin de pouvoir calculer l’ancienneté.
=GAUCHE(MATRICULE;4) renvoie la valeur 1998 pour le matricule 1998001.
=DROITE(MATRICULE ;3) renvoie 001 et, bien qu’aligné à droite comme du texte,
peut faire du calcul dessus.
Puisque nous y sommes et pour avoir rencontré des étudiants confronté au problème
lors de l’importation de liste de données, poussons un peu plus loin.

3.1.2. =STXT() ou comment isoler des caractères dans un texte

Imaginons que le matricule se compose de deux lettres au départ pour indiquer le


service AC199801 (Service achats, année 1998 rang 01)
Pour renvoyer l’année d’embauche, il faut extraire du matricule … à partir du
3e caractère … une chaîne de longueur 4 donc on écrira :
=STXT(Matricule ;3 ;4)

3.1.3. =NBCAR() et CHERCHE() pour scinder du texte

On pourra « jouer » avec les mots sur la feuille JEUX DE CARACTERES


Problème : j’importe l’identité sur une seule cellule et je veux scinder nom et prénom
Analyse :
Pour avoir le nom, je cherche le rang de
l’espace et je prends n caractères à gauche
avec n = rang -1 (espace en 6 5 caractères).
Pour le prénom : j’extrais à droite le nombre de
caractères du mot (ici 10) – le rang de l’espace.
Soit 10 – 6 = 4 lettres du prénom.

Page : 9
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

Pour bien comprendre (commencer par nommer identité la cellule A2) :


en B4 la longueur du mot : =NBCAR(identité) ou … =NBCAR(A2) (beurk).
En B6 la position de l’espace (ici 6e position) : =CHERCHE(‘‘ ’’ ;identité)
En respectant l’analyse ci-dessus pour le nom en C2 la formule sera donc :
=GAUCHE(identité;CHERCHE(" ";identité)-1)
De même le prénom sera obtenu en D2 par :
=DROITE(identité;NBCAR(identité)-CHERCHE(" ";identité))
Complément : dans un tableau la colonne identité est appelée à disparaître. Si elle
est effacée, l’extraction devient impossible. Opérer un COLLAGE SPECIAL
VALEURS et remplacer les formules par le seul résultat sous forme texte, la
suppression de la source devient alors possible.

3.1.4. =CONCATENER() et collage spécial pour regrouper du texte

Et l’on attend la question : « j’ai le nom et le prénom sur deux cellules comment les
associer ?».
La réponse vient comme toujours du latin : concaténer vient de « CUM CATENARE »
(pour ceux qui l’aurait oublié « faire chaîne avec »).

=CONCATENER(noms;" ";prenoms) ou =CONCATENER(A9;" ";B9)


On relèvera la présence de l’espace entre guillemets pour ne pas coller les deux
parties de l’identité. Comme ci-dessus, un COLLAGE SPECIAL VALEURS
permettra de ne conserver que le résultat.
Passons à plus sérieux … surtout en matière de lutte contre l’absentéisme !

3.2. =ANNEE() et AUJOURDHUI() pour calculer l’ancienneté


Rappel : l’année d’embauche est extraite du matricule (cf 2-1-1) par
=GAUCHE(MATRICULE;4)
Pour calculer l’ancienneté il suffit de soustraire cette année à l’année en cours.
=AUJOURDHUI() renvoie la date du jour
=ANNEE(AUJOURDHUI()) extrait l’année de la date du jour.
L’ancienneté se calcule ainsi en G9 :
=ANNEE(AUJOURDHUI())-GAUCHE(MATRICULE;4)
Attention : penser renvoyer l’année en cours et l’utiliser dans un calcul en formatant
une date avec « AAAA » révèle une méconnaissance coupable du traitement des
dates sur EXCEL…
Attention bis : puisque nous en sommes à revenir sur les formats, l’ajout des an(s)
(idem en I3 et I6), salariés en B2 ou autres jour(s) en B5 relèvent d’un FORMAT
CELLULES NOMBRE PERSONNALISE et non d’une saisie … (cf 1ers TD EXCEL
niveau 1).

Page : 10
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

3.3. Autres formules utiles sur les dates


Faire des filtres ou des tableaux croisés sur des dates de facture, par exemple, peut
créer souci. Il s’avère utile de créer des colonnes nouvelles (rappelons que nos
tableaux sont désormais redimensionnés automatiquement cf 1-3) avec :
=ANNEE(datefacture) renvoie … l’année (Yes !)
=MOIS(datefacture)
=JOUR(datefacture)
Mais aussi =JOURSEM(datefacture;2) pour renvoyer le jour de la semaine de 1 à 7
avec le lundi en 1ere position (omettre l’argument ;2 revient à prendre le 1 pour le
dimanche chez les anglo-saxons d’où week-end …)

Voir l’exemple sur la feuille JEUX DE


CARACTERES, et constater que
l’historique 26 mai 1993 tombe bien un
mercredi … 3e jour de la semaine.

3.4. =NB.SI() ou le dénombrement conditionnel


En B3 on désire afficher le nombre de personnes dépassant les 14 jours d’absence.

=NB.SI(Matrice ; ‘‘condition’’)
soit : =NB.SI(NB_jours_Absence ; ‘‘>14 ’’)

ATTENTION : la condition est à mettre


entre guillemets ! A ma connaissance, pas
de possibilité de « jouer » avec des ET() et
des OU(). Voir aussi en fin du 2-8

Peut s’écrire aussi =NB.SI(F9:F65536;‘‘>14’’)

3.5. =SOMME.SI() ou la somme conditionnelle


La syntaxe n’est pas la même que =NB.SI() dans la mesure ou le critère peut porter
sur une donnée autre que celle sur laquelle porte la somme conditionnelle.
Ainsi, en B5 on veut totaliser, pour les salariés atteignant dix ans d’ancienneté, le
nombre de jours « perdus ».
On écrira en premier la plage concernée par la condition (ancienneté) puis la
condition elle-même entre guillemets (">=10") puis la plage sur lequel s’effectue la
somme (nb_jours_absence).

Page : 11
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

Soit en B5 :
=SOMME.SI(Ancienneté;">=10";NB_jours_Absence)

Et si l’on veut me voir craquer … :


=SOMME.SI(G9: G65536 ; ">=10" ; F9 :F65536)
Note : omettre le dernier argument revient à faire la somme sur la plage concernée
par la condition.
Exemple : on veut éditer le nombre total d’ années de présence pour les salariés de
15 ans d’ancienneté et plus.
=SOMME.SI(Ancienneté;">=15")

3.6. =RECHERCHEV() avec argument VRAI ou omis


Calcul de la prime ancienneté en H9 et dessous.
Revenir sur cette formule de calcul permet de reprendre l’analyse de son écriture car
trop de personnes on tendance à vouloir écrire : « je recherche la prime ».
En fait le raisonnement sera plutôt : je recherche l’ancienneté dans la 1ere colonne
de la table nommée « tableprimeanciennete» et je renvoie le montant de la prime
figurant dans la 2e colonne de cette table.
On se rappellera que l’argument VRAI permet de se caler sur l’ancienneté
directement inférieure mais impose alors d’être trié croissant sur cette colonne.

Illustration : on recherche
verticalement l’ancienneté 25
dans la 1ere colonne de
« tableprimeanciennete ».
Plage "tableprimeanciennete : Ne trouvant point cette valeur,
B5 :C9 on retient 21 (valeur directement
1ere colonne triée croissant inférieure) et on renvoie la
donnée 700,00 € figurant sur la
2e colonne

Page : 12
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

D’où la formule de calcul de la prime ancienneté en H9 :


=RECHERCHEV(Ancienneté;tableprimeanciennete;2;VRAI)
Cette formule évite la multiplication des SI() imbriqués …
Petite piqûre de rappel : l’argument VRAI est facultatif ; par contre FAUX sera
nécessaire si on désire utiliser le matricule pour renvoyer les informations sur le
salarié. Rien n’oblige à trier les matricules car, grâce à l’argument FAUX, si un
matricule n’est pas trouvé, EXCEL renvoie le message d’erreur #N/A.

3.7. =INDEX() ou les tableaux à double entrée


Calcul de la prime familiale en I9 et dessous

Analyse :
Le 1er salarié, qui est en fait une
salariée, est à l’échelon 3 et 2 pour
l’indice familial.
La plage "tableprimefamiliale » renvoie,
Plage « tableprimefamiliale » : dans sa ligne de rang 3 et sa colonne
C17 :E21 de rang 2, la prime de 200,00 €
Le 2e salarié avec le couple 5,3 aura
bien 600,00 €

INDEX() a pour arguments, et dans cet ordre : plage ; rang ligne ; rang colonne
Ainsi en H9 :
=INDEX(tableprimefamiliale;Echelon;Indice_Familial)
Comme on le verra plus loin, en 3-9, un seul argument suffit si on travaille sur une
matrice d’une ligne ou une colonne.
Vous auriez été déçu de ne pas retrouver l’autre façon d’écrire la formule (qui me
donne la nausée rien que d’y réfléchir) :
=INDEX(Détail primes'!$C$17:$E$21 ;D9 ;E9)

A bien y regarder, la tâche est grandement facilitée car les échelons (1 à 5) et


l’Indice familial (1 à 3) correspondent à la position dans le tableau à double entrée.
Qu’en est-il si le rang dans la plage n’est pas explicite comme pour la prime, dite
Présence ?
Nous allons devoir associer =INDEX() et EQUIV() …

Page : 13
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

3.8. EQUIV() et =INDEX() pour repérer dans une plage et exploiter le rang renvoyé

La formule sera à écrire en J9 mais, auparavant, il semble opportun d’examiner le


tableau de calcul de la prime « présence » :
Ancienneté
0 an(s) 6 an(s) 13 an(s) 21 an(s)
0 jour(s) 150,00 € 220,00 € 300,00 € 400,00 €
Nb jours
absence

4 jour(s) 100,00 € 140,00 € 200,00 € 275,00 €


9 jour(s) 70,00 € 100,00 € 150,00 € 200,00 €
15 jour(s) 40,00 € 70,00 € 100,00 € 150,00 €
22 jour(s) - € - € - € - €

Attention : Cela faisait longtemps … l’affichage en dernière ligne du tableau de - €


est bien le nombre 0 au FORMAT comptabilité. De même pour les jour(s) et les
an(s) … mais je me répète (voir plus haut au cas où vous n’auriez pas suivi).
Ceci posé, ce qui suit mérite analyse et clarté de ma part et attention soutenue du
lecteur. Ne pas hésiter à faire une pause.

Absente 21 jours et d’une ancienneté de 25 an(s), notre « amie » Aurioli aura une
prime de 150, 00 €
Vérifions si vous avez compris : le 3e de la liste 12 jours et 25 an(s) aura 200,00 €.
Il est impératif de décortiquer le mécanisme pour comprendre :
a) sur la colonne des jours (en turquoise ; en photocopie noir et blanc ?) 25
n’existe pas, je me rabats sur la valeur inférieure qui se révèle être en position
(rang) 5.
C’est ici qu’intervient EQUIV() après avoir nommé « echelleabsence » les cellules
concernées.
=EQUIV(NB_jours_Absence;echelleabsences;1)
A retenir : EQUIV() renvoie la position (le rang) dans une matrice d’une ligne ou
colonne. L’argument 1 permet de revenir à la valeur directement inférieure si on est
trié croissant (c’est bien le cas ici).
L’argument 0 , traité plus loin, renvoie la position si, et seulement si, la valeur existe.
Par défaut l’argument est 1.
Essayer avec l’argument 0 comme 25 n’existe pas message erreur : #N/A !
b) sur la ligne supérieure (jaune) , bien nommée « echelleanciennete », 25an(s)
sera ramené à 21 et donc un renvoi de la position (rang) 4.
=EQUIV(Ancienneté;echelleancienneté;1)
On dispose à ce stade de la position 5 , 4 qui, grâce à l’ utilisation opportune de
INDEX() sur « tableprimepresence », renverra 150, 00 €.

Page : 14
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

Vérification pour le 3e salarié : 12 jour(s) renvoie sur 9 jour(s) et donc la position 3


25 an(s) revient à 21 an(s) d’où la position 5
Le couple 3 , 5 dans le tableau donne bien 200,00 €
Procédure :
Trois plages à nommer pour le calcul de la prime :

echelleabsences Colonne extérieure gauche ='Détail primes'!$B$30:$B$34


echelleancienneté Ligne supérieure ='Détail primes'!$C$29:$F$29
tableprimefamiliale Partie centrale ='Détail primes'!$C$17:$E$21

A écrire en cellule J9 de la feuille principale :


=INDEX(tableprimepresence;EQUIV(NB_jours_Absence;echelleabsences;1);
EQUIV(Ancienneté;echelleancienneté;1))

Certes, cela peut paraître « quelque peu » obscur, mais on retrouve la syntaxe
=INDEX(plage ; rang ligne ; rang colonne) avec EQUIV() 2 fois utilisé, justement pour
renvoyer ces 2 positions.
Et … à la demande générale et dans l’hilarité totale mais …certifié fonctionnant et
laissé en J10 pour le fun !
=INDEX('Détail primes'!$C$30:$F$34;EQUIV(Liste!$F$9:$F$65536;'Détail primes
'!$B$30:$B$34;1);EQUIV(Liste!$G$9:$G$65536;'Détail primes '!$C$29:$F$29;1))
Recopier deux trois lignes vers le bas à partir de J10 et constater que l’usine à gaz
fonctionne.
En plus simple, mais sur la même base, nous allons nous occuper du tableau
d’honneur des absences.

3.9.

Page : 15
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

=EQUIV() ,INDEX() et MIN() ou MAX() pour distinguer les extrèmes

Quel est le plus gros CA réalisé et quel mois ?


De combien est la plus belle vente et qui l’a réalisée ?
Ce type de question est incontournable et pouvoir y répondre vous donnera une aura
incomparable … à la nuance près qu’en cas d’ex æquo, seul le 1er rencontré est cité.
D’où l’intérêt du message en colonne J puisque deux salariés ont le formidable
record de 1 jour d’absence seulement. (Adeline Cubaine aura quand même la
satisfaction d’apparaître en vert vif).
Faut-il rappeler que notre attention dans ce thème porte sur la mise en évidence des
extrêmes en terme de nombre de jours d’absence et l’identité du salarié concerné
Comme cela a été le cas tout au long de ce cours, procédons d’abord à une analyse
avant d’écrire.
Ligne 3 : le plus absent
En F3 il convient de renvoyer la position dans la table de celui qui atteint le
maximum de la série en l’occurrence la cellule en rouge est bien en
19e position. MAX(NB_jours_Absence) nous donne le maximum de 31 et
EQUIV() permet d’obtenir le rang de ce maximum dans la plage
NB_jours_Absence :
=EQUIV(MAX(NB_jours_Absence);NB_jours_Absence;0)
Comme expliqué en 2-8, on relèvera bien au final de la formule l’argument 0 car
c’est bien la position du maximum qui est à renvoyer et que la plage n’est pas en tri
croissant.
Immédiatement donner le nom « RANGMAX » à la cellule F3 et « RANGMIN » à F6.
En G3, H3 et I3 on utilise INDEX() pour écrire le nom, le prénom et le nombre
de jours d’absence de l’élément positionné au rang du maximum soit dans
notre cas en la position 19 (d’où le nom « RANGMAX » pour la cellule F3).
En G3 : =INDEX(Nom;rangmax)

En H3 : =INDEX(Prenom;rangmax)

En I3 : =INDEX(NB_jours_Absence;rangmax)

Travaillant sur une colonne unique, un seul argument suffit pour INDEX()

Page : 16
IUT GEA Aix-en-Provence PC Compléments EXCEL Version XL 2003

Le message en J3 relève d’un SI() classique dont la condition porte sur le


nombre d’enregistrements constituant le maximum. S’il y a des ex æquo le
nombre de valeurs est supérieur à 1 et le message est affiché. Sinon on
n’affiche rien. La couleur jaune est obtenue par un FORMAT CONDITIONNEL
revu en 1-4-3.
=SI(NB.SI(NB_jours_Absence;MAX(NB_jours_Absence))>1;"attention ex æquo";"")
Comme une seule personne est au maximum, le message n’apparaît pas.
Important : On relèvera que la condition du NB.SI() portant sur une formule, les
guillemets ne sont pas à écrire. Ceci amende et complète le & 2-4.
Ligne 6 : le plus présent ou celui qui présente le moins d’absences
On se contente de reprendre les formules du point précédent mais tout fait référence
à MIN() au lieu de MAX() et bien sûr la position du plus assidu est donnée par la
cellule F6 que nous avons déjà nommée « rangmin ».
En F6 : le rang du moins absent dans la liste soit 35
=EQUIV(MIN(NB_jours_Absence);NB_jours_Absence;0)
Renvois des Nom, prénom et nombres de jours d’absence :
en G6 : =INDEX(Nom;rangmin)
en H6 : =INDEX(Prenom;rangmin)
en I6 : =INDEX(NB_jours_Absence;rangmin)
et pour finir, le message en J6 en cas d’ex æquo ce qui est le cas ici :
=SI(NB.SI(NB_jours_Absence;MIN(NB_jours_Absence))>1;"attention ex æquo";"")

3.10. Macro complémentaire pour écrire les chiffres en lettres


Nombreux sont les services administratifs amenés à réécrire les montants calculés
en toutes lettres afin d’éviter les fraudes.

Un collègue belge a créé une macro complémentaire fonctionnant sur EXCEL mais
aussi WORD et ACCESS. On peut la télécharger et trouver les instructions à
l’adresse suivante : http://www.fundp.ac.be/~jmlamber/chlettres.html
Copier la macro CHLETTRES.XLA dans le dossier MACROLIB d’EXCEL
(chercher les .XLA sur votre disque dur pour connaître le chemin d’accès).
Installer sur EXCEL par OUTILS MACROS COMPLEMENTAIRES.
Une fois installée, la formule CHLETTRES() est utilisable comme toute autre formule
mais … ne supporte pas (à la jubilation de certains) l’usage des zones
nommées dont je vous ai rebattu les oreilles tout au long du dossier !!!
En L9 on écrira donc =chlettres(K9;"F";"Eur") avec « F » pour une écriture francisée
et « Eur » pour ajouter Euro et centimes. Limite : 12 chiffres et 2 décimales.

Page : 17