Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer : 
Enregistrements d'une base de données externe 
Grâce aux développements des volets précédents, nous avons appris à récolter les 
noms des tables , 
requêtes , 
formulaires  et 
états  d'
autres bases de données . Ici, nous allons apprendre à 
lire les enregistrements  d'une 
table  d'une 
autre base de données , grâce au 
code VBA Access .
Le formulaire illustré par la capture résume les travaux accomplis jusqu'alors. Un bouton permet de lister les 
noms des bases de données , issues d'un dossier, dans une première zone de liste. Dès lors, au clic de l'utilisateur sur l'un de ces noms, tous les 
objets de la base de données  désignée sont restitués dans quatre autres zones de liste. Et désormais, si l'utilisateur clique sur l'une des 
tables  de cette 
base externe , ce sont 
tous ses enregistrements  qui sont lus et restitués dans une zone de texte, placée dans la partie inférieure du formulaire.
Base de données Access à télécharger 
Pour finaliser cette application, nous devons récupérer la 
base de données  qui consolide tous les travaux précédents.
Télécharger le fichier compressé lire-enregistrements-autre-bdd.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 sur le bouton Activer le contenu du bandeau de sécurité, 
Dans le volet de navigation, double cliquer sur le formulaire fParcourir  pour l'exécuter, 
Sur le formulaire, cliquer sur le petit bouton à l'icône d'un dossier, 
Dans la boîte de dialogue qui suit, ouvrir un dossier  contenant des bases de données Access , 
Valider par le bouton Ok pour revenir sur le formulaire, 
Dans la première zone de liste, cliquer sur l'un des noms de base ainsi importé par le VBA, 
De cette manière, vous obtenez les 
noms de tous les objets  qui lui appartiennent, répartis dans les quatre autres zones de liste. Mais à ce stade bien entendu, si vous cliquez sur l'une de ses tables dans la deuxième zone de liste, la zone de texte en bas du formulaire, reste muette.
C'est tout l'enjeu de ce dernier développement. Nous devons être capables d'
accéder aux enregistrements de cette table  pour la 
base externe  désignée, afin de les 
lire  et de les restituer.
La déclaration des variables 
Pour débuter, nous avons besoin de gérer l'
événement du clic  sur la deuxième 
zone de liste . Elle est nommée 
lesTables .
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 deuxième zone de liste pour la sélectionner, 
Dès lors, 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 qui suit, 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 lesTables_Click .
Avant tout, nous avons besoin d'objets pour piloter la base de données distante et ses enregistrements.
Dans les bornes de la procédure, ajouter les déclarations de variables suivantes : Private Sub lesTables_Click()Dim autreBdd As Access.Application: Dim enr As Recordset  
L'
objet autreBdd  doit servir à instancier la 
classe Access  pour pointer sur la 
base de données externe  à piloter. Nous typons l'
objet enr  comme un 
Recordset  pour qu'il puisse prendre possession des 
enregistrements d'une table  dans cette 
base . La 
variable chemin  doit reconstruire le 
chemin d'accès complet  à ce 
fichier externe  pour que l'
instance d'Access  que nous allons créer, puisse pointer sur la 
base de données désignée . Enfin, nous utiliserons la 
variable i  comme 
compteur de boucle  pour 
parcourir tous les champs de la table  à analyser. En effet, il est question de restituer tout le détail pour 
tous les enregistrements .
Le chemin d'accès et l'instance d'Access 
Maintenant que les variables sont prêtes, nous allons pouvoir en initialiser certaines. Concernant le 
chemin d'accès  souvenez-vous, les informations ont été stockées dans les deux 
zones de texte masquées , nommées respectivement 
acces  et 
laBdd . Il s'agit de l'
accès au dossier de la base  à traiter et du 
nom  même de cette base. Pour créer une 
nouvelle instance d'Access , il est question d'exploiter la 
fonction VBA CreateObject , comme souvent quand il s'agit d'instancier une classe.
Après la déclaration des variables, ajouter les instructions VBA suivantes : ... 
Tout d'abord, nous réinitialisons le contenu de la zone de texte destinée à accueillir l'extraction des enregistrements, en réglant sa 
propriété Value  sur "du vide" (""). Nous recomposons le 
chemin d'accès complet  à la 
base de données  dans la 
variable chemin . Nous initialisons (Set) l'
objet autreBdd  sur une 
instance d'Access  grâce au 
paramètre Access.Application  passé à la 
fonction CreateObject . Dès lors, nous exploitons sa 
méthode héritée OpenCurrentDatabase  en lui passant le 
chemin de la base de données  à piloter. C'est ainsi que nous pourrons ensuite accéder aux enregistrements de ses tables. Mais la 
variable enr  n'est pas encore initialisée. Enfin, nous réglons à 
false  la 
propriété Visible  de cette 
instance  pour que les 
traitements VBA  se réalisent en 
tâches de fond  et ne s'affichent pas à l'écran.
Piloter les enregistrements externes 
Maintenant que l'
instance  est créée pour piloter une 
autre base de données Access , nous allons pouvoir 
accéder aux enregistrements de ses tables . Mais pour cela, nous devons d'abord initialiser l'
objet enr  afin qu'il hérite des propriétés et méthodes pour 
manipuler les enregistrements .
A la suite du code VBA, ajouter les instructions suivantes : ... 
En exploitant la 
méthode CurrentDb  de l'
instance autreBdd , nous définissons cette 
base de données externe  comme la 
base de données active  à étudier. Grâce à sa 
méthode enfant OpenRecordset , nous définissons le 
jeu d'enregistrements  à analyser en lui passant le 
nom de la table  en paramètre. C'est la 
propriété Value  de la 
zone de liste  nommée 
lesTables  qui retourne le nom de la table cliquée par l'utilisateur. Dès lors, nous exploitons la 
méthode héritée MoveFirst  par l'
objet enr , pour placer le pointeur de lecture sur le 
premier enregistrement de la table .
Parcourir les enregistrements externes 
Dès lors, nous pouvons engager une boucle classique pour 
parcourir tous les enregistrements  de la table ainsi désignée, du premier au dernier.
A la suite du code VBA, créer la boucle suivante : ... 
Nous bouclons (Do Loop) jusqu'au 
dernier enregistrement  (While Not enr.EOF). 
EOF  signifie 
End Of File . Comprenez "fin des enregistrements". A chaque passage et après chaque traitement non encore codé, nous n'oublions pas de déplacer le pointeur de lecture sur l'
enregistrement suivant , grâce à la 
méthode MoveNext  de l'
objet enr .
Parcourir les champs de la table externe 
Comme il est question de récolter 
toutes les informations  de 
tous les enregistrements , nous devons engager une 
seconde boucle  dans cette 
première boucle . Mais il s'agit d'une 
boucle bornée  (For Next) car la 
propriété Count  de la 
collection Fields  pour l'
objet enr  renseigne sur le 
nombre de champs  contenus dans la 
table . Ce sont ces champs que nous devons parcourir pour chaque enregistrement, de manière à récolter les informations de chaque colonne.
Dans les bornes de la boucle Do, ajouter les instructions VBA suivantes : ... 
Pour chaque enregistrement, nous parcourons les champs du premier (0) au dernier (enr.Fields.Count- 1). A chaque passage, nous consolidons (lesEnregistrements.Value = lesEnregistrements.Value) la donnée du champ en cours avec les précédentes (& enr.Fields(i).Value & " ") dans la zone de texte nommée 
lesEnregistrements . Dès lors que tous les champs ont été passés en revue, soit après la seconde boucle qui reprendra au prochain passage de la première, nous ajoutons un saut de ligne (<br/>). Ce saut de ligne Html est rendu possible car l'attribut 
Format de texte  de cette zone à été réglé sur la valeur 
Texte enrichi  dans l'
onglet Données  de sa 
feuille de propriétés . C'est ainsi que nous disposons les données de chaque enregistrement sur des lignes différentes.
Décharger les objets pour libérer les ressources 
Comme vous le savez et comme il est de coutume, une fois que les objets déclarés ne sont plus utilisés, nous devons les fermer et les détruire pour libérer la mémoire de l'ordinateur.
...enr.Close  
Nous exploitons les 
méthodes  respectives 
Close  et 
Quit  pour fermer le jeu d'enregistrements et l'instance d'Access. Puis, nous réinitialisons (Set) ces deux objets à 
Nothing  pour les sortir de la mémoire.
Enregistrer les modifications (CTRL + S) et basculer sur le formulaire Access (ALT + Tab), 
Exécuter ce dernier en enfonçant par exemple la touche F5 du clavier, 
Sur le formulaire, cliquer sur le bouton matérialisé par l'icône d'un dossier, 
Dans la boîte de dialogue qui suit, ouvrir un dossier contenant des bases de données Access , 
Puis, cliquer sur le bouton Ok pour revenir sur le formulaire Access , 
Dans la première zone de liste, cliquer sur l'un des noms de bases importés, 
Dès lors, dans la deuxième zone de liste, cliquer sur l'une de ses tables, 
Comme vous pouvez le voir et moyennant un temps de traitement, 
tous les enregistrements de la table externe  ainsi désignée, sont parfaitement reconstitués et importés dans la zone de texte enrichie en bas du formulaire.