formateur informatique

Liaison entre un formulaire Access et une requête

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Liaison entre un formulaire Access et une requête
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


Formulaire Sélection Requête
Nous allons construire une petite base de données qui lie un formulaire à une requête. Le formulaire ne contient que les informations essentielles du client. Un bouton permet d'afficher la requête en mode feuille de données, filtrant le client en cours pour afficher toutes les autres informations le concernant. Nous allons commencer par récupérer les données qui sont issues d'un tableau Excel.

Liaison avec Excel - Importer des données
Les données que nous souhaitons importer dans une nouvelle base de données Access représentent une liste de clients comme le montre la capture ci-dessous. Données Excel à importer dans Access
  • Démarrer Access,
  • Créer une base de données vide en la nommant form_sel_req par exemple,
  • Fermer la fenêtre de la suggestion de création de table qui est proposée.
Nous n'allons pas créer cette table manuellement puisque nous allons l'importer.
  • Cliquer sur l'onglet Données externes pour activer son ruban,
  • Cliquer sur le bouton Excel de la section Importer et lier,
  • Dans la boîte de dialogue cliquer sur le bouton Parcourir et sélectionner le fichier Exceltéléchargé,
  • Cocher la case Importer les données sources..., et cliquer sur Ok,
L'assistant importation apparaît alors. Il affiche par défaut les données trouvées sur la première feuille du classeur. Il s'agit bien du tableau Excel des clients que nous avons téléchargé.
Assistant importation Excel vers Access
Les propositions par défaut sont les bonnes.
  • Cliquer sur Suivant,
Dans cette nouvelle étape, Access propose de considérer la première ligne comme la ligne des titres du tableau, soit la ligne d'en-tête. C'est pourquoi la case est cochée.
  • Ce choix est judicieux, cliquer sur Suivant,
Nous arrivons dans l'étape des options de champs. Cette étape est cruciale car, comme vous le savez, le dimensionnement des champs doit être réalisé au plus juste. Les tables constituent l'ossature de la base de données.
  • Sélectionner le champ Nom depuis l'assistant en cliquant sur son étiquette de colonne,
  • Dans la liste déroulante Indexé, choisir Oui avec doublons,
Un champ indexé accélère les recherches sur des éléments importants. Le Nom est potentiellement un élément sur lequel des recherches seront régulièrement effectuées pour retrouver les informations du client.
  • Sélectionner ensuite le champ Montant,
  • Lui attribuer le type de données Monétaire à l'aide de la liste déroulante correspondante,
Type de données des champs en importation de données
  • Sélectionner enfin le champ Date,
  • Lui attribuer le type de données Date et heure et cliquer sur Suivant,
  • Cocher la case Choisir ma propre clé primaire et sélectionner le champ NOM avec la liste,
  • Cliquer sur Suivant,
  • Nommer la table Clients et cliquer sur Terminer,
Un message d'erreur Modifications non effectuées... s'affiche. En effet, la clé primaire est un champ dans lequel les valeurs doivent être uniques car son objectif est d'identifier de façon unique chaque enregistrement. Or des homonymes existent pour le champ NOM.
  • Cliquer sur Ok.
Access crée quand même la table sans attribuer de clé primaire. Tant mieux car le champ NOM est très peu indiqué pour porter la clé primaire. Comme rien n'est irréversible tant que nous n'avons pas bâti tous les autres objets sur les tables, il est encore temps de créer manuellement un champ approprié pour cette clé. La table Clients apparaît dans la liste des objets Access du volet sur la gauche de la fenêtre. Comme il existe des doublons sur le champ nom, nous allons réaliser une requête pour en avoir le coeur net.
  • Double cliquer sur la table Clients depuis le volet de gauche pour l'ouvrir en Feuille de données,
Comme vous le remarquez et comme l'illustre la capture ci-dessous, les champs ont été formatés selon nos réglages. Le champ Montant apparaît en Euro avec 2 décimales tandis que le champ Date apparaît formaté en date abrégée.
Resultat importation tableau Excel dans table Access

Requête - Trouver les doublons
  • Cliquer sur l'onglet Créer pour activer son ruban,
  • Cliquer ensuite sur le bouton Assistant Requête de la section Requêtes,
  • Dans la boîte de dialogue, sélectionner Assistant requête trouver les doublons,
  • Puis cliquer sur Ok,
  • Dans l'étape qui suit, choisir la Table : Clients et cliquer sur Suivant,
La recherche des doublons doit être faite sur le champ Nom.
  • Double cliquer sur le champ Nom depuis la liste de gauche pour le basculer dans la liste de droite et cliquer sur Suivant,
Nous souhaitons afficher tous les autres renseignements avec les doublons trouvés. Donc, dans l'étape qui suit :
  • Basculer tous les champs restants dans la liste de droite,
  • Cliquer sur Suivant,
  • Nommer cette requête doublons-clients et cliquer sur Terminer,
La requête affiche en effet deux enregistrements pour lesquels les noms sont équivalents.
  • Modifier le deuxième nom GATHOR en GATHOR1,
  • Fermer la requête en l'enregistrant.
Il n'existe plus de doublons. Si vous double cliquez sur la requête depuis le volet de gauche, vous constaterez que cette fois, son résultat est vide. Certes nous n'avions pas à modifier le nom, l'objectif est de créer un champ clé primaire pour identifier de façon unique chacun des enregistrements. Mais ces manipulations avaient pour vocation de montrer les étapes qui permettent de retrouver des doublons depuis des sources de données externes comme internes.
  • Ouvrir la table Clients en mode création,
  • Cliquer avec le bouton droit de la souris sur l'entête de ligne du champ Civilité,
  • Dans le menu contextuel, cliquer sur Insérer des lignes,
  • Nommer ce nouveau champ num_client,
  • Lui attribuer le type de données NuméroAuto,
  • Cliquer avec le bouton droit de la souris sur l'entête de ligne de ce nouveau champ,
  • Dans le menu contextuel, cliquer sur Clé primaire,
Création champ clé primaire table Access
Le type NuméroAuto attribue automatiquement un nouveau numéro à chaque client. Ainsi ils sont reconnus de façon unique. Dès lors nous pouvons poser la clé primaire, indispensable pour toute table de base de données.
  • Enregistrer les modifications et fermer la table.

Conception du formulaire
Nous allons construire un formulaire ne présentant que certains renseignements (Nom, Prénom et Montant) sur les clients. Tous les autres seront disponibles via une requête liée à ce formulaire et présentés en mode feuille de données.
  • Activer le ruban Créer,
  • Cliquer sur le bouton Assistant formulaire,
  • Sélectionner les champs NOM, PRENOM et MONTANT,
  • Cliquer sur Suivant,
  • Choisir le mode de disposition en colonne simple et cliquer sur suivant,
  • Conserver le nom Clients et cliquer sur Terminer,
Le formulaire s'affiche instantanément en mode Formulaire et apparaît dans le volet de gauche dans la liste des objets Access. Il permet de consulter, modifier et ajouter des clients. Nous allons maintenant concevoir la requête qui permettra d'afficher tous les autres renseignements en fonction du nom du client sélectionné depuis le formulaire.


Conception de la requête
  • Fermer le formulaire,
  • Dans le ruban Créer, cliquer sur le bouton Création de requête,
  • Dans la boîte de dialogue, sélectionner table clients et cliquer sur le bouton Ajouter puis Fermer,
  • Glisser tous les champs de la table sur la grille de requête,
Pour faire correspondre les informations du formulaire avec la requête en fonction du nom du client, nous devons ajouter un critère qui effectue cette correspondance sur le champ Nom de larequête.
  • Cliquer avec le bouton droit de la souris dans la zone Critères du champ Nom,
  • Dans le menu contextuel, cliquer sur Créer,
Nous affichons ainsi le générateur d'expression qui va nous aider à faire la correspondance avec le champ Nom du formulaire.
  • Dans la liste des éléments d'expression, déployer l'arborescence des formulaires et sélectionner le formulaire Clients,
  • Dans la liste centrale, double cliquer sur le champ NOM du formulaire pour le désigner,
Vous remarquez que l'expression de correspondance s'établit alors dans la zone de saisie en haut du générateur d'expressions.
  • Cliquer sur Ok pour valider,
L'expression s'affiche alors dans la zone Critères du champ NOM.
Liaison requête et formulaire par générateur expression
  • Enregistrer la requête sous le nom detail_clients,
  • Fermer la requête.
Pour lier le formulaire à larequête, nous allons concevoir une macro et nous verrons ensuite comment la même action peut être très simplement définie à l'aide du code VBA.

Conception de la macro
  • Dans le ruban Créer, cliquer sur le bouton Macro,
  • Dans la liste des actions, sélectionner tout d'abord l'action RestaurerFenêtre,
Cette action permettra de ne pas afficher le formulaire en plein écran.
  • Ajouter ensuite l'action OuvrirRequête,
  • Et choisir la requête detail_clients dans la zone Nom de la requête,
  • Conserver l'affichage Feuille de données et le mode de données Modification,
  • Ajouter de nouveau l'action RestaurerFenêtre,
  • Enregistrer la macro sous le nom lien_form_req,
  • Fermer la macro.
La capture ci-dessous résume les actions que nous avons ajoutées à cette macro.
Actions macro lien formulaire avec requête
La macro pour être exécutée, doit être appelée par un bouton du formulaire. Nous devons construire ce bouton.

Création du lien Formulaire - Requête
  • Ouvrir le formulaire Clients en mode création,
  • Ajouter un bouton sur le formulaire à l'aide des contrôles du ruban création,
  • Annuler l'assistant qui se déclenche,
  • Saisir le texte Afficher détails sur le bouton,
  • Dans la feuille de propriétés du bouton, sélectionner l'onglet Evénement,
  • Régler l'événement Sur Clic sur la macro lien_form_req,
Bouton formulaire avec macro exécuter requête
  • Enregistrer le formulaire,
  • L'afficher en mode Formulaire,
  • Naviguer jusqu'au troisième enregistrement par exemple,
  • Cliquer sur le bouton Afficher détails,
Comme vous le constatez, toutes les autres informations du client en cours, s'affichent en mode feuille de données de la requête, dans un nouvel onglet. C'est une information qui est consultable sur demande uniquement, ce que nous souhaitions. Voyons maintenant comment la même action peut être réalisée à l'aide de VBA.

Lien par le code VBA
Commençons par ajouter un second bouton sur le formulaire pour exécuter le code VBA.
  • Afficher le formulaire en mode conception,
  • Ajouter un second bouton sur l'interface à côté du précédent en annulant l'assistant,
  • Dans la feuille de propriétés de ce nouveau bouton, sélectionner l'onglet Evénement,
  • Cliquer sur le petit bouton à trois points à l'extrémité droite de l'événement Sur clic,
  • Dans la boîte de dialogue, double cliquer sur Générateur de code,
Vous basculez ainsi dans l'éditeur de code VBA.
  • Entre les bornes de la procédure (Private Sub et End Sub), saisir la ligne de code suivante : DoCmd.OpenQuery 'detail_clients ',
L'objet DoCmd est un objet qui permet d'utiliser une grande partie des propriétés et méthodes de VBA Access. Ainsi la méthode OpenQuery permet d'ouvrir la requête désignée en paramètre et entre guillemets (detail_clients ici).
  • Enregistrer ce code,
  • Fermer la fenêtre de l'éditeur,
  • Exécuter le formulaire en mode formulaire,
  • Naviguer jusqu'au cinquième enregistrement par exemple,
  • Cliquer sur ce nouveau bouton.
Vous le constatez, le résultat est identique au précédent mais les méthodes diffèrent.

 
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