formateur informatique

Gérer les annonces immobilières sur un formulaire

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Gérer les annonces immobilières sur un formulaire
Livres à télécharger


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


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Gestion des biens immobiliers avec Access

Dans cette formation Access, nous proposons de monter un formulaire permettant d'extraire les annonces immobilières des biens en vente. Ils doivent correspondre à de multiples critères recoupés. Les exigences peuvent être émises sur le prix, la superficie, le nombre de pièces ou encore la distance séparant la localité choisie.

Formulaire Access pour sélectionner les offres immobilières selon des critères recoupés

Dans une barre d'outils conçue à cet effet, l'utilisateur peut saisir les critères dans les zones de texte correspondantes. Instantanément, la liste des biens répondant à ces requêtes recoupées s'actualise dans le sous formulaire au centre de l'écran. Aucun code VBA ne doit intervenir. C'est une requête aux critères dynamiques qui doit livrer ces résultats affinés sur demande.

Sources et présentation de la problématique
Nous débutons les travaux depuis une petite base de données proposée au téléchargement. Elle se nomme gestion-immobiliere.accdb. Elle offre les données bien entendu mais propose aussi la structure du formulaire. Dans le volet des objets Access sur la gauche, vous notez la présence d'une table et d'un formulaire.
  • Double cliquer sur la table Biens pour l'afficher en mode feuille de données,
Table Access des annonces immobilières à filtrer selon les critères clients

Nous y consultons la liste des biens immobiliers proposés à la vente. Ils sont référencés sur plusieurs champs. Le niveau de détail est volontairement simplifié. Nous souhaitons en effet démontrer la méthode pour extraire les annonces correspondant aux critères des clients. Vous notez que certains champs sont formatés pour une meilleure lisibilité.
  • Cliquer sur la flèche du bouton Affichage dans le ruban Accueil,
  • Dans la liste, choisir le Mode création,
Nous affichons ainsi la table en conception. Vous notez la présence de la clé primaire sur le champ bien_id qui s'incrémente automatiquement. Il permet de définir chaque enregistrement comme unique. Cette notion est essentielle comme nous l'avons appris au travers de nos formations au gestionnaire de bases de données Access.
  • Cliquer sur le champ bien_ville pour le sélectionner,
En consultant son onglet Général, en bas de la fenêtre, nous remarquons qu'il est formaté en majuscule grâce au symbole supérieur (>), pour des raisons d'homogénéité.

Typer, dimensionner et formater les champs de table de base de données Access

Si nous sélectionnons le champ bien_superficie, nous constatons qu'il est formaté en mètres carrés (m²). Ces techniques de formatage sont identiques à celles que nous avons apprises avec Excel notamment pour créer des formats numériques personnalisés. De même, ces champs sont typés au plus juste pour préserver les ressources. Le type entier est préféré au type entier long, dont les capacités sont certes plus importantes, mais démesurées par rapport aux besoins du champ.

Si nous sélectionnons tour à tour les champs bien_prix et bien_distance, nous remarquons qu'ils sont judicieusement formatés. Ces préférences d'affichage seront précieuses pour manipuler les informations. La requête les restituera en effet. Nous avions appris toutes ces notions au travers de la formation Access sur les masques de saisie et le formatage des champs.

Les trois derniers champs sont booléens. Ils peuvent être soit Vrai, soit Faux. Sur un formulaire, ils sont fort logiquement matérialisés par une case à cocher. Nous le constaterons.

Enfin, retenez qu'il est toujours intéressant de préfixer les noms des champs du nom de la table. Ils sont ainsi facilement identifiables dans les liaisons à entreprendre.
  • Fermer la table en cliquant sur la croix de son onglet,
  • Puis, double cliquer sur le formulaire Recherche_biens depuis le volet des objets Access,
Nous l'affichons ainsi en mode exécution. Comme vous le constatez, la structure est déjà conçue. Une barre d'outils est proposée sur la droite. Elle permet d'émettre plusieurs critères à recouper, pour extraire les annonces immobilières correspondantes et issues de la table Biens. Il manque le sous formulaire au centre de l'écran, réagissant à ces conditions émises. Mais pour cela, il devra puiser sa source dans une requête. Et cette requête doit réagir dynamiquement en fonction de ces contraintes. Il s'agit de l'enjeu de cette formation.

Structure du formulaire Access pour gérer et filtrer les annonces immobilières en fonction des besoins
  • Cliquer sur la flèche du bouton Affichage dans le ruban Accueil,
  • Puis, dans la liste, choisir Mode création,
Nous accédons ainsi au formulaire en mode conception.
  • Sélectionner la première zone de saisie sur la droite, celle de la superficie,
Dans sa feuille de propriétés, nous constatons que ce contrôle est nommé superficie. Ce nom d'objet est important pour la correspondance à établir dans la construction des critères dynamiques de la requête. Remarque : Si elle n'est pas visible, la feuille de propriétés peut être affichée grâce au bouton du même nom dans le ruban Création.

Propriétés des contrôles de formulaire Access avec règles de validité pour la sécurité
  • Activer l'onglet Données de la feuille de propriétés pour le contrôle superficie,
Pour des questions d'ergonomie, une valeur par défaut et une règle de validité sont définies. Cette dernière empêche la saisie de données non numériques. De plus, les nombres inscrits doivent nécessairement être positifs. Cela va de soi pour une superficie. Si cette règle n'est pas respectée, Access n'autorisera pas la validation de l'information.

Nous bâtissons ainsi une application bien cadrée et sécurisée.

En sélectionnant tour à tour les autres contrôles, nous remarquons qu'ils se nomment respectivement nb_pieces, prix, distance et garage pour la case à cocher. Hormis pour cette dernière, des valeurs par défaut et règles de validité sont définies en cohérence.

Requête multicritère dynamique
Nous devons donc bâtir une requête sélection. Mais il ne s'agit pas d'une requête classique. Son extraction doit évoluer en fonction des conditions émises au travers des contrôles du formulaire.
  • Cliquer sur l'onglet Créer en haut de la fenêtre Access pour activer son ruban,
  • Dans la section Requêtes, cliquer sur le bouton Création de requête,
  • Dans la boîte de dialogue qui suit, ajouter la table Biens,
  • Puis, fermer la boîte de dialogue,
  • Glisser tous les champs, sauf bien_id vers la grille de requête,
Bien_id est en effet le champ de la clé primaire. Il est utile dans la construction et pour l'unicité des enregistrements. Mais il n'est pas nécessaire à l'affichage.

Créer une requête sélection Access pour filtrer dynamiquement les annonces immobilières

Il s'agit de construire des critères dynamiques sur les champs bien_superficie, bien_nb_pieces, bien_prix, bien_distance et bien_garage. Et pour cela, nous devons exploiter la zone Critères de chacune de ces colonnes.

Ces conditions sont les suivantes :
  • bien_superficie doit être supérieur ou égal à la demande émanant du formulaire depuis le contrôle superficie,
  • bien_nb_pieces doit être supérieur ou égal à la demande émanant du formulaire depuis le contrôle nb_pieces,
  • bien_prix doit être inférieur ou égal à la demande émanant du formulaire depuis le contrôle prix,
  • bien_distance doit être inférieur ou égal à la demande émanant du formulaire depuis le contrôle distance,
  • bien_garage doit être égal à la demande émanant du formulaire depuis le contrôle garage,
Ces inégalités et égalités doivent toutes être construites selon le même protocole. Il s'agit de faire la correspondance entre le champ de la requête et le contrôle correspondant du formulaire. Et pour cela, nous pouvons exploiter le générateur d'expression. Nous avions bâti ce type de requêtes dynamiques dans la formation Access pour réaliser des recherches verticales.
  • Cliquer dans la zone de critères du champ bien_superficie pour l'activer,
  • Taper l'inégalité supérieure ou égale (>=) pour débuter la syntaxe,
  • Cliquer droit à la suite dans la zone de saisie,
  • Dans le menu contextuel, choisir Créer,
Nous déclenchons ainsi l'affichage du générateur d'expression. Nous devons naviguer au travers de l'arborescence jusqu'à atteindre le formulaire et désigner son contrôle superficie. La correspondance dynamique sera ainsi établie par le biais de l'inégalité.
  • Dans la liste de gauche des éléments d'expression, déployer l'arborescence jusqu'à atteindre le formulaire Recherche_biens,
  • Cliquer sur ce dernier pour le sélectionner,
  • Dans la liste du centre des catégories d'expressions, double cliquer sur son contrôle superficie pour poursuivre la construction de la syntaxe,
Construire critère dynamique de requête pour correspondance avec la valeur du contrôle de formulaire par générateur expression

En haut du générateur d'expression, la syntaxe de la correspondance s'inscrit en effet. Nous indiquons explicitement que la superficie doit être supérieure ou égale à la valeur mentionnée par l'utilisateur dans le contrôle superficie du formulaire. Tous les enregistrements ne répondant pas à ce critère seront exclus de la sélection. Mais il s'agit de recouper cette condition avec les autres exigences potentiellement formulées dans les autres contrôles.
  • Valider ce critère en cliquant sur le bouton Ok,
De retour dans l'éditeur de requête, nous remarquons que la condition est effectivement inscrite dans la zone de critères pour le champ bien_superficie. Nous n'avons pas terminé mais il est important de sauvegarder le travail.
  • Enregistrer la requête à l'aide du raccourci clavier CTRL + S,
  • Dans la petite boîte de dialogue qui se déclenche, la nommer Selection_biens,
  • Enfin, valider par Ok,
Il s'agit désormais de reproduire exactement le même procédé pour établir les critères dynamiques de chaque colonne en faisant correspondre les champs. Nous pourrions d'ailleurs écrire directement ces syntaxes. L'objet Formulaires doit être suivi d'un point d'exclamation pour annoncer le nom du formulaire entre crochets. Et puis un nouveau point-d'exclamation permet de descendre jusqu'au contrôle nb_pieces. C'est la philosophie de la programmation orientée objet. Ici le point d'exclamation remplace le point.
  • Pour les autres champs, bâtir les critères de correspondance suivants :
Pour le champ bien_nb_pieces : >= Formulaires![Recherche_biens]![nb_pieces],
Pour le champ bien_prix : <=Formulaires![Recherche_biens]![prix],
Pour le champ bien_distance : <=Formulaires![Recherche_biens]![distance],
Pour le champ bien_garage : Formulaires![Recherche_biens]![garage],

Tous les critères dynamiques sont désormais en place. Ainsi posés sur la même ligne, ils impliquent qu'ils doivent être recoupés, donc vérifiés ensemble pour des résultats affinés à la demande.
  • Enregistrer les modifications (CTRL + S),
Si nous exécutions la requête en l'état, elle ne produirait aucun résultat. Elle ne peut fonctionner seule. Elle attend les valeurs issues du formulaire, produites à l'instant t.

Requête Access aux nombreux critères dynamiques filtrant les biens immobiliers selon les valeurs issues du formulaire

L'objectif désormais consiste à l'intégrer sur le formulaire et à la faire réagir en fonction des choix émis. Pour cela, nous allons exploiter un sous formulaire.
  • Fermer la requête en cliquant sur la croix de son onglet,
Extraction dynamique sur formulaire
Pour établir la jonction, nos travaux se poursuivent sur le formulaire en mode conception.
  • Revenir sur le formulaire en mode création,
  • Cliquer sur l'onglet Création en haut de la fenêtre pour activer son ruban,
  • Déployer la liste des contrôles de formulaire,
  • Sélectionner l'objet sous formulaire / sous état,
  • Le tracer sur le formulaire en dessous de la zone de titre et à gauche de la barre d'outils,
Un assistant se déclenche pour établir la liaison. Il s'agit de désigner la source du sous formulaire. Cette source est la requête dynamique que nous venons de construire.
  • Conserver le choix proposé par défaut : Utiliser les tables et requêtes existantes,
  • Puis, cliquer sur le bouton Suivant,
  • Choisir la requête Selection_biens à l'aide de la liste déroulante,
  • Inclure tous ses champs à l'aide de la double flèche au centre de l'assistant,
Relier un sous formulaire et une requête Access pour filtrer les résultats dynamiquement
  • Cliquer de nouveau sur le bouton Suivant,
  • Conserver le nom proposé par défaut,
  • Enfin, cliquer sur le bouton Terminer pour procéder à l'implantation du sous formulaire,
Le sous formulaire apparaît à l'endroit indiqué. Il convient d'ajuster ses dimensions, de supprimer son étiquette et de réajuster la largeur de ses champs. Ces petits travaux offrent une meilleure visibilité en mode feuille de données.
  • Enfoncer la touche F5 du clavier pour exécuter le formulaire,
Nous constatons que les annonces immobilières sont déjà filtrées. En effet les valeurs par défaut définies dans les contrôles, imposent des critères prédéfinis que la requête récupère. De fait, elle les exploite pour sa sélection restrictive. La table Biens compte en effet 31 enregistrements à l'origine.

Offres immobilières filtrées dynamiquement selon critères recoupés depuis formulaire Access

Mais fort logiquement à ce stade, si nous modifions les conditions dans les zones de saisie et que nous cliquons sur le bouton Rechercher, rien ne se produit. L'affichage est figé. Nous devons imposer l'actualisation des enregistrements pour que les nouveaux critères soient considérés sur demande.

Nous proposons de produire les résultats au clic sur le bouton. Mais nous veillerons aussi à ce qu'ils s'actualisent automatiquement. Un changement détecté dans chaque contrôle de critère doit regénérer les offres. Le procédé est trivial. Il suffit de déclencher une macro ordonnant le recalcul, au clic sur le bouton.
  • Cliquer sur le bouton Affichage du ruban Accueil,
  • Dans la liste, choisir Mode création,
  • Sur le formulaire en conception, sélectionner le bouton Chercher,
  • Activer l'onglet Evènement de sa feuille de propriétés,
  • Cliquer sur le petit bouton en regard de son évènement Au clic,
  • Dans la boîte de dialogue qui suit, choisir Générateur de macros et valider par Ok,
  • Dans l'éditeur de macros qui apparaît, sélectionner l'action AfficherTousEnreg, à l'aide de la liste déroulante,
Macro Access pour actualiser les enregistrements filtrés au clic sur le bouton de formulaire

Cette action de macro ne requiert aucun paramètre. Elle impose l'activation du formulaire, comme s'il était rechargé. En conséquence, elle commande la réactualisation des enregistrements pour considérer la mise à jour de l'environnement et donc des critères dynamiques.
  • Cliquer sur le bouton Enregistrer situé dans le ruban Création,
  • Fermer l'éditeur de macros en cliquant sur le bouton Fermer placé dans le même ruban,
  • De retour sur le formulaire en conception, l'enregistrer également (CTRL + S),
Ainsi, nous mettons à jour le lien que nous venons d'opérer entre le bouton et sa macro.
  • Exécuter le formulaire avec la touche F5 du clavier,
  • Monter la distance à 50 Km grâce à la zone de saisie dédiée,
  • Cocher la case Avec garage,
  • Puis, cliquer sur le bouton Chercher,
Comme vous le constatez, l'offre s'actualise instantanément. Elle est plus riche.

Extraction dynamique des annonces immobilières selon des critères recoupés sur formulaire Access

Nous obtenons la liste de tous les biens immobiliers dont la superficie est au mois de 50 m2 avec au minimum 3 pièces et un garage, pour un prix maximum de 100000 Euros et dans un rayon de 50 km.

Nous pouvons rendre ces extractions instantanées au fur et à mesure de la saisie des critères. Il s'agit de déclencher exactement la même action de macro, mais pas sur le même évènement. A chaque fois qu'une saisie est terminée, le contrôle correspondant doit exécuter la macro.
  • Cliquer sur la flèche du bouton Affichage du ruban Accueil,
  • Puis, choisir Mode création dans la liste,
  • Sélectionner la première zone de critère nommée superficie,
  • Dans l'onglet Evènement de sa feuille de propriétés, cliquer sur le petit bouton de son évènement Après MAJ,
Cet évènement signifie littéralement : Après mise à jour. Il se déclenche une fois la saisie terminée.
  • Dans la boîte de dialogue, choisir Générateur de macro,
  • Dans l'éditeur de macro, sélectionner l'action AfficherTousEnreg,
  • Enregistrer et fermer,
  • De retour sur le formulaire, l'enregistrer également,
  • Enfoncer la touche F5 du clavier pour l'exécuter,
  • Passer la superficie à 80 m2,
  • Puis, valider en enfonçant la touche Tab ou en cliquant dans un autre contrôle,
La liste des offres immobilières s'affine automatiquement et instantanément. Tous les biens dont la superficie est inférieure à 80 m2 sont exclus. Il s'agit de reproduire exactement la même association pour tous les autres contrôles de saisie y compris pour la case à cocher.

Si nous testons une fois toutes les macros associées, nous constatons que les résultats s'affinent automatiquement à chaque critère défini.

Dans une prochaine formation, nous verrons comment construire un formulaire d'ajout sans code VBA. Son objectif est de permettre l'insertion de nouveaux biens dans la base de données. Ainsi sur des informations constamment actualisées, le formulaire d'extraction sera d'autant plus fonctionnel.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn