formateur informatique

Formulaire de recherche sans code VBA Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Formulaire de recherche sans code VBA Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux, voici son url absolue :

Pour l'intégrer sur votre site internet ou blog, vous pouvez l'embarquer :

Sujets et formations similaires :


Formulaire de recherche

Dans cette formation Access, nous proposons de livrer une astuce relativement simple pour bâtir un moteur de recherche, depuis un formulaire Access. Bien sûr, l'enjeu consiste à contourner le code Visual Basic. Les mots clés tapés doivent être cherchés dans plusieurs champs de la table archivant les informations.



Données source
Il va de soi que des données sont à manipuler et à questionner. Il convient donc de les réceptionner dans un premier temps. Comme l'indique le volet des objets Access sur la gauche de l'écran, cette petite base est composée de deux éléments. Il s'agit de la table Produits et du formulaire F_Recherche.
  • Double cliquer sur la table Produits pour afficher son contenu en mode feuille de données,
Table Access des articles de la société à rechercher avec un formulaire

Cette table recense 244 articles référencés sur un certain niveau de détail.
  • Double cliquer sur le formulaire F_Recherche pour l'exécuter,
Formulaire Access de recherche préconçu

La mise en page de ce formulaire a été préparée. Mais fort naturellement à ce stade, aucune fonctionnalité n'est opérationnelle. Une zone de saisie est prévue pour recevoir les mots clés de recherche. Un sous formulaire vierge et blanc pour l'instant est présent pour restituer les résultats concordants, issus de la table Produits.



Requête non exclusive
L'idée est de permettre à l'utilisateur de taper ses termes sans se soucier du champ dans lequel se trouve l'information. Il peut ainsi souhaiter chercher des articles correspondant à un bout de référence ou de désignation par exemple. Il suffit de bâtir une requête attendant le critère dynamique dans l'un ou l'autre champ. Ce critère doit récupérer les mots clés issus du formulaire pour les encapsuler dans une expression.
  • Fermer la table Produits en cliquant sur la croix de son onglet,
  • Puis, dans le ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans la liste, choisir ensuite Mode création,
Nous basculons ainsi dans la vue en conception du formulaire. La feuille de propriétés doit être visible dans l'environnement. C'est le bouton Feuille de propriétés du ruban contextuel Création qui permet de l'afficher ou de la masquer.
  • Cliquer sur la zone de saisie pour la sélectionner,
Propriété et nom de la zone de saisie pour les mots clés de recherche sur formulaire

En consultant la feuille de propriétés, nous comprenons qu'un nom explicite lui a été attribué. Elle est nommée mots_cles. Ce nom d'objet est particulièrement important. C'est lui qui va permettre de faire la jonction pour la construction du critère dynamique de la requête d'extraction.
  • En haut de la fenêtre Access, cliquer sur l'onglet Créer pour activer son ruban,
  • Dans la section Requêtes du ruban, cliquer sur le bouton Création de requête,
  • Dans la boîte de dialogue qui suit, choisir la table Produits,
  • Puis, cliquer sur le bouton Ajouter et sur le bouton Fermer,
Nous basculons ainsi dans l'éditeur de requête Access. La table est représentée schématiquement, accompagnée de tous ses champs.
  • Cliquer sur le premier d'entre eux, soit le champ produit_ref,
  • Tout en maintenant la touche Maj (Shift) enfoncée, cliquer sur le dernier, soit produit_code,
Cette technique permet d'englober dans la sélection tous les champs compris entre le premier et le dernier.
  • Glisser cette sélection vers le bas, sur la grille de requête,
Dès que le bouton de la souris est relâché, vous remarquez que tous les champs y sont déposés. Nous souhaitons extraire les enregistrements correspondant à la demande, avec le niveau de détail intégral sur les champs.

Préparation de la requête Access pour extraire tous les résultats du moteur de recherche sur le formulaire

Les mots clés tapés par l'utilisateur doivent être cherchés soit dans le champ produit_ref, soit dans le champ produit_nom. Et bien sûr, ces conditions doivent être inscrites dans la zone Critères pour chaque champ, mais pas sur la même ligne. C'est cette astuce qui va donner vie au formulaire de recherche et lui apporter beaucoup de souplesse. Tous les enregistrements contenant les mots clés cherchés dans le champ produit_ref seront extraits. Il en va de même pour tous les enregistrements contenant ces mots clés dans le champ produit_nom.

Le critère est identique pour les deux champs. Il consiste à vérifier que les mots clés tapés sont bien contenus dans le champ. C'est l'opérateur Access Comme, utilisé conjointement avec le symbole de l'étoile, qui permet de décrire une telle expression :

Comme '*' & [Mots_cles_du_formulaire] & '*'

Les étoiles doivent encadrer les termes réceptionnés. Comme ces termes sont dynamiques, ils doivent être concaténés (&). Et comme ils proviennent du formulaire à l'instant de la demande, nous devons exploiter le générateur d'expression pour établir la correspondance.
  • Cliquer dans la zone Critères du champ produit_ref pour l'activer,
  • Taper le début de l'expression, comme suit : Comme '*' &,
Le symbole de l'étoile est nécessairement encadré de doubles côtes. Il débute ou termine une expression textuelle. Le caractère de concaténation, le Et commercial, s'obtient par la touche 1, en haut à gauche du clavier.
  • Cliquer avec le bouton droit de la souris dans cette zone Critères en cours de construction,
  • Dans le menu contextuel, choisir Créer,
Nous affichons ainsi le générateur d'expression. Il va simplifier la construction de la syntaxe pour la liaison dynamique avec le formulaire.
  • Dans la liste de gauche, déployer l'arborescence des formulaires jusqu'à sélectionner le formulaire F_Recherche,
  • Dans la liste du centre, double cliquer sur le contrôle mots_cles,
Nous l'avons constaté en effet. Il s'agit de la zone de saisie destinée à recevoir les termes de recherche de l'utilisateur. Et comme vous l'avez remarqué, cette action a pour effet de compléter la syntaxe que nous avons amorcée. Elle est visible dans la partie supérieure du générateur d'expression :

Comme '*' & Formulaires![F_Recherche]![mots_cles]

A l'instar de la programmation orientée objet, cette syntaxe descend dans la hiérarchie des objets pour désigner le contrôle mots_cles appartenant au formulaire F_Recherche. Comme vous le savez, dans la syntaxe Access, un nom de contrôle ou de champ est toujours encadré de crochets. Mais l'expression n'est pas encore terminée. Telle qu'elle est construite à ce stade, elle permet de trouver la correspondance lorsque le champ se termine par les mots tapés. Or, nous souhaitons trouver toutes les correspondances, à partir du moment où ces termes sont inclus.
  • A la suite de la syntaxe, concaténer une nouvelle étoile, comme suit : & '*',
Critère dynamique de requête Access pour moteur de recherche par mots clés sur formulaire

Nous avons désormais traduit le raisonnement que nous avions posé.
  • Cliquer sur le bouton Ok pour valider l'expression,
Sa syntaxe apparaît conformément dans la zone Critères du champ produit_ref. Il est conseillé d'augmenter la largeur du champ pour la visualiser intégralement.

La même correspondance doit être établie sur le champ produit_nom. Mais comme nous l'avons dit, elle ne doit pas intervenir sur la même ligne.
  • Sélectionner l'expression complète puis la copier (CTRL + C),
  • Cliquer sur la ligne du dessous de la zone Critères du champ produit_nom,
  • Coller alors l'expression (CTRL + V),
  • Enregistrer la requête (CTRL + S) sous le nom : R_Recherche,
A validation, comme vous le constatez, le nouvel élément apparaît dans le volet des objets Access.

Double condition de requête Access pour recherches par mots clés sur formulaire



Lier un formulaire et une requête
Cette requête est dynamique. Elle attend les mots clés issus du formulaire à l'instant T. C'est ainsi qu'elle génère des extractions en perpétuel mouvement. Et ces extractions doivent être restituées dans le sous formulaire.
  • Fermer la requête en cliquant sur la croix de son onglet,
  • Puis, revenir sur le formulaire en mode conception,
  • Cliquer sur le sous formulaire situé dans la partie inférieure de l'interface,
  • Activer l'onglet Données de sa feuille de propriétés,
  • Avec la liste déroulante de sa propriété Objet source, désigner la requête R_Recherche,
Liaison entre un sous-formulaire et une requête pour restituer les résultats du moteur de recherche Access

Le lien est établi. Le sous formulaire doit désormais se remplir des résultats extraits par la requête dynamique. Mais pour cela, nous devons donner l'ordre, au clic sur le bouton, d'établir la correspondance. Il suffit de déclencher l'exécution d'une macro actualisant les objets et enregistrements. Cette action se nomme AfficherTousEnreg. Nous l'avons exploitée à maintes reprises au travers des formations Access.
  • Sélectionner désormais le bouton Chercher,
  • Activer alors l'onglet Evènement de sa feuille de propriétés,
  • Puis, cliquer sur le petit bouton à l'extrémité de son évènement Au clic,
  • Dans la boîte de dialogue qui suit, choisir Générateur de macro,
Déclencher macro au clic sur bouton de formulaire Access pour lancer recherche

Comme vous le savez, il est aussi possible de déclencher l'exécution d'un code VBA, avec le générateur de code.
  • Cliquer sur le bouton Ok de la boîte de dialogue,
Nous basculons ainsi dans l'éditeur de macro. La liste déroulante permet d'empiler les actions les unes en dessous des autres. Une seule nous suffit dans notre cas.
  • Avec cette liste déroulante, choisir l'action AfficherTousEnreg,
Action de macro Access pour actualiser les résultats du moteur de recherche sur le formulaire

Souvenez-vous, cette action est associée au clic sur le bouton du formulaire. Et ce clic doit intervenir une fois les mots clés de recherche tapés.
  • Dans le ruban Création, cliquer sur le bouton Enregistrer puis sur le bouton Fermer,
  • De retour sur le formulaire, l'enregistrer à son tour (CTRL + S),
Le grand moment est arrivé. Il s'agit désormais de tester le fonctionnement de notre formulaire de recherche.
  • Enfoncer la touche F5 du clavier pour exécuter le formulaire,
Comme vous pouvez le voir, le sous formulaire est plein à la première exécution. En l'absence de mots clés, tous les enregistrements sont compatibles. Ainsi, les 244 articles sont restitués.
  • Taper le mot clé Tunique et cliquer sur le bouton Chercher,
Résultats de recherche par mots clés sur formulaire Access

Seuls 5 produits subsistent. La recherche a été réalisée sur le champ produit_nom. Aucune correspondance n'a pu être trouvée sur le champ produit_ref, fort naturellement.
  • Remplacer le terme de recherche par le code 3062V et valider par le bouton,
Moteur de recherche Access sans code VBA

Cette fois, la recherche est effectuée sur le champ des références. Et tous les articles d'une même catégorie sont extraits. Il s'agit des vestes. Cette astuce du double critère de requête apporte donc beaucoup de souplesse à l'utilisateur. Il peut indifféremment chercher un produit sur sa désignation ou sur sa référence.

 
Sur Facebook
Sur G+
Sur Youtube
Les livres
Contact
Mentions légales



Partager la formation
Partager sur Facebook
Partager sur Google+
Partager sur Twitter
Partager sur LinkedIn