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. 2.
2.1. 2.2. 2.3.

THEME : ATTRIBUTION D’UNE PRIME AU PERSONNEL TRAVAUX. PREALABLES :
Les volets Nommer les colonnes individuelles du tableau principal Actualiser la plage couverte par le tableau de données

1 3
3 3 4 5 5 5 6 6 8 8 8 8

2.4. Le contrôle et l’aide à la saisie des données 2.4.1. Contrôle de saisie 2.4.2. Zone de liste 2.4.3. Format mise en forme conditionnelle (sur le contenu de la cellule) 2.4.4. Format mise en forme conditionnelle (test sur une autre cellule) 2.5. Saisie de nouveaux enregistrements

2.6. Importations de données : 2.6.1. Provenance d’ACCESS 2.6.2. Provenance INTERNET ou progiciel de gestion

3.

LES TRAITEMENTS

9
9 9 9 9 10 10 11 11 11 12 13 14 16 17

3.1. Traitements des chaînes de caractères 3.1.1. =DROITE() et =GAUCHE() pour extraire des données d’un code 3.1.2. =STXT() ou comment isoler des caractères dans un texte 3.1.3. =NBCAR() et CHERCHE() pour scinder du texte 3.1.4. =CONCATENER() et collage spécial pour regrouper du texte 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. 3.9. 3.10. =ANNEE() et AUJOURDHUI() pour calculer l’ancienneté Autres formules utiles sur les dates =NB.SI() ou le dénombrement conditionnel =SOMME.SI() ou la somme conditionnelle =RECHERCHEV() avec argument VRAI ou omis =INDEX() ou les tableaux à double entrée EQUIV() et =INDEX() pour repérer dans une plage et exploiter le rang renvoyé =EQUIV() ,INDEX() et MIN() ou MAX() pour distinguer les extrèmes Macro complémentaire pour écrire les chiffres en lettres

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
se placer en cellule A9 FENETRE FIGER VOLETS

Pour garder en vue les 8 premières lignes (et pas de colonne) :

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 Matricule Nom Prenom Echelon Indice_Familial NB_jours_Absence Ancienneté Prime_Ancienneté Prime_Familiale Prime_Présence Total_Prime Plage de cellules =Liste!$A$9:$A$65536 =Liste!$B$9:$B$65536 =Liste!$C$9:$C$65536 =Liste!$D$9:$D$65536 =Liste!$E$9:$E$65536 =Liste!$F$9:$F$65536 =Liste!$G$9:$G$65536 =Liste!$H$9:$H$65536 =Liste!$I$9:$I$65536 =Liste!$J$9:$J$65536 =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 cellule A8

Cliquer sur la colonne A

Cliquer sur la 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 dans une cellule unique. Données d’une ligne

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) =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. renvoie … l’année (Yes !)

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 Soit en B5 :

Compléments EXCEL

Version XL 2003

=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 : B5 :C9 1ere colonne triée croissant Ne trouvant point cette valeur, on retient 21 (valeur directement 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. Plage « tableprimefamiliale » : C17 :E21 La plage "tableprimefamiliale » renvoie, dans sa ligne de rang 3 et sa colonne 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 » :
0 an(s) 150,00 € 100,00 € 70,00 € 40,00 € - € Ancienneté 6 an(s) 13 an(s) 220,00 € 300,00 € 140,00 € 200,00 € 100,00 € 150,00 € 70,00 € 100,00 € - € - € 21 an(s) 400,00 € 275,00 € 200,00 € 150,00 € - €

0 jour(s) 4 jour(s) 9 jour(s) 15 jour(s) 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 €.

Nb jours absence

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 echelleancienneté tableprimefamiliale

Colonne extérieure gauche Ligne supérieure Partie centrale

='Détail primes'!$B$30:$B$34 ='Détail primes'!$C$29:$F$29 ='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

Sign up to vote on this title
UsefulNot useful