CathyAstuce

EXCEL

GEMCCAP CONSEIL INFORMATIQUE BUREAUTIQUE
Formation - Conception Sites Internet
Applications Informatiques Personnalisées
Communauté partenaire Microsoft

FONCTIONS : QUELQUES EXEMPLES

RECHERCHEV  Déterminer si une année est bissextile  Un histogramme dans des cellules
INDEX et EQUIV Effectuer un calcul sur les heures Trouver la valeur la plus proche dans une plage non ordonnée
SOMME.SI le dernier jour du mois précédent arrondir un nombre
NB.SI

Remonter RECHERCHEV

Cette fonction permet de rechercher une valeur dans une liste de donnée. Cette recherche est effectuée dans la colonne de gauche de la liste, lorsqu'elle est trouvée, Excel se déplace vers la droite sur la même ligne et lit la valeur dans la colonne indiquée.
Les paramètres dont elle a besoin sont donc :

  • valeur_cherchée : la valeur recherchée
  • table_matrice : la plage dans laquelle la valeur est recherchée
  • no_index_col : l'index de la colonne renvoyant la donnée
  • valeur_proche: VRAI pour rechercher la valeur la plus proche dans la 1ère colonne de la plage et FAUX pour rechercher la valeur exacte.

Pour fonctionner correctement la fonction a besoin d'une certaine structure :

  • La colonne dans laquelle doit se faire la recherche doit être la 1ère colonne de la plage.
  • la plage doit contenir la colonne renvoyant la donnée.
  • la 1ère colonne de la plage a l'index 1.

Par exemple dans une liste contenant les champs Date, Produit, Prix unitaire, Taux TVA, Nombre, respectivement dans les colonnes A, B, C, D, E et la ligne 1, les données s'étendant jusqu'à la ligne 100. Pour rechercher :

  • le prix unitaire à partir du Produit, table_matrice doit être au moins B1:C100 et no_index_col est 2.
  • le nombre à partir de la date, table_matrice doit être au moins A1:E100 et no_index_col est 5

Remonter INDEX et EQUIV

La fonction précédente comme vous le constatez à ces limites : la colonne de recherche doit se trouver à gauche de la colonne de résultat. Pour palier à ceci vous pouvez utilisez conjointement 2 fonctions :

  • EQUIV, qui va vous donner l'emplacement d'une valeur dans une colonne ou une ligne,
  • INDEX, qui renvoie une donnée d'une liste (en ligne ou colonne) à partir de sa position dans la liste.

Reprenons l'exemple précédent :

Date Produit Prix unitaire Taux TVA Nombre
01/10/2004
aa 10,50 5,5% 10
02/10/2004
zz 2,50 5,5% 125
05/11/2004
bb 3,00 19,6% 23
03/10/2004
dd 50,25 19,6% 5

Si vous voulez savoir quel est le produit vendu à 3,00 € (attention cela ne me donnera que le 1er produit à ce prix s'il y en a plusieurs tout comme RECHERCHEV), procédez ainsi :

  • Dans une cellule, par exemple F1, tapez 3 (c'est à dire la valeur à rechercher)
  • Dans une autre cellule, par exemple G1, tapez la formule suivante en considérant que le tableau ci-dessus se trouve en A1:E5 :
    =EQUIV(F1;C1:C5;0)
    F1 est la valeur que vous recherchez
    C2:C5 est le tableau dans lequel vous recherchez la valeur, ici je n'inclue pas les titres
    0 doit être mis pour rechercher une valeur exacte (pour les autres valeurs voir l'aide)
  • Cette formule vous renverra 3 car la valeur 3 se trouve en 3ème position dans la plage C2:C5
  • Dans une cellule, par exemple H1, tapez la formule suivante :
    =INDEX(B2:B5;G1)
    B2:B5 est le tableau dans lequel je veux lire le résultat (tout comme pour la recherche je n'inclue pas les titres). Ce tableau doit avoir la même dimension que celui dans lequel on a effectué la recherche.
    G1 représente la position où je dois lire la donnée dans ce tableau, ici la 3ème position. Ce qui vous donne bien bb

Vous pouvez combiner ces 2 fonctions en utilisant la formule suivante :
=INDEX(B2:B5;EQUIV(F1;C1:C5;0))

RemonterSOMME.SI

Cette fonction permet d'effectuer la somme d'une plage selon un critère. Ce critère peut s'appliquer sur la plage que vous voulez sommer ou sur une autre plage avec la seule condition que les 2 plages soient de même taille. Sa syntaxe est SOMME.SI(plage;critère;somme_plage)

  • plage représente la plage sur laquelle le critère sera appliquée, elle peut-être la même que somme_plage
  • critère doit être sous la forme d'un nombre, d'un texte ou d'une expression de comparaison. Ce critère doit être au format texte (donc entre guillemet). L'opérateur & vous permettra de transformer au format texte toute expression dépendant d'une cellule. Vous pouvez avoir :
    • "10" --> = 10
    • A1 --> = le contenu de A1 (ne pas mettre =A1, mais si vous le désirez vous pouvez mettre "="&A1)
    • "un texte" --> = un texte
    • ">10"--> Supérieur à 10
    • ">=10"--> Supérieur ou égal à 10
    • "<>10"-->  Différent de 10 
    • "<10"--> Inférieur à 10
    • "<=10"--> Inférieur ou égal à 10
    • ">"&A1 (et non >A1) --> Supérieur au contenu de A1
    • ">="&A1 (et non >=A1) --> Supérieur ou égal au contenu de A1
    • "<>"&A1 (et non <>A1) -->  Différent du contenu de A1 
    • "<"&A1 (et non <A1) --> Inférieur au contenu de A1
    • "<="&A1 (et non <=A1) --> Inférieur ou égal au contenu de A1
    • "<>un texte"--> Différent de 'un texte'
    • "au*" ou "*au" ou "*au*" --> tout les mots commençant par 'au', tout les mots finissant par 'au', tous les mots contenant au.
      Une étoile permet de remplacer n'importe quel caractère et ne précise pas le nombre de caractères remplacés. au* trouvera aux et autres
      Vous pouvez également utiliser un ?, celui-ci remplacera 1 seul caractère, au? trouvera aux mais pas autres.
      Si dans cette formule vous remplacez au par &A1 ( "*"&A1&"*" par exemple), la recherche se fait sur le contenu de A1.
  • somme_plage est la plage sur laquelle la somme sera effectuée.

La fonction va parcourir la plage plage et pour chaque cellule X , elle va vérifier si la cellule Y, de même position dans la plage somme_plage, répond par vrai à la condition indiqué dans critère , si oui elle ajoute la valeur de la cellule X au résultat.

Exemple 1 : vous désirez sommer uniquement les valeurs supérieures à 100 dans une plage A1:A10. La formule sera donc :
=SOMME.SI(A1:A10;">100";A1:A10)

Exemple 2 : vous avez une plage B1:B10 qui indique le nombre d'enfants, une autre plage C1:C10 qui indique la prime. Vous désirez connaître la somme des primes pour 3 enfants, la formule est :
=SOMME.SI(B1:B10;"3";C1:C10)

RemonterNB.SI

Cette fonction compte le nombre de cellules correspondant à un critère dans une plage. Elle fonctionne à peu près comme la fonction précédente. Sa syntaxe est nb.si(plage;critère)

  • plage représente la plage qui va être comptée.
  • critère doit être sous la forme d'un nombre, d'un texte ou d'une expression de comparaison. Ce critère doit être au format texte. Reportez-vous à la fonction SOMME.SI pour connaître toutes ses possibilités.

La fonction parcourt chaque cellule de la plage plage , si le contenu de cette cellule correspond à la condition indiqué dans critère , si oui elle ajoute 1 au résultat.

Exemple : Dans une plage D1:D10, vous avez une liste de Noms et vous désirez compter le nombre de Dupont :
=NB.SI(D1:D10;"Dupont")

RemonterDéterminer si une année est bissextile

Une année est bissextile si le 29 février de cette année existe. En conséquence la formule suivante, considérant que la cellule A1 contient une année :
=DATE(A1;2;29)
renvoie le 1er mars de l'année si celle-ci n'est pas bissextile et le 29 février si elle l'est.
Pour tester il suffit donc d'établir la formule suivante :
=SI(JOUR(DATE(A1;2;29))=29;"bissextile";"normale")

Si vous désirez faire le test sur une date, la formule doit être (A1 contenant la date sur laquelle vous désirez faire un test):
=SI(JOUR(DATE(ANNEE(A1);2;29))=29;"bissextile";"normale")

RemonterIV. Un histogramme dans des cellules

Plutôt que de créer un graphique de type histogramme, vous pouvez utiliser une fonction pour mettre dans une cellule une barre horizontale dont la taille dépend d'une valeur d'une cellule.

Tapez par exemple en A1 la valeur 10. En B1 tapez la formule suivante : =REPT("n";D119) et appliquez la police Wingdings à cette cellule B1. Vous aurez alors ce résultat.

RemonterEffectuer un calcul sur les heures

Tout d'abord, pour travailler correctement avec les dates et les heures sous Excel, vous devez utilisez :

  • / comme séparateur de dates et non un espace ou un tiret (ex. : 12/07/02 et non 12 07 02 ou 12-07-02)
  • : comme séparateur d'heures (ex. : 12:37:40).
    Les premiers chiffres correspondent toujours aux heures, si vous ne devez entrer que des minutes et secondes, vous devez entrez 0: au début de votre saisie. Ex : 0:30:10

Si vous entrez correctement les dates et heures, Excel les aligne à droite car il les considère comme des valeurs numériques.
Vous pouvez maintenant établir des calculs sur ces dates et valeurs comme n'importe quelle valeur numérique (les sommer, les soustraire, les moyenner,...). Il faut tout de même savoir qu'Excel considère que :

  • 1 journée est égale à 1
  • 1 heure est égale à 1/24
  • 1 mn est égale à 1/24/60
  • 1 s est égale à 1/24/60/60

Donc pour faire des calculs sur les heures il faut en tenir compte. Si les données sont entrées comme indiquées ci-dessus, pour faire des calculs entre les heures, vous les manipulez comme des nombres quelconques. Par contre si vous devez convertir (A1 contient la donnée) :

  • des heures décimales (8,5) en heures normales (8:30) : =A1/24 (faites attention à mettre le format heure)
  • des heures normales (8:30) en heures décimales : =A1*24 (faites attention à remettre le format Nombre ou standard)
  • des minutes (365) en heures décimales (6,08) : =A1/60
  • des minutes (365) en heures normales (6:05:00) : =A1/24/60
  • des heures normales (6:05:00) en minute (365): =A1*24*60 (faites attention à remettre le format Nombre ou standard)

Par ailleurs, si vous devez afficher des heures supérieures à 23:59:59, il vous faut choisir un format de nombre spécifique : dans Format/cellule, onglet Nombre, choisissez la catégorie Heure, puis dans la liste Type, choisissez la ligne affichant des heures supérieurs à 24 (dans la version 2000 : 37:30:55).

Excel ne sait pas afficher des heures négatives, il affiche des #. Si vous devez effectuer un autre calcul sur ce résultat négatif, il n'y a aucun problème, mais il ne peut les afficher. En conséquence vous devez utiliser une formule pour les afficher avec un signe -, dans l'exemple suivant nous considérons qu'en C1 nous avons un résultat d'heures :
=SI(C1>0;TEXTE(C1;"hh:mm:ss");"-"&TEXTE(ABS(C1);"hh:mm:ss"))
Bien entendu vous pouvez choisir un autre format d'heures.

Dans une date, vous avez un jour, un mois et une année, mais plusieurs façons de les afficher (01/09/02 ou 1 Septembre 2002), pour les afficher à sa convenance, il faut comprendre comment fonctionne le format de date :

  • le jour est représenté par j
    • j affiche le jour avec au minimum 1 chiffre, ex. : 1 ou 12
    • jj affiche le jour avec 2 chiffres, ex. : 01 ou 12
    • jjj affiche le jour en lettre abrégé (3 lettres), ex. : dim ou ven
    • jjjj affiche le jour en lettre complet, ex. : dimanche ou vendredi
  • le mois est représenté par m
    • m affiche le mois avec au minimum 1 chiffre, ex. : 1 ou 12
    • mm affiche le mois avec 2 chiffres, ex. : 01 ou 12
    • mmm affiche le mois en lettre abrégé (3 ou 4 lettres), ex. : janv ou déc
    • mmmm affiche le mois en lettre complet, ex. : janvier ou décembre
  • l'année est représenté par a
    • aa affiche l'année avec 2 chiffres, ex : 02
    • aaaa affiche l'année avec 4 chiffres, ex : 2002

Maintenant pour écrire lundi 2 septembre 2002, inscrivez 2/9/02 dans une cellule, puis :

  • clic-droit/Format de cellule
  • onglet Nombre, catégorie Personnalisée
  • dans la zone Type, tapez jjjj j mmmm aaaa

Pour les heures, h représente les heures, m représente les minutes et s représente les secondes. Vous pouvez mettre 1 ou 2 h, 1 ou 2 m, 1 ou 2 s; ex : h:m:s (1:0:0) ou h:mm (1:00).
Les crochets ont un grand intérêt dans le format des heures, il empêche les heures de passer à 0 après 23:59:59, il empêche les minutes et les secondes de passer à 0 après 59 :

  • [h]:mm cumule les heures, même si vous dépassez 24 heures. Ex. : 34:00
  • [m]:ss cumule les minutes, même si vous dépasser 60 mn. Ex. : 34 heures s'affichent 2040:00
  • [s] cumule les secondes, même si vous dépasser 60 s. Ex. : 34 heures s'affichent 122400

Remonter le dernier jour du mois précédent

Il correspond tout simplement au jour 0 du mois actuel.

  A B C D
1 Date Mois Année Dernier jour du mois précédent
2 03/12/02 =MOIS(A2) =ANNEE(A2) =DATE(C2;B2;0)

Vous pouvez également écrire directement la formule suivante :
=DATE(ANNEE(A2);MOIS(A2);0)

RemonterI. Trouver la valeur la plus proche dans une plage non ordonnée

Soit une plage de valeurs non triées, si vous désirez à partir d'une valeur 

  A B C D
1      
2 10 Valeur à rechercher

12,5

 
3 15 Valeur la plus proche =MIN(SI(ABS(A2:A10-C2)=MIN(ABS(A2:A10-C2));A2:A10)) 12
4 25 Position de cette valeur dans la plage =EQUIV(C3;A2:A10;0)

5

5 65 N° de ligne de cette valeur =INDEX(LIGNE(A2:A10);C4)

6

6 12  
7 45  
8 30  
9 5  
10 6  

En C1 pour que la formule fonctionne, il faut impérativement appuyez sur Ctrl+Maj+Entrée et non simplement sur Entrée. Ceci permet de transformer votre formule en formule matricielle, elle sera entourée de {}. Une formule matricielle fait ses calculs sur chaque cellule de la plage. Dans notre exemple A2:A10-D2 renvoie une matrice (un tableau) de valeurs correspondants à chaque valeur de la plage A2:A10 moins la valeur de la cellule D2. Le tableau ci-dessous vous aidera à comprendre le fonctionnement de cette formule, le tableau effectue le même calcul  mais en utilisant plusieurs formules et plusieurs plages. La formule matricielle fait le même travail que les 3 plages B2:B10, C2:C10, D2:D10, ce qui retourne un tableau de valeur, ensuite on applique la fonction MIN pour avoir la valeur minimum de ce tableau.
 
  A B C D
1     12,5
2 10 =ABS(A2-$D$1) =ABS(A2-$D$1) =SI(A2=$G$11;A2)
3 15 =ABS(A3-$D$1) =ABS(A3-$D$1) =SI(A3=$G$11;A2)
4 25 =ABS(A4-$D$1) =ABS(A4-$D$1) =SI(A4=$G$11;A2)
5 65 =ABS(A5-$D$1) =ABS(A5-$D$1) =SI(A5=$G$11;A2)
6 12 =ABS(A6-$D$1) =ABS(A6-$D$1) =SI(A6=$G$11;A2)
7 45 =ABS(A7-$D$1) =ABS(A7-$D$1) =SI(A7=$G$11;A2)
8 30 =ABS(A8-$D$1) =ABS(A8-$D$1) =SI(A8=$G$11;A2)
9 5 =ABS(A9-$D$1) =ABS(A9-$D$1) =SI(A9=$G$11;A2)
10 6 =ABS(A10-$D$1) =ABS(A10-$D$1) =SI(A10=$G$11;A2)
11   =MIN(C2:C10) =MIN(D2:D10)

Dans le 1er tableau la cellule C4 utilise la fonction EQUIV pour connaître la position de la valeur de C3 dans la plage A2:A10, le dernier paramètre est à 0 pour rechercher la valeur exacte.

Ensuite en C5, la fonction LIGNE renvoie les N° de ligne de la plage A2:A10, soit une matrice (un tableau) contenant les valeurs {2,3,4,5,6,7,8,9,10}. La fonction INDEX renvoie toujours la valeur d'un tableau  selon une position, ici le tableau est la matrice renvoyée par la fonction LIGNE et la position est celle indiquée dans la cellule C4, soit pour la position 5, la valeur 6.

Remonter arrondir un nombre

Vous avez 3 fonctions pour arrondir vos nombres ARRONDI, ARRONDI.INF (arrondi en tendant vers 0), ARRONDI.SUP (arrondi en s'éloignant de 0). Elles fonctionnent toutes 3 avec les mêmes paramètres, le 1er correspond à la valeur à arrondir, le 2ème correspond au nombre de décimales que vous désirez.

  A B C D
1 PI ARRONDI ARRONDI.INF ARRONDI.SUP
2 =PI() =ARRONDI(A2;2) =ARRONDI.INF (A2;0) =ARRONDI.SUP (A2;0)
Affiche 3,14159265358979 3,14 3 14

Mais si vous voulez l'arrondir à n'importe quelle valeur (par exemple au multiple de 100 le plus proche), vous ne pouvez utiliser directement ces fonctions mais procédez ainsi :

soit la valeur 2353 dans la cellule A2, la formule est alors : =ARRONDI(A2/100;0)*100

Il vous suffit de remplacer la valeur 100 par votre nombre.

AccueilDébut de la page