Liste des containers d’une base Access – Variante
Dans l’article Liste détaillée des containers d’une base Access, on a listé les principales informations sur les containers Access, dans la fenêtre Exécution. Cette fenêtre est pratique pour tester rapidement, mais son nombre de lignes est limité. Donc si votre base contient de nombreux objets (ou « documents »), vous ne les verrez pas tous dans la fenêtre Exécution.
Pour dépasser cette limitation, on va cette fois stocker les informations dans une table. Ça permettra aussi d’utiliser cette liste de façon plus souple (par exemple pour en faire un état).
La table
Commencez par construire la table qui servira pour stocker les informations. Il n’y a pas de difficulté particulière ici ; au cas où :
- Les champs
Container
etDocument
sont du Texte court (ou Texte simplement, sur les versions antérieures d’Access). 255 caractères (même si un nom d’objet Access est plus court). - Les deux derniers champs sont des Date/Heure, pas de réglage particulier.
- La table s’appelle tbl Documents (si vous modifiez les noms, pensez à adapter aussi le code VBA qui suit).
Le code
Recopiez le code qui suit dans un module standard de votre base de données (vous pouvez réutiliser le module qui a servi pour les articles de cette série !). En pratique, ce code est une variante de l’article précédent, avec des morceaux de Recordsets dedans. 🙂
L’exemple de code ci-dessus fait appel à la bibliothèque DAO (Microsoft DAO Object Library). Cette bibliothèque doit être associée à votre base de données pour que le programme fonctionne. Pour plus de détails sur les références, consultez cette page.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
' --- ' LISTE DETAILLEE DES CONTAINERS ACCESS ' --- Sub ListeContainersDetaillee2() ' Quelques variables Dim db As DAO.Database Dim container As DAO.container Dim rst As DAO.Recordset ' La base de données Set db = CurrentDb ' Vider la table au préalable db.Execute "DELETE * FROM [tbl Documents];" ' Ouvrir la table pour le stockage des infos documents Set rst = db.OpenRecordset("tbl Documents", dbOpenDynaset) ' Parcourir tous les containers For Each container In db.Containers ListeDocuments2 container, rst Next ' On ferme ! rst.Close Set rst = Nothing Set db = Nothing MsgBox "Opération terminée !", vbInformation End Sub ' --- ' LISTE DES DOCUMENTS D'UN CONTAINER ' --- Sub ListeDocuments2( _ container As DAO.container, _ rst As DAO.Recordset) Dim doc As DAO.Document For Each doc In container.Documents ' On exclut les documents temporaires ' (démarrant par ~) If Left(doc.Name, 1) <> "~" Then ' Créer un enregistrement rst.AddNew ' Ecrire les informations dans la table rst("Container") = container.Name rst("Document") = doc.Name rst("Date Création") = doc.DateCreated rst("Date Modification") = doc.LastUpdated ' On stocke rst.Update End If Next End Sub |
Tester le code
- Cliquez quelque part dans la première procédure (entre
Sub
etEnd Sub
). - Cliquez sur l’icône Exécuter Sub/UserForm. Vous devriez obtenir quelque chose comme ça :