Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Etats - Formulaires - BDD externes
Nous poursuivons ici le développement consistant à accéder aux ressources de
bases de données externes. Dans le volet précédent, sur une base de données désignée par l'utilisateur, nous avons été en mesure de récolter
tous les noms de ses
tables et
requêtes. Ici, nous proposons de faire de même pour récupérer tous ses
formulaires et
états.
Sur l'exemple illustré par la capture, l'utilisateur clique tout d'abord sur un bouton matérialisé par l'icône d'un dossier. Il ouvre ainsi une
boîte de dialogue standard d'Office. Grâce à elle, il désigne un dossier hébergeant des
bases de données. Dès lors, le
code VBA récolte
tous les noms de ces bases dans une première zone de liste. Puis, lorsque l'utilisateur clique sur l'un de ces noms, le programme restitue tous les objets qui composent cette base de données, dont les
formulaires et
états dans une troisième et cinquième zones de liste.
Base de données Access à télécharger
Nous proposons de poursuivre le développement sur les travaux au dernier indice.
- Télécharger le fichier compressé etats-formulaires-bdd-externe.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'ouvrir,
- Sur le formulaire, cliquer sur le petit 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,
- Valider en cliquant sur le bouton Ok,
De retour sur le formulaire, vous constatez que
tous les noms des
bases de données hébergées par le dossier désigné, sont énumérés dans la première zone de liste. Maintenant, si vous cliquez sur l'une de ces bases de données, vous importez automatiquement les
noms de ses
tables et
requêtes dans la deuxième et quatrième zones de liste. Bien sûr à ce stade, la troisième et cinquième restent muettes.
Parcourir les formulaires externes
Pour passer en revue
toutes les tables et
requêtes d'une
autre base de données, nous avions enclenché des
boucles For Each pour parcourir les
collections des tables (TableDefs) et des
requêtes(QueryDefs). Etonnamment, la méthode diffère pour
parcourir les formulaires et les
états. Néanmoins, il existe là aussi des
collections qui les matérialisent. Ces
collections offrent une
propriété qui renseigne sur leurs nombres. Grâce à cette indication, nous allons pouvoir enclencher une
boucle For Next plus classique pour parcourir ces objets du premier au dernier.
- 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,
Elle se nomme
lesBases comme le rappelle sa
feuille de propriétés.
- Activer l'onglet Evénement de cette feuille de propriétés,
- Puis, cliquer sur le petit bouton associé à son événement Au clic,
Comme un
code VBA est déjà attaché à cette zone de liste, nous basculons directement dans l'
éditeur VBA Access, entre les bornes de la
procédure événementielle lesBases_Click. C'est elle que nous avons développée à l'occasion du volet précédent. C'est elle qui se charge de récolter les
noms des tables et requêtes de la
base de données désignée par l'utilisateur. C'est donc elle que nous devons continuer d'implémenter pour récolter aussi les
formulaires et les
états.
- En fin de procédure, avant la destruction des objets, ajouter les instructions VBA suivantes :
...
Next requete
lesFormulaires.RowSource = ""
For i = 0 To autreBdd.CurrentProject.AllForms.Count - 1
lesFormulaires.AddItem autreBdd.CurrentProject.AllForms(i).Name
Next i
Set table = Nothing
Set requete = Nothing
...
Tout d'abord et comme dans le volet précédent, nous exploitons la
propriété RowSource de la zone de liste, pour vider son contenu à chaque clic, avant de la remplir à nouveau. Ensuite, l'
instance autreBdd de la
base de données Access permet d'atteindre l'
objet enfant CurrentProject qui désigne le projet en cours, soit la base pointée. Grâce à lui, nous pouvons atteindre sa
collection AllForms. Elle porte bien son nom. Sous forme de tableau, elle représente l'intégralité des
formulaires de cette
base. C'est alors sa
propriété Count qui renseigne sur leur nombre. Grâce à cette indication, nous engageons une
boucle parcourant
tous les formulaires du premier (0) au dernier (Count - 1). A chaque passage dans la boucle, nous récupérons le
nom du formulaire en cours d'analyse, grâce à la
variable de boucle (AllForms(i).Name). Naturellement, nous exploitons la
méthode AddItem de la zone de liste pour ajouter ce nom dans la liste du contrôle sur le formulaire.
Parcourir les états externes
Désormais, pour analyser
tous les états de la
base de données externe, la méthode est similaire. Mais naturellement, la collection change. Il ne s'agit plus de la
collection AllForms mais de la
collection AllReports.
- A la suite du précédent code, ajouter les instructions VBA suivantes :
...
lesEtats.RowSource = ""
For i = 0 To autreBdd.CurrentProject.AllReports.Count - 1
lesEtats.AddItem autreBdd.CurrentProject.AllReports(i).Name
Next i
Set table = Nothing
Set requete = Nothing
...
Comme précédemment, nous vidons tout d'abord la zone de liste concernée. Puis, nous parcourons
tous les états de la
base de données externe pour ajouter tour à tour leurs noms dans cette zone de liste fraîchement purgée.
- Enregistrer les modifications (CTRL + S) et basculer sur le formulaire (ALT + Tab),
- Exécuter ce dernier avec la touche F5 du clavier par exemple,
- Cliquer sur le petit bouton à l'icône d'un dossier,
- Dans la boîte de dialogue, ouvrir un dossier contenant des bases Access,
- Valider l'importation des noms en cliquant sur le bouton Ok,
- De retour sur le formulaire, cliquer sur un nom de base de données dans la première liste,