formateur informatique

Formulaire d'ajout d'enregistrements avec Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Formulaire d'ajout d'enregistrements 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 :


Formulaire Access d'ajout de données

Dans la formation Access précédente, nous avons bâti un formulaire capable d'extraire les biens immobiliers en corrélation avec des critères recoupés. Ces critères étaient émis à partir d'une petite barre d'outils offrant des contrôles de saisie notamment. Et c'est une requête dynamique, une fois encore, qui avait apporté la solution. Nous l'avions utilisée comme source du sous formulaire.

Dans cette suite, nous souhaitons proposer un outil permettant d'ajouter de nouveaux biens dans la base de données. Le tour de force consiste là aussi, à contourner VBA. Et nous allons le constater, c'est une fois de plus une requête qui va permettre de dénouer le problème. Mais cette requête doit agir. On parle de requête action.

Sources et présentation de la problématique
Nous proposons de débuter les travaux précisément là où nous les avions laissés. C'est pourquoi la source est offerte au téléchargement. Nous récupérons ainsi la base de données gestion-immobiliere.accdb.
  • Double cliquer sur le fichier pour l'ouvrir dans Access,
  • Puis, cliquer sur le bouton Activer le contenu du bandeau de sécurité,
Comme l'illustre le volet des objets Access sur la gauche de l'écran, cette base de données est constituée d'une table, de la requête dynamique, de deux formulaires et d'un sous formulaire. Le sous formulaire est attaché au formulaire Recherche_biens. C'est lui qui se remplit des informations dynamiques issues de la requête répondant aux critères émis.
  • Double cliquer sur le formulaire Recherche_biens,
Nous retrouvons en effet le résultat des travaux de la formation précédente.
  • Modifier certaines conditions dans la barre d'outils située sur la droite du formulaire,
L'offre des biens immobiliers s'actualise en conséquence, dans le sous formulaire situé au centre de l'écran.

Application Access pour gérer les offres immobilières avec un formulaire

Nous souhaitons enrichir cette offre en fonction des nouveaux biens qui entrent sur le marché. Nous devons permettre d'ajouter un nouvel enregistrement dans la table Biens, au clic sur un bouton de formulaire. La requête dynamique se nourrit en effet des informations de cette table.
  • Fermer le formulaire en cliquant sur la croix de son onglet,
  • Dans le volet des objets Access, double cliquer sur la table Biens,
Nous l'affichons ainsi en mode feuille de données. Nous y constatons la présence des biens référencés sur plusieurs champs. Ce niveau de détail a volontairement été simplifié pour ne pas parasiter les démonstrations. Les noms de ces champs sont importants. Nous allons devoir y faire référence pour produire une requête capable d'ajouter dans chaque colonne correspondante, les informations saisies par l'utilisateur depuis le formulaire.

Formulaire d'ajout
Le formulaire d'insertion doit permettre de renseigner chacun des champs de la table Biens, pour ajouter une nouvelle entrée. Il existe déjà afin que nous puissions nous concentrer sur l'essentiel. Il s'agira de bâtir la requête dont il faudra commander l'exécution.
  • Fermer la table Biens en cliquant sur la croix de son onglet,
  • Dans le volet des objets Access, double cliquer sur le formulaire Ajout_biens,
Formulaire Access pour insérer de nouveaux biens immobiliers en base de données

Vous notez la présence des contrôles de saisie correspondant aux informations de champs nécessaires pour enrichir la table source. De même, trois cases à cocher sont positionnées pour honorer les champs de type Oui/Non que nous avions présentés dans la formation précédente.

Avant d'entrer dans le vif du sujet, quelques prises de repères sont nécessaires. Pour cela, nous proposons d'accéder au formulaire en conception.
  • Dans le ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans la liste, choisir Mode création,
La feuille de propriétés doit être disponible grâce au bouton du même nom dans le ruban création.

En sélectionnant les contrôles tour à tour, nous constatons qu'ils se nomment respectivement Ville, Prix, Superficie, nb_pieces, Distance, Terrain, Garage et Exclu. Cette indication est fournie par la feuille de propriétés qui adapte ses informations contextuellement. Ces noms sont précieux car ils désignent les objets auxquels nous devrons faire référence dans la requête dynamique d'insertion. C'est ainsi que nous pourrons définir pour chaque champ, le contenu à insérer, afin de créer un nouvel enregistrement. Grâce à l'onglet Données, nous remarquons que des valeurs par défaut et règles de validité sont paramétrées pour chacun. Par exemple, il n'est pas permis d'ajouter un nouveau bien lorsque la ville n'est pas renseignée.

Nous sécurisons ainsi les actions et protégeons les données source de la base. D'ailleurs, ces règles sont aussi définies sur chacun des champs dans la table Source. L'objectif est d'empêcher l'insertion malencontreuse d'informations non maîtrisées.

Requête dynamique d'insertion
Dans la formation précédente, nous avons bâti une requête dynamique attendant les valeurs des contrôles du formulaire pour émettre son extraction sélective. Ici, le principe est le même. Mais la nature de la requête change. Il ne s'agit plus d'une requête sélection. Selon les informations récupérées dynamiquement, elle doit créer un nouvel enregistrement dans la table Biens de la base de données. De fait, il sera directement disponible depuis notre formulaire de gestion des offres.
  • En haut de la fenêtre Access, cliquer sur l'onglet Créer pour activer son ruban,
  • Dans la section Requêtes, cliquer sur le bouton Création de requête,
  • Dans la petite boîte de dialogue qui suit, cliquer sur le bouton Fermer,
En effet, la nature de cette requête est particulière.
  • Dans le ruban Accueil, cliquer sur le bouton Ajout,
Ainsi, nous la transformons en requête Insertion.
  • Puis, dans la boîte de dialogue qui suit, régler la zone Nom de la table sur Biens, et valider,
De cette manière, nous définissons quelle est la table de réception des informations. Vous constatez l'apparition d'une ligne spécifique : Ajouter à, dans la grille de requête.

Créer une requête Ajout enregistrements avec Access

Précisément, dans cette grille de requête, nous devons tout d'abord définir les champs de réception pour ces informations dynamiques. Et puis, nous définirons les données dynamiques, émanant des contrôles du formulaire, à insérer dans chacun d'entre eux.
  • Sur la ligne Ajouter à, définir tour à tour les champs bien_ville, bien_superficie, bien_nb_pieces, bien_prix, bien_distance, bien_terrain, bien_garage et bien_excl,
Et pour chacun d'entre eux, nous devons faire la correspondance avec le contrôle issu du formulaire afin de récupérer son contenu à l'instant de la demande.
  • Dans la première colonne, pour le champ bien_ville, dans la zone Champ, cliquer droit,
  • Dans le menu contextuel, choisir Créer,
Liens dynamiques de requête Insertion Access avec contrôles de formulaire

Nous accédons ainsi au générateur d'expression. Il permet de désigner un contrôle du formulaire notamment. Ainsi, nous établirons la correspondance pour spécifier quelle donnée doit être insérée dans ce champ.
  • Dans la liste de gauche des éléments d'expression, déployer l'arborescence jusqu'à atteindre le formulaire Ajout_biens,
  • Cliquer sur ce dernier pour le sélectionner,
  • Dans la liste du centre des catégories d'expressions, double cliquer sur le contrôle Ville,
Correspondance dynamique entre un champ de requête Ajout et un contrôle de formulaire Access

C'est ainsi que nous créons le lien dynamique. Vous notez à ce titre que la syntaxe s'inscrit dans la partie supérieure de la boîte de dialogue du générateur d'expression.
  • Cliquer sur le bouton Ok pour finaliser la correspondance,
Nous venons de signifier qu'au moment de la demande, au clic sur le bouton, la valeur saisie depuis le formulaire dans le contrôle nommé ville, doit être insérée dans le champ bien_ville de la table Biens.

Nous devons reproduire exactement les mêmes manipulations à l'aide du générateur d'expression, pour faire la correspondance entre chaque champ de la table et chaque contrôle du formulaire.
  • Selon le même procédé, dans les colonnes allouées, bâtir les expressions respectives :
Dans le champ bien_ville : Expr1: [Formulaires]![Ajout_biens]![Ville],
Dans le champ bien_superficie : Expr2: [Formulaires]![Ajout_biens]![Superficie],
Dans le champ bien_nb_pieces : Expr3: [Formulaires]![Ajout_biens]![nb_pieces],
Dans le champ bien_prix : Expr4: [Formulaires]![Ajout_biens]![Prix],
Dans le champ bien_distance : Expr5: [Formulaires]![Ajout_biens]![Distance],
Dans le champ bien_terrain : Expr6: [Formulaires]![Ajout_biens]![Terrain],
Dans le champ bien_garage : Expr7: [Formulaires]![Ajout_biens]![Garage],
Dans le champ bien_excl : Expr8: [Formulaires]![Ajout_biens]![Exclu],

Liaisons dynamiques champs de requête Ajout Access et contrôles de formulaire

Une fois toutes les expressions construites, cette requête n'attend plus qu'à être exécutée pour insérer dans chaque champ de la table, les valeurs correspondantes issues des contrôles du formulaire.
  • L'enregistrer par le raccourci clavier CTRL + S,
  • Dans la boîte de dialogue qui suit, la nommer par exemple : Ajout_bien,
  • Puis la fermer en cliquant sur la croix de son onglet,
Vous remarquez qu'elle est repérée par une icône différente et explicite dans le volet des objets Access.

Ajouter des enregistrements au clic sur un bouton
Pour ordonner l'ajout d'enregistrement au clic, l'astuce comme souvent, consiste à exécuter une macro sur événement. Cet évènement concerne le clic sur le bouton Ajouter. Mais nous allons le constater, pour des insertions maîtrisées, des ajustements et réglages vont s'avérer nécessaires. Nous avons en effet défini des règles interdisant l'ajout d'enregistrements, lorsque notamment certains champs ne sont pas renseignés. Mais les codes et donc les macros, sont insensibles à ces réglages destinés aux actions humaines.
  • Revenir sur le formulaire en mode création,
  • Sélectionner le bouton Envoyer,
  • Activer l'onglet Evènement de sa feuille de propriétés,
  • Cliquer sur le bouton de son évènement Au clic,
  • Dans la boîte de dialogue qui suit, choisir Générateur de macro et valider par Ok,
  • Dans l'éditeur de macro, avec la liste déroulante, sélectionner l'action OuvrirRequête,
  • Dans la zone Nom de la requête, choisir la requête action Ajout_bien,
  • Dans la zone Mode de données, choisir Lecture seule,
Paramétrer requête Access pour exécuter requête Ajout au clic sur bouton de formulaire
  • Enregistrer les modifications (CTRL + S),
  • Fermer l'éditeur de macro en cliquant sur la croix de son onglet,
  • Exécuter le formulaire avec la touche F5 du clavier,
  • Renseigner tous les champs pour créer un nouveau bien,
  • Cliquer sur le bouton Ajouter,
Une première alerte se déclenche indiquant que nous allons exécuter une requête Ajout.
  • Cliquer sur le bouton Oui,
Une seconde alerte se déclenche indiquant que nous allons insérer une ligne dans la table de réception.
  • Cliquer de nouveau sur Oui,
  • Ouvrir la table Biens,
Tout en bas de la liste, nous constatons la présence du nouveau bien immobilier qui a été ajouté dynamiquement. Mais pour des raisons d'ergonomie, nous souhaiterions couper ces alertes à répétition. Et ce n'est pas tout.
  • Fermer la table Biens,
  • Revenir sur le formulaire,
  • Le fermer en enregistrant les modifications (celles de la macro ajoutée),
  • Double cliquer sur le formulaire Ajout_bien depuis le volet de gauche pour l'exécuter,
Nous l'avons ainsi vidé des anciennes valeurs conservées en mémoire.
  • Cliquer directement sur le bouton Ajouter sans renseigner les champs,
  • Puis ouvrir la table Biens et accéder à la fin de la liste,
Comme vous le constatez, bien que les enregistrements n'aient pas été renseignés et malgré les règles de validité, la macro a procédé à l'insertion d'un enregistrement vide. Il est désormais parasite.
  • Supprimer cet enregistrement par clic droit/Supprimer sur l'étiquette de ligne,
Dans une macro, il est possible d'émettre des conditions à vérifier, avant d'exécuter des actions. A l'instar de la fonction Excel Si, elle permet de vérifier si les champs sont remplis. Si tel est le cas, alors nous pouvons exécuter la requête Ajout.
  • Revenir sur le formulaire en conception,
  • Sélectionner le bouton,
  • Cliquer sur le bouton de son évènement Au clic pour revenir dans l'éditeur de macro,
  • Dans le volet de droite, Catalogue d'actions, double cliquer sur l'action Si,
  • A droite de la zone expression conditionnelle, cliquer sur le bouton du générateur d'expression,
  • Déployer l'arborescence jusqu'à sélectionner le formulaire Ajout_bien,
  • Double cliquer sur le champ Ville pour l'ajouter dans la syntaxe,
  • Inscrire l'inégalité : <>'' à la suite, consistant à vérifier que le champ est bien renseigné,
  • Cliquer sur Ok pour valider l'expression,
  • Sélectionner l'action OuvrirRequête et la glisser entre le Si et le Fin Si,
  • Cliquer sur le lien Sinon en bas de l'action du Si,
  • Ajouter l'action ZoneMessage,
  • Renseigner le message suivant : Tous les champs doivent être remplis,
  • Puis renseigner le titre : Attention,
Certes ici, nous ne posons le critère que sur le champ Ville. L'objectif est de démontrer la procédure. Il s'agirait d'inclure d'autres instructions Si, les unes dans les autres, pour vérifier en cascade la validité de saisie de chacun des champs.
  • Dans le ruban Création en haut de la fenêtre, cliquer sur le bouton Afficher toutes les actions,
Des possibilités obscures jusqu'alors masquées sont dès lors révélées. En effet, Access considère que de telles actions ne peuvent pas être enclenchées sans une certaine maîtrise.

Boîte de message et macro Access vérifiant des conditions et critères pendant exécution
  • De fait, ajouter l'action Avertissements, invisible jusqu'alors,
  • Conserver le réglage sur Non,
  • La glisser dans la branche du Si au-dessus de l'action OuvrirRequête,
Ainsi, elle agira en amont. Elle empêchera le déclenchement des alertes suite à l'exécution de la requête Ajout.
  • Enregistrer la macro et la fermer,
  • De retour sur le formulaire, l'enregistrer également (CTRL + S),
  • L'exécuter avec la touche F5 du clavier,
  • Puis, cliquer directement sur le bouton Ajouter,
Message alerte au clic sur bouton de formulaire par macro Access vérifiant que les champs ne sont pas vides

Comme vous le constatez, l'alerte que nous avons programmée se déclenche instantanément. Grâce à la branche Sinon de l'action Si, l'ajout de données est interdit lorsque les champs ne sont pas renseignés. D'ailleurs, si vous consultez la table Biens, aucun nouvel enregistrement n'est à signaler. Nous sécurisons l'application et le formulaire d'insertion.
  • Cette fois, renseigner intégralement les champs,
  • Puis, cliquer sur le bouton Ajouter,
Rien ne semble se produire. En effet, plus aucune alerte n'est déclenchée grâce à l'action Avertissements réglée sur Non.
  • Ouvrir la table Biens et accéder à la fin des enregistrements,
Nous constatons que l'insertion du nouveau bien s'est parfaitement déroulée. Mais à ce stade, un problème de taille persiste. Le formulaire n'est pas réinitialisé. Rien n'empêche d'exécuter une seconde insertion identique par mégarde. La solution consiste, toujours par action de macro, à fermer le formulaire puis à le rouvrir. Il sera ainsi purgé des données qu'il avait conservées en mémoire.
  • Revenir en mode création du formulaire,
  • Sélectionner le bouton,
  • Cliquer sur le bouton de son évènement Au clic pour revenir dans l'éditeur de macro,
  • Choisir l'action FermerFenêtre,
  • Dans la zone Type d'objet, choisir Formulaire,
  • Dans la zone Nom d'objet, désigner le formulaire Ajout_biens,
  • Dans la zone Enregistrer, choisir Oui pour éviter les alertes,
  • Glisser cette action dans la branche Si, sous l'action OuvrirRequête,
  • Juste en-dessous, ajouter l'action OuvrirFormulaire,
  • Dans la zone Nom du formulaire, désigner le formulaire Ajout_biens,
  • Conserver les autres réglages par défaut,
  • Enregistrer les modifications,
  • Fermer l'éditeur de macro pour revenir sur le formulaire en conception,
  • Enregistrer également le formulaire pour mettre à jour le lien avec la macro modifiée,
Macro Access multi action et gérant les critères et exécutée au clic sur un bouton de formulaire
  • Renseigner intégralement un nouveau bien,
  • Cliquer sur le bouton Ajouter,
Aucune alerte n'est à signaler. De plus, le formulaire est vidé des précédentes données. De fait, si nous cliquons de nouveau sur le bouton Ajouter dans la foulée, notre méprise est interceptée par la macro. L'alerte se déclenche et l'insertion est avortée.
  • Ouvrir la table Biens et accéder à la fin des enregistrements,
Nous constatons la présence de la nouvelle Offre. Voyons maintenant ce qu'il en est sur le formulaire multicritère.
  • Double cliquer sur le formulaire Recherche_biens,
Moyennant quelques réglages éventuels de critères, nous constatons l'apparition des biens dynamiquement ajoutés, répondant aux conditions recoupées.

Il est donc à retenir la puissance des requêtes dynamiques qui décidément permettent d'articuler l'ensemble des objets Access afin de produire de véritables applications professionnelles, sans l'appel du code VBA. Au travers de cette formation, nous avons de même donné un aperçu intéressant sur la puissance des macros quant aux actions qu'elles permettent d'engager mais aussi d'analyser, avant la prise de décision.

 
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