Publié initialement sur: https://www.formuleexcel.com/comment-creer-une-barre-de-recherche-sur-excel/
Aujourd’hui nous allons faire l’exercice de créer une barre de recherche sur Excel. Nous allons travailler sur la liste des pays du monde: Comment rechercher tous les pays contenant certains caractères et retourner la liste des résultats? De plus nous allons faire cela uniquement avec des formules, sans VBA.
Le fichier final est disponible gratuitement ici:
Télécharger le fichier Barre de Recherche gratuitement
Tout d’abord vous avez besoin de la liste de tous les pays du monde (Ne vous inquiétez pas, dans le fichier Excel que je vous fournis à la fin, vous aurez accès à la liste de 228 pays et toutes les formules du fichier). Nous allons rentrer cette liste dans les cellules F4:F231
Trouver les résultats correspondants dans la liste
Pour trouver tous les résultats correspondants dans la liste de pays, nous allons utiliser la fonction CHERCHE. Cette fonction permet de rechercher une chaine de caractères dans une cellule donnée, et retourne le chiffre correspondant à sa position si elle est trouvée. Sinon CHERCHE retourne une erreur. Nous allons filtrer les erreurs en utilisant la fonction SIERREUR, qui remplacera toutes les erreurs par du vide ce qui est visuellement plus lisible.Commençons par rentrer la formule =SIERREUR(CHERCHE($C$3;F4);« »)
en F4
Nous voyons que pour la recherche de « ne », la formule renvoie 8 pour l’Allemagne et l’Argentine ce qui correspond à la position de la chaine de caractère « ne » dans ces mots. Lorsque la chaine « ne » n’est pas trouvée, CHERCHE renvoie une erreur, notre formule renvoie donc un espace grâce à SIERREUR.
Choisir l'ordre des résultats
Nous avons déjà tous les résultats de recherche, il faut maintenant les trier. Pour faire cela nous allons attribuer à chaque résultat un numéro unique. Nous allons nous baser sur la position calculée précédemment, qui indique à quel index se trouve recherche dans le résultat.Le problème est que cette position n’est pas unique (on a vu que Allemagne et Argentine avaient le même numéro). C’est problématique car nous voulons renvoyer tous les pays pour cette position, et si le numéro n’est pas unique nous ne pourrons en renvoyer qu’un seul. Pour transformer en un nombre unique, nous allons ajouter le numéro de la ligne divisé par 10000, ce qui rendra forcément le nombre unique car nous n’avons que 228 pays.
Nous allons don rentrer en H4: =SIERREUR(G4+LIGNE(G4)/10000;« »)
Nous avons rajouté une utilisation de SIERREUR pour remplacer les erreurs par des blancs. Nous voyons que l’Argentine a désormais le numéro unique 8,0015
Maintenant que chaque résultat a un numéro unique, nous allons ordonner ces résultats et affecter à chacun une position dans les résultats de recherche. Pour cela nous utilisons la formule RANG, qui renvoie justement la position d’un chiffre dans une liste de données. La formule que nous allons rentrer en E4 est =SIERREUR(RANG(H4;$H$4:$H$231;1);« »)
Nous voyons donc que cette fonction donne le rang n°10 à l’Allemagne.
Afficher une liste ordonnée des résultats
Nous pouvons maintenant afficher simplement les résultats en utilisant la fonction RECHERCHEV. Pour chaque numéro de position, nous irons chercher le pays dont le rang correspond à cette position. Nous allons donc utiliser en C6 la formule=SIERREUR(RECHERCHEV(B6;$E$3:$F$232;2;FAUX);"")
Notre outil de recherche est terminé! Nous pouvons noter une propriété intéressante qui est due à l’utilisation de la fonction CHERCHE: l’utilisation des jokers. Nous pouvons ainsi utiliser les jokers ? et * qui sont vérifiés respectivement par n’importe quel caractère unique et par n’importe quelle chaine de caractères. Par exemple si l’on cherche la liste des pays qui contient la lettre A, puis n’importe quel lettre unique, puis un B, il suffit d’effectuer sur notre outil la recherche A?B
Téléchargez le fichier d'exemple gratuitement
Télécharger le fichier Barre de Recherche gratuitement