formateur informatique

Noms des états et formulaires d'une autre base de données

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Noms des états et formulaires d'une autre base de données
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    Vidos astuces Instagram
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.

Récupérer les noms des formulaires et états d-une autre base de données en VBA Access

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,
Récupérer les noms des états et formulaires d-une autre base de données Access en VBA

 
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