formateur informatique

Ajouter de nouveaux enregistrements facilement

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Ajouter de nouveaux enregistrements facilement
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 :


Créer de nouveaux enregistrements

Nous avions déjà appris à créer de nouveaux enregistrements dans une table Access. Pour cela, nous avions piloté des requête SQL d'insertion par le code VBA ou encore, nous avions dégainé des macros. Ici, nous proposons une technique déconcertante de simplicité. Un objet de type RecordSet est fait pour représenter les enregistrements d'une table. Une fois qu'il est initialisé, il offre des propriétés et méthodes. L'une d'entre elles se nomme AddNew. Elle permet tout simplement de créer un nouvel enregistrement en précisant les informations de ses champs.

Base de données Access à télécharger
Pour démontrer cette nouvelle solution, nous suggérons d'appuyer l'étude sur un formulaire conçu pour créer de nouvelles entrées dans une table. En consultant le volet de navigation sur la gauche de l'écran, vous remarquez que cette base est faite d'une table et de deux formulaires. La table archive quelques clients, très simplement renseignés avec leur nom et leur date de naissance. Le formulaire FClients restitue ces informations en mode tabulaire. Le formulaire FCreer est celui qui doit permettre d'ajouter de nouveaux clients dans la table, pour les visualiser sur le premier formulaire.
  • Double cliquer sur le formulaire FCreer pour l'exécuter,
Formulaire Access pour créer de nouveaux enregistrements clients

Il est très simple. Il est constitué de deux zones pour renseigner le nom et la date de naissance du nouveau client. Dès lors, un clic sur le bouton Insérer doit ajouter ces données dans la table Clients.
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans les propositions, choisir le mode Création,
Nous basculons ainsi sur la vue en conception du formulaire.

Au clic sur le bouton
Au clic sur le bouton, un code VBA doit se déclencher. Nous devons donc lui associer une procédure.
  • Cliquer sur le bouton Insérer pour le sélectionner,
  • Activer l'onglet Evénement de sa feuille de propriétés,
  • Cliquer sur le petit bouton associé à son événement Au clic,
  • Dans la boîte de dialogue, choisir le Générateur de code et valider par Ok,
Nous basculons ainsi dans l'éditeur VBA Access, entre les bornes de la procédure événementielle inserer_Click. inserer est le nom du bouton. Son code se déclenchera donc au clic (Click) sur ce dernier.

Les objets de base de données
Nous devons insérer de nouveaux enregistrements dans la table. Donc, nous avons besoin d'un objet représentant un enregistrement et nécessairement d'un autre représentant la base de données abritant ces enregistrements.
  • Dans les bornes de la procédure, ajouter les deux déclarations suivantes :
...
Dim base As Database: Dim enr As Recordset
...


Nous typons l'objet base pour représenter une base de données (Database). Nous typons l'objet enr de manière à ce qu'il représente un jeu d'enregistrements (Recordset).

Vérifier les saisies
Avant d'engager le traitement, nous devons nous assurer que les champs sont bien renseignés. Nous proposons de vérifier un double test dans une instruction conditionnelle.
  • Après les variables, créer l'instruction conditionnelle suivante :
...
If Nom.Value <> "" And dateN.Value <> "" Then

Else
MsgBox "Tous les champs doivent être remplis." & Chr(13) & Chr(10) & "Insertion non effectuée.", vbCritical
End If
...


Les deux contrôles se nomment respectivement Nom et dateN. Nous vérifions ensemble (And) que leurs contenus (Value) ne sont pas vides (<>""). Le cas échéant, nous prévoyons une branche de sortie (Else) pour avorter le traitement et en alerter l'utilisateur (MsgBox).

Initialiser les objets
En revanche, si la double condition est honorée, nous devons poursuivre le traitement. Et pour cela, nous devons commencer par initialiser les objets de base de données.
  • Dans la première branche de l'instruction conditionnelle, ajouter les initialisations suivantes :
...
Set base = CurrentDb()
Set enr = base.OpenRecordset("Clients")
...


Grâce à la fonction VBA Access CurrentDb, nous initialisons l'objet base sur la base de données en cours. Dès lors, nous exploitons sa méthode héritée, nommée OpenRecordset pour initialiser l'objet enr sur les enregistrements de la table nommée Clients.

Insérer un nouveau client
Grâce à cette seconde initialisation, l'objet enr a hérité à son tour de propriétés et méthodes pour manipuler les enregistrements de la table Clients. L'une d'entre elles se nomme AddNew, comme nous l'avons évoqué en préambule de cette formation. C'est elle que nous allons donc exploiter pour ajouter les nouvelles données.
  • Après les initialisations, créer le bloc With suivant :
...
Set base = CurrentDb()
Set enr = base.OpenRecordset("Clients")

With enr
.AddNew
.Fields("cl_nom").Value = Nom.Value
.Fields("cl_date").Value = dateN.Value
.Update
End With

Else
...


Ce bloc With nous permet d'énumérer les propriétés à régler pour l'objet enr ainsi que les méthodes à utiliser. Grâce à la méthode AddNew, nous créons en mémoire, un canal d'insertion. Nous affectons alors les contenus (Value) des deux champs (Fields) sur les valeurs portées respectivement par les deux zones du formulaire (Nom et dateN). Enfin, nous formalisons cet ajout en mémoire directement dans la table, grâce à la méthode Update héritée par l'objet enr.

Décharger les objets
Pour finir, nous ne devons pas oublier de fermer et de décharger les objets, une fois l'insertion réalisée, afin de libérer la mémoire de l'ordinateur.
  • Après le bloc With, ajouter les instructions VBA suivantes :
...
End With

base.Close
Set enr = Nothing
Set base = Nothing

MsgBox "Le nouveau client a été créé avec succès.", vbInformation

Else
...


Nous exploitons la méthode Close pour fermer l'instance de la base de données. Puis, nous réinitialisons (Set) les deux objets à Nothing pour les détruire et donc, pour les sortir de la mémoire. Il ne nous reste plus qu'à tester ce code VBA.
  • Enregistrer les modifications (CTRL + S) et basculer sur le formulaire Access (ALT + Tab),
  • Exécuter ce dernier, par exemple avec la touche F5 du clavier,
  • Renseigner les deux champs (Nom et date de naissance),
Il est à noter que cette date peut être saisie directement. Mais vous pouvez aussi cliquer sur la petite icône sur la droite pour déclencher l'affichage d'un contrôle calendrier.
  • Cliquer ensuite sur le bouton Insérer,
Formulaire Access pour ajouter de nouveaux enregistrements en VBA

Le message de confirmation apparaît. Et si vous ouvrez la table Clients après avoir cliqué sur Ok, vous constatez effectivement la présence du nouvel enregistrement dans la table. Et pour cela, nous avons mis en place un code VBA Access des plus basiques.

Pour finir, nous devrions bien sûr tester l'existence de l'enregistrement avant inscription, afin de ne pas générer de doublons. Mais ce n'était pas la vocation de ce sujet. De plus, nous avions déjà monté une solution à ce sujet.

 
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