formateur informatique

Noms des champs de tables externes en VBA Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Noms des champs de tables externes en VBA 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 :


Champs des tables externes

Grâce au développement précédent, nous avons appris à récolter les noms des tables composant une base de données externe. Ici, nous allons plus loin. Il est question de récupérer tous les noms des champs d'une table choisie depuis une base de données externe.

Formulaire Access pour récupérer les noms des champs de tables externes en VBA

Sur l'exemple illustré par la capture, l'utilisateur clique sur un bouton intitulé Ouvrir. Dans la boîte de dialogue standard qui suit, il désigne un fichier de base de données. Aussitôt, tous les noms des tables qui composent cette dernière sont restitués dans une première zone de liste. Dès lors, lorsque l'utilisateur clique sur l'un de ces noms, il dévoile tous les champs qui composent cette table, dans une seconde zone de liste. L'intérêt est de pouvoir connaître automatiquement la structure d'une base de données pour être en mesure de réaliser des extractions chirurgicales à distance.

Base de données Access à télécharger
Pour poursuivre le développement, nous devons appuyer l'étude sur les travaux précédents.
  • Télécharger le fichier compressé noms-champs-tables-externes.rar en cliquant sur ce lien,
  • Le décompresser dans le dossier de votre choix,
  • Double cliquer sur le fichier résultant pour l'ouvrir dans Access,
  • Cliquer alors sur le bouton Activer le contenu du bandeau de sécurité,
  • Dans le volet de navigation sur la gauche, cliquer sur le formulaire fParcourir pour l'ouvrir,
  • Sur le formulaire, cliquer sur le bouton Ouvrir,
  • Dans la boîte de dialogue, sélectionner un fichier de base de données puis cliquer sur Ouvrir,
Lister les tables d-une base de données externe en VBA Access

Comme vous pouvez le voir, tous les noms des tables de cette base de données sont aussitôt rapatriés dans la première zone de liste sur la gauche du formulaire. Naturellement à ce stade, si vous cliquez sur l'une de ces tables, les champs qui la composent ne sont pas encore extraits.

Action VBA au clic sur un nom de table
La première mesure que nous devons prendre consiste à associer une procédure à la première zone de liste pour déclencher l'exécution d'un code VBA au clic sur l'un des noms qu'elle contient.
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans les propositions, choisir le mode Création,
  • Sur le formulaire en conception, cliquer sur la première zone de liste pour la sélectionner,
Comme l'indique sa feuille de propriétés, elle se nomme listeTables. La seconde se nomme listeChamps.
  • Dans sa feuille de propriétés justement, activer l'onglet Evénement,
  • Dès lors, cliquer sur le petit bouton associé à son événement Au clic,
  • Dans la boîte de dialogue qui suit, choisir le Générateur de code et valider par Ok,
De fait, nous basculons dans l'éditeur VBA Access entre les bornes de la procédure événementielle listeTables_Click.

Les objets de base de données
Nous devons maintenant nous intéresser à la déclaration des variables. En réalité, ce sont trois objets qui sont nécessaires pour piloter une base distante, ses tables et les champs de ses tables.
  • Dans les bornes de la procédure, ajouter les déclarations suivantes :
...
Dim base As Database: Dim table As TableDef: Dim champ As Field
...


Nous déclarons effectivement un objet de base de données (As Database), un autre pour représenter une table (As TableDef) et un dernier pour représenter un champ (As Field).

Initialiser les objets
Ensuite, nous devons initialiser deux de ces objets pour pointer sur la base de données choisie avec la boîte de dialogue et pour représenter la table cliquée par l'utilisateur dans la première zone de liste.
  • A la suite du code, ajouter les initialisations suivantes :
...
listeChamps.RowSource = ""
Set base = OpenDatabase(nomBdd.Value)
Set table = base.TableDefs(listeTables.Value)
...


Tout d'abord, nous purgeons la seconde zone de liste des potentielles précédentes importations afin de laisser la place aux nouvelles. Pour cela, nous réglons sa propriété RowSource sur une chaîne vide. Ensuite, nous initialisons (Set) l'objet base sur la base de données choisie (nomBdd.Value), grâce à la fonction VBA Access OpenDatabase. En effet, grâce au développement précédent, son chemin d'accès complet est mémorisé dans la zone de texte en haut du formulaire. Elle est nommée nomBdd. Puis, grâce à la propriété TableDefs dont a hérité l'objet base, nous initialisons (Set) l'objet table, sur la table cliquée par l'utilisateur dans la première zone de liste (listeTables.Value).

Parcourir les champs de la table cliquée
L'objet table ainsi initialisé a lui aussi hérité de propriétés et méthodes, mais pour piloter la table cliquée cette fois. Notamment, il propose désormais la propriété Fields qui représente la collection de ses champs. C'est elle que nous devons parcourir en impliquant l'objet champ dans une boucle For Each.
  • Toujours à la suite du code VBA, créer la boucle For Each suivante :
...
For Each champ In table.Fields
listeChamps.AddItem champ.Name
Next champ
...


Pour chaque champ (For Each champ) parcouru dans la collection des champs de la table cliquée (In table.Fields), nous ajoutons son nom à la suite dans la seconde zone de liste (listeChamps.AddItem champ.Name).

Détruire les objets de programmation
Pour terminer proprement et comme il est de coutume, nous devons détruire les objets de programmation à l'issue du traitement, soit lorsqu'ils ne sont plus utilisés.
  • A la fin du code, ajouter les instructions VBA suivantes :
...
base.Close
Set champ = Nothing
Set table = Nothing
Set base = Nothing
...


Grâce à sa méthode Close, nous fermons l'objet de base de données. Puis, nous réinitialisons (Set) chacun des trois objets à Nothing. C'est ainsi que nous les détruisons tour à tour et que nous libérons la mémoire de l'ordinateur.
  • Enregistrer les modifications (CTRL + S) et basculer sur le formulaire (ALT + Tab),
  • L'exécuter par exemple avec la touche F5 du clavier,
  • Cliquer sur le bouton Ouvrir du formulaire,
  • Dans la boîte de dialogue, double cliquer sur un fichier de base de données,
  • De retour sur le formulaire, cliquer dans la première zone de liste sur un nom de table,
Comme vous pouvez l'apprécier, la structure de la table distante est aussitôt dévoilée. Tous les noms de ses champs sont rapatriés dans la seconde zone de liste. C'est ainsi que le code VBA Access peut désormais facilement accéder aux ressources d'une base de données inconnue.

 
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