Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
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.
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 Excel té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é.
Les propositions par défaut sont les bonnes.
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,
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 .
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.
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 ,
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 la
requê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 .
Enregistrer la requête sous le nom detail_clients ,
Fermer la requête .
Pour lier le
formulaire à la
requê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 .
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 ,
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.