Dans les grands tableaux de données, les opérations de recherche manuelles sont pénibles et aboutissent rarement. Excel, vu qu'il est un logiciel de traitement de données en masse, dispose de plusieurs moyens qui facilitent la recherche et l'extraction des données. Parmi ces moyens les fonctions de recherche qu'on va voir dans ce chapitre.
À noter que l'utilisation de ces fonctions entre dans les compétences à préparer pour l'examen 77-427 de la certification MOS niveau Expert.
Recevez ce cours au format PDF par email, en envoyant un message ici
Avant de voir les fonctions de recherche, vous n'êtes pas sans savoir qu'un tableau peut être présenté dans le sens horizontal ou dans le sens vertical, comme le montre l'illustration suivante.
Dans les deux tableaux nous avons exactement les mêmes informations à une différence près. Le premier tableau présente les numéros des examens en colonnes et les noms des jours en lignes, alors que dans le deuxième tableau on trouve les noms des jours en colonnes et les numéros des examens en lignes. Autrement dit, les colonnes du premier tableau forment les lignes du deuxième tableau et les lignes du premier forment les colonnes du deuxième. On dit que le deuxième tableau est une Transposition du premier.
Pour permuter les lignes et les colonnes d'un tableau, il y a une première méthode, déjà vue dans un chapitre précédent, qui consiste à copier le tableau et de le coller dans un autre emplacement en effectuant un Collage spécial et en choisissant l'option Transposé.
Remarque :
En utilisant cette méthode, on obtient deux tableaux qui sont indépendants, c'est à dire que la modification de l'un n'affecte pas l'autre.
Note :
Cette méthode ne marche pas si le tableau à transposer contient des formules ou des fonctions faisant référence à d'autres cellules.
Une deuxième méthode pour inverser les lignes et les colonnes ou transposer un tableau est d'utiliser la fonction qui porte le même nom : TRANSPOSE.
TRANSPOSE() est une fonction matricielle, c'est à dire qu'elle agit sur un tableau (une matrice) tout entier. On la trouve dans la catégorie Recherche et référence dans le groupe Bibliothèque de Fonctions sous l'onglet FORMULES.
On peut utiliser l'assistant pour l'insérer ou bien l'écrire manuellement. La syntaxe est simple, elle exige un seul argument qui est le tableau à transposer.
=TRANSPOSE(tableau)
Les étapes à suivre sont :
Voir l'animation
Important :
Les deux tableaux sont liés, par conséquent toute modification dans le tableau source est répercutée dans le tableau cible, ce qui est normal puisqu'il s'agit d'une formule. Si le tableau source est supprimé, le deuxième tableau perd sa référence.
La fonction RECHERCHE(), à ne pas confondre avec la fonction CHERCHE(), permet de chercher une donnée dans une plage de cellules et renvoie une valeur lui correspondant dans une autre plage de cellules. Cette fonction se décline en deux variantes : RECHERCHE(Vecteur) et RECHERCHE(Matrice).
Un Vecteur signifie une plage de cellules contiguës, étalée sur une seule ligne ou bien sur une seule colonne. La variante RECHERCHE(Vecteur) exige trois arguments :
La syntaxe est la suivante :
=RECHERCHE(Valeur_recherchée;Vecteur_de_recherche;[Vecteur_resultat])
Par exemple, on voudrait chercher dans la plage de cellules A3:A13 un nom qui sera saisi dans la cellule D3 puis extraire la date de naissance qui lui correspond dans la plage de cellule (le vecteur) B3:B13 et l'afficher dans la cellule E3.
Par le mot Matrice on comprend une plage de cellules contiguës étalées sur au moins deux lignes et deux colonnes, sinon ça reste un vecteur.
Cette variante de la fonction RECHERCHE() nécessite deux paramètres (tous deux obligatoires) qui sont : Valeur_recherchée et la Matrice_de_recherche. Elle permet de chercher une valeur dans la première colonne de la matrice passée en paramètre et renvoie son correspondant situé sur la même ligne dans la dernière colonne de la plage sélectionnée.
La syntaxe est la suivante :
=RECHERCHE(Valeur_recherchée;Matrice_de_recherche)
Étant donné qu'on cherche la population d'un continent saisi dans la cellule A14, la fonction a eu comme deuxième paramètre la matrice A3:B10, comme ça la colonne de renvoi sera celle de la population (la plus à droite). Pour obtenir le pourcentage de la population on doit lui passer la matrice A3:C10.
Au lieu de saisir la syntaxe manuellement, vous pouvez insérer la fonction en utilisant l'assistant.
Attention :
Dans ses deux variantes, la fonction RECHERCHE() a une faiblesse qui se manifeste lorsque les données de la première colonne ne sont pas classées par ordre croissant ; dans ce cas, elle renvoie des résultats erronés ou même des messages d'erreurs.
La fonction RECHERCHEV() est très pratique pour extraire des informations à partir d'un tableau de données. Sa syntaxe est assez claire dans la mesure où il suffit de répondre aux quatre questions suivantes :
=RECHERCHEV(Valeur_recherchée;Ou_chercher;Valeur_a_extraire;Rapprochée/exacte)
Par Exemple, on aimerait extraire à partir de la base ci-dessous, le nom de l'article dont le code est 5.
En réponse aux questions précédentes on a
D'où l'expression :
À savoir :
Pour mettre en pratique cette fonction, on va créer une facture qui se remplit automatiquement en puisant les informations à partir d'une base de données située sur une autre feuille Excel. Pour ce faire, je vous propose de télécharger le fichier de travail ici. C'est un classeur Excel formé de deux feuilles : la feuille Facture sur laquelle on va travailler, et la feuille etatStock qui va servir comme base de données.
L'idée est, pour remplir la facture, l'utilisateur n'aura pas à saisir les noms des articles (Désignation), ni leurs prix unitaires. Ces informations seront extraites automatiquement à partir de la feuille etatStock. La même chose pour le prix Total. Le prix TTC, le Total HT et la Somme TTC, seront calculés automatiquement grâce à des formules qui sont déjà saisies. Les seules données que l'utilisateur devra saisir sont le Code de l'article et la Quantité.
Pour la première ligne de la facture, essayons de répondre aux quatre questions de tout à l'heure. Je vous les rappelle.
Réponses concernant la première ligne de la facture (la ligne 6 de la feuille)
L'écriture de la fonction sera saisie dans la cellule C6 de la feuille Facture et en se basant sur ces réponses, son expression sera comme c'est indiqué dans la capture d'écran ci-dessous. Il ne reste que la valider pour obtenir le résultat.
Le déroulement complet de l'opération est montré par l'animation suivante :
Apparemment la fonction marche bien, mais un message d'erreur #N/A apparait si on ne saisit pas un code d'article. Ce message est illustré dans la capture suivante.
L'erreur #N/A est générée dans le cas où aucune saisie du code n'a été faite ou bien si la valeur saisie n'est pas trouvée dans la base de données. On doit donc gérer ce cas pour améliorer le rendu de la fonction. Pour ceci, on va utiliser le fonction SIERREUR() pour vérifier si la fonction RECHERCHEV() renvoie une erreur, dans ce cas, la cellule C6 ne doit pas afficher l'erreur mais plutôt rester vide, sinon elle affiche le résultat de la fonction RECHERCHEV().
L'expression améliorée devient alors une écriture qui a l'air complexe mais qui ne l'est pas.
L'animation suivante montre que la fonction RECHERCHEV() combinée à la fonction SIERREUR() marche à merveille. Elle ne renvoie plus le message d'erreur si le code de l'article n'existe pas dans la base ou bien si l'utilisateur n'a pas saisi une valeur.
Maintenant que la fonction marche bien, il est temps de la recopier vers les lignes d'en bas pour pouvoir remplir les autres lignes de la facture. Rien de plus simple, puisqu'il suffit de cliquer dans la cellule C6 qui contient l'expression de la formule puis de la prendre par le petit carré qui se trouve dans son coin inférieur droit et de faire glisser la souris vers les cellules au-dessous dans la même colonne.
En essayant de remplir les lignes de la facture, on remarque que pour la première ligne ça marche, mais pour les autres rien ne s'affiche??!!
En examinant les expressions des cellules de la colonne C, on remarque qu'elles utilisent pour le deuxième argument une Référence relative, c'est à dire que la zone d'où elles puisent les informations, change d'une ligne à l'autre, etatStock!A2:E15 - etatStock!A3:E16 - etatStock!A4:E17 - etc. À chaque fois, la zone de recherche est décalée vers le bas, ce qui a pour effet d'exclure les premières lignes de la base et rajouter des lignes vides en bas, et par la suite de fausser les rendus de la fonction.
L'animation suivante montre la zone de recherche correspondant à l'expression écrite dans chaque ligne.
Pour chacune des lignes de la facture, l'extraction de l'information doit toujours se faire à partir de la même zone. Pour cela, avant de recopier l'expression vers les autres cellules, on doit fixer la zone d'extraction des données en utilisant une Référence absolue pour le deuxième argument de la fonction RechercheV(). Pour ce faire, deux méthodes sont possibles :
C'est ce nom donné à la zone d'extraction qui sera utilisé comme deuxième argument de la fonction RechercheV et l'expression finale devient alors :
Cette deuxième méthode, qui consiste à utiliser le nom de la zone, est à préférer pour deux raisons :
Une fois la rectification faite, on peut recopier la formule de la cellule C6 vers les cellules de dessous dans la même colonne et tout sera mis en ordre.
Travail à faire :
Note : les formules des cellules Total, Total TTC, Total HT et Somme TTC sont déjà saisies
La fonction RECHERCHEH() fait exactement la même chose que la fonction RECHERCHEV() sauf qu'elle fait le travail à l'horizontal. C'est à dire qu'elle cherche une valeur dans la première ligne d'un tableau et renvoie une valeur située un peu plus bas dans la même colonne.
La syntaxe est semblable à celle de la fonction Recherchev(), il n'y a que le nom de la fonction qui change.
=RECHERCHEH(Valeur_recherchée;Ou_chercher;Valeur_a_extraire;Rapprochée/exacte)
Pour le troisième argument, Valeur_a_extraire, on passe le numéro de la ligne où l'on veut extraire l'information. On peut écrire l'expression manuellement ou bien l'insérer à l'aide de l'assistant.
Recevez ce cours au format PDF par email, en envoyant un message ici