formateur informatique

Charger les villes d'un code postal avec Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Charger les villes d'un code postal avec Access
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 :


Villes du code postal

Cet exercice Access est destiné à améliorer l'un de nos formulaires d'action. Il s'agit précisément du formulaire dédié pour créer un nouveau client. Nous avions abouti son développement dans un exercice précédent. Pour une meilleure ergonomie, à la saisie d'un code postal, nous voulons proposer dynamiquement toutes les villes attachées. Ainsi l'utilisateur n'aura plus qu'à choisir dans la liste. L'autre intérêt est d'homogénéiser les inscriptions et d'éviter les différences dues aux erreurs potentielles d'orthographe.

Sources et présentation de la problématique
Afin de compléter les précédents développements, nous devons commencer par réceptionner l'application au dernier indice. La décompression fournit le fichier de la base de données accompagné d'un fichier texte. Celui-ci renferme la syntaxe de correspondance nécessaire pour atteindre les contrôles d'un formulaire encapsulé dans une navigation à onglets. Et souvenez-vous, ces formulaires d'action sont situés au deuxième étage de cette imbrication. Nous avons en effet intégré une navigation verticale dans une navigation horizontale par onglets.
  • Double cliquer sur le fichier de la base de données pour l'ouvrir dans Access,
  • Dans la boîte de dialogue qui s'impose, taper le mot de passe d'accès : abc,
  • Cliquer ensuite sur le bouton Activer le contenu du bandeau de sécurité,
  • Du fait de la régénération, valider de nouveau le même mot de passe,
Nous le savons pertinemment désormais, c'est le formulaire principal de navigation qui se propose à l'ouverture. Il regroupe tous les outils de gestion de l'application. Ce sont les onglets respectifs qui permettent de les atteindre.
  • Cliquer sur l'onglet Outils actions tout à fait à droite,
  • Dans la boîte de dialogue qui se déclenche, taper le mot de passe administrateur : abc123,
Dès lors, la seconde navigation imbriquée est ouverte. Nous avions en effet protégé ces formulaires qui influent directement sur les données source.

Formulaire Access pour créer de nouveaux clients imbriqué dans une navigation à onglets à deux étages

Et dans cette navigation verticale, c'est l'onglet Créer un client qui est actif par défaut. Il affiche donc le formulaire qui nous intéresse. A la saisie d'un numéro dans la zone de texte Code postal, une liste déroulante doit se remplir en lieu et place de la zone de saisie Ville du client.

Requête de correspondance
L'astuce, nous la connaissons bien désormais. Elle consiste à bâtir en amont une requête capable de filtrer les villes en fonction de l'information sur le code postal, détenue par le formulaire. La syntaxe de correspondance que nous évoquions est donc essentielle pour atteindre ce contrôle enfermé en profondeur dans la navigation.
  • Fermer le formulaire de navigation en cliquant sur la croix de son onglet,
  • 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, sélectionner la table Communes,
  • Puis, cliquer sur le bouton Ajouter et sur le bouton Fermer,
  • Glisser alors les champs Commune_nom et Commune_dep sur la grille de requête,
  • Cliquer droit dans la zone Critères du champ Commune_dep,
  • Dans le menu contextuel, choisir Créer pour afficher le générateur d'expression,
  • Dans le générateur, taper l'opérateur Comme suivi d'un espace,
Nous souhaitons en effet proposer des choix concordants avec des saisies pas nécessairement abouties. Nous devrons donc concaténer cette expression avec le symbole de l'étoile, comme nous l'avons démontré dans des exercices passés. Pour atteindre le contrôle du code postal sur le formulaire, la syntaxe de correspondance est essentielle.
  • A la racine du dossier de décompression, double cliquer sur le fichier texte,
  • Sélectionner l'intégralité de la syntaxe (CTRL + A),
  • La copier (CTRL + C) et revenir sur le générateur d'expression dans Access,
  • A la suite, coller (CTRL + V) cette syntaxe prélevée,
  • Puis, en bout de ligne, ajouter le nom du contrôle à atteindre, entre crochets : [CP],
  • Taper ensuite le caractère de concaténation suivi de l'étoile entre guillemets : & '*',
Etablir la correspondance avec une zone de saisie du formulaire dans expression du critère de la requête Access

Le critère de la requête est limpide. Il consiste à limiter la sélection des communes en fonction des premiers numéros renseignés depuis le formulaire, pour le code postal.
  • Cliquer sur le bouton Ok du générateur pour valider l'expression,
  • Puis, enregistrer la requête sous le nom : R_Villes_CP,
Comme vous l'avez compris, cette requête ne peut produire aucun résultat seule. Sa condition se nourrit de l'information issue du formulaire au moment de la demande.

Correspondance Villes et Code postal
Sur le formulaire, nous devons désormais retranscrire ce lien dynamique. Tout d'abord, la zone de saisie pour la commune doit être transformée en une liste déroulante. Et le contenu de cette liste, doit se charger en fonction des informations récoltées par la requête que nous venons de bâtir.
  • Fermer la requête en cliquant sur la croix de son onglet,
  • Dans le volet de navigation, cliquer droit sur le formulaire F_creer_client,
  • Dans le menu contextuel, choisir Mode création,
  • Sur le formulaire en conception, cliquer droit sur la zone de texte de la ville,
  • Dans le menu contextuel, pointer sur la rubrique Remplacer par,
  • Dans le sous menu qui apparaît, choisir Zone de liste déroulante,
Remplacer une zone de texte par une liste déroulante sur un formulaire Access

Nous venons de modifier la nature du contrôle, tout en conservant ses attributs comme son nom.
  • Activer alors l'onglet Données de sa feuille de propriétés,
  • Dans son attribut Contenu, désigner la requête R_Villes_CP avec la liste déroulante,
Définir le contenu de la liste déroulante sur le formulaire par une requête Access dynamique

Désormais, cette liste déroulante doit se nourrir du contenu extrait par la requête que nous avons construite précédemment. Mais comme vous le savez, il est nécessaire d'actualiser les sources de données sur événement. Et pour éviter tout conflit, étant donnée la profondeur d'incrustation du formulaire, nous suggérons de résoudre ce cas par un fragment de code VBA Access. D'ailleurs et vous le constaterez, la mise en oeuvre est aussi simple qu'une macro du même genre, si ce n'est plus.
  • Sélectionner la zone de texte du code postal,
  • Activer l'onglet Evènement de sa feuille de propriétés,
  • Cliquer sur le petit bouton placé à l'extrémité droite de son évènement Après MAJ,
Littéralement, cet évènement permet de déclencher des actions après mise à jour de la zone de texte. En d'autres termes, dès qu'une saisie est considérée comme validée, l'événement intervient.
  • Dans la boîte de dialogue qui suit, choisir Générateur de code et valider par Ok,
Nous basculons ainsi dans l'éditeur de code VBA Access, entre les bornes de la procédure évènementielle : CP_AfterUpdate. Son code se déclenchera après mise à jour.
  • Entre les bornes de la procédure, saisir l'instruction suivante : DoCmd.Requery,
Private Sub CP_AfterUpdate()

DoCmd.Requery

End Sub


DoCmd est un objet de programmation VBA Access. Il s'agit de la contraction de l'expression DoCommand. Requery est l'une de ses méthodes. Elle force le recalcul et l'actualisation des sources de données.
  • Enregistrer les modifications (CTRL + S) et revenir sur le formulaire en conception,
  • L'enregistrer à son tour en cliquant sur la disquette dans la barre d'accès rapide par exemple,
  • Fermer ensuite le formulaire en cliquant sur la croix de son onglet,
  • Dans le volet de navigation, double cliquer sur le formulaire _F_navig_principal,
  • Activer ensuite l'onglet Outils actions et valider le mot depasse : abc123,
  • Taper alors un code postal dans la zone de saisie prévue à cet effet,
  • Puis, déployer la liste déroulante des villes,
Liste déroulante Access propose les villes en fonction du code postal saisi

Comme vous pouvez le voir, la liste déroulante s'est chargée dynamiquement, uniquement des villes en conformité avec le code postal renseigné. Cette fonctionnalité est précieuse pour améliorer notre application. Elle offre confort et rapidité. Mais elle sécurise aussi l'insertion des informations. Aucune ville n'apparaîtra avec des orthographes différentes. Nous contribuons donc à homogénéiser les données de la société.

Si vous tapez un autre code postal, la liste des villes concordantes s'actualise aussitôt bien entendu.

Remarque : Dans la requête, nous avons pris soin d'exploiter l'opérateur Comme afin de proposer des choix sur les premiers caractères tapés et pas nécessairement l'intégralité. Vous l'avez sans doute constaté, nous avons veillé à bien sécuriser l'application, en amont par des réglages sur les tables. De fait, la saisie d'un code postal ne comportant pas les 5 chiffres n'est pas autorisée. Libre à vous de faire sauter ce garde-fou, en supprimant le masque de saisie associé à ce contrôle.

Formulaire Access de création de nouveaux clients avec villes intuitives selon code postal renseigné

Notre formulaire est désormais plus abouti et fonctionnel. Si vous renseignez l'intégralité des informations requises et que vous les validez, le client est bien créé en intégrant la ville dynamiquement rapatriée. Sachez de plus que cette liste n'interdit pas de saisir une commune non connue. En effet, nous avons conservé sa propriété Limiter à liste réglée sur non.

 
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