Je suis à la recherche d’une solution VBA pour obtenir la liste des tables utilisées dans mes requêtes. Merci pour votre aide
Bonjour
Je te conseille de visiter l'excellent site de Raymond Seneque et particulièrement ceci : http://officesystem.access.free.fr/vba/liste_tables.htm
--
Michel H. (Sweety) [Microsoft MVP] - Windows Shell/User Toutes les réponses à vos questions sur le Portail de Sweety : http://sweety.mvps.org/
Eric
Bonjour flomen,
La fonction ci-dessous te permet d'obtenir la liste des tables utilisées dans les requêtes de la base. Toutefois, les tables appelées dans des fonctions de domaine, intégrées dans les requêtes, comme DSum() ou SomDom(), DMax()..., ne sont pas visualisées.
Cette fonction peut-être la source de données d'un controle indépendant Zone de Texte pour un formulaire ou pour un état.
Ex: une zone de texte nommée Texte0 Dans ses propriétés, onglet Données, Source Contrôle: =fnTablesInQueries()
Function fnTablesInQueries() As String Dim tabTable() As String, nbTable As Integer Dim i As Integer, strSQL As String Dim msg1 As String, msg2 As String Dim strSearch1 As String, strSearch2 As String Dim strSearch3 As String, strSearch4 As String Dim strSearch5 As String Dim qry As Querydef Dim Message As String, Compteur As Integer 'Recherche des tables hors Tables-System For Each t In CurrentDb.TableDefs If Left(t.Name, 4) <> "MSys" Then nbTable = nbTable + 1 ReDim Preserve tabTable(nbTable - 1) tabTable(nbTable - 1) = t.Name End If Next t 'Parcours de la collection des requêtes For Each qry In CurrentDb.QueryDefs If Left(qry.Name, 1) <> "~" Then 'Temporary queries Compteur = 0 msg1 = "Table(s) dans la requête '" _ & UCase(qry.Name) & "' :" strSQL = Replace(qry.SQL, vbCrLf, Chr(32)) msg2 = "" For i = 0 To UBound(tabTable) strSearch1 = Chr(32) & tabTable(i) & Chr(32) strSearch2 = Chr(32) & tabTable(i) & ";" strSearch3 = " [" & tabTable(i) & "] " strSearch4 = " [" & tabTable(i) & "];" strSearch5 = "(" & tabTable(i) & Chr(32) If InStr(1, strSQL, strSearch1, 1) > 0 Or _ InStr(1, strSQL, strSearch2, 1) > 0 Or _ InStr(1, strSQL, strSearch3, 1) > 0 Or _ InStr(1, strSQL, strSearch4, 1) > 0 Or _ InStr(1, strSQL, strSearch5, 1) > 0 Then Compteur = Compteur + 1 msg2 = msg2 & vbCrLf & Space(8) & " - " _ & tabTable(i) End If Next i Message = Message & Compteur & " " _ & msg1 & msg2 & vbCrLf & vbCrLf
End If Next qry
fnTablesInQueries = Message
End Function
Bonjour,
Je suis à la recherche d’une solution VBA pour obtenir la liste des tables utilisées dans mes requêtes. Merci pour votre aide
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour flomen,
La fonction ci-dessous te permet d'obtenir la liste des tables utilisées
dans les requêtes de la base. Toutefois, les tables appelées dans des
fonctions de domaine, intégrées dans les requêtes, comme DSum() ou
SomDom(), DMax()..., ne sont pas visualisées.
Cette fonction peut-être la source de données d'un controle indépendant
Zone de Texte pour un formulaire ou pour un état.
Ex: une zone de texte nommée Texte0
Dans ses propriétés, onglet Données,
Source Contrôle: =fnTablesInQueries()
Function fnTablesInQueries() As String
Dim tabTable() As String, nbTable As Integer
Dim i As Integer, strSQL As String
Dim msg1 As String, msg2 As String
Dim strSearch1 As String, strSearch2 As String
Dim strSearch3 As String, strSearch4 As String
Dim strSearch5 As String
Dim qry As Querydef
Dim Message As String, Compteur As Integer
'Recherche des tables hors Tables-System
For Each t In CurrentDb.TableDefs
If Left(t.Name, 4) <> "MSys" Then
nbTable = nbTable + 1
ReDim Preserve tabTable(nbTable - 1)
tabTable(nbTable - 1) = t.Name
End If
Next t
'Parcours de la collection des requêtes
For Each qry In CurrentDb.QueryDefs
If Left(qry.Name, 1) <> "~" Then 'Temporary queries
Compteur = 0
msg1 = "Table(s) dans la requête '" _
& UCase(qry.Name) & "' :"
strSQL = Replace(qry.SQL, vbCrLf, Chr(32))
msg2 = ""
For i = 0 To UBound(tabTable)
strSearch1 = Chr(32) & tabTable(i) & Chr(32)
strSearch2 = Chr(32) & tabTable(i) & ";"
strSearch3 = " [" & tabTable(i) & "] "
strSearch4 = " [" & tabTable(i) & "];"
strSearch5 = "(" & tabTable(i) & Chr(32)
If InStr(1, strSQL, strSearch1, 1) > 0 Or _
InStr(1, strSQL, strSearch2, 1) > 0 Or _
InStr(1, strSQL, strSearch3, 1) > 0 Or _
InStr(1, strSQL, strSearch4, 1) > 0 Or _
InStr(1, strSQL, strSearch5, 1) > 0 Then
Compteur = Compteur + 1
msg2 = msg2 & vbCrLf & Space(8) & " - " _
& tabTable(i)
End If
Next i
Message = Message & Compteur & " " _
& msg1 & msg2 & vbCrLf & vbCrLf
End If
Next qry
fnTablesInQueries = Message
End Function
Bonjour,
Je suis à la recherche d’une solution VBA pour obtenir la liste des tables
utilisées dans mes requêtes.
Merci pour votre aide
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
La fonction ci-dessous te permet d'obtenir la liste des tables utilisées dans les requêtes de la base. Toutefois, les tables appelées dans des fonctions de domaine, intégrées dans les requêtes, comme DSum() ou SomDom(), DMax()..., ne sont pas visualisées.
Cette fonction peut-être la source de données d'un controle indépendant Zone de Texte pour un formulaire ou pour un état.
Ex: une zone de texte nommée Texte0 Dans ses propriétés, onglet Données, Source Contrôle: =fnTablesInQueries()
Function fnTablesInQueries() As String Dim tabTable() As String, nbTable As Integer Dim i As Integer, strSQL As String Dim msg1 As String, msg2 As String Dim strSearch1 As String, strSearch2 As String Dim strSearch3 As String, strSearch4 As String Dim strSearch5 As String Dim qry As Querydef Dim Message As String, Compteur As Integer 'Recherche des tables hors Tables-System For Each t In CurrentDb.TableDefs If Left(t.Name, 4) <> "MSys" Then nbTable = nbTable + 1 ReDim Preserve tabTable(nbTable - 1) tabTable(nbTable - 1) = t.Name End If Next t 'Parcours de la collection des requêtes For Each qry In CurrentDb.QueryDefs If Left(qry.Name, 1) <> "~" Then 'Temporary queries Compteur = 0 msg1 = "Table(s) dans la requête '" _ & UCase(qry.Name) & "' :" strSQL = Replace(qry.SQL, vbCrLf, Chr(32)) msg2 = "" For i = 0 To UBound(tabTable) strSearch1 = Chr(32) & tabTable(i) & Chr(32) strSearch2 = Chr(32) & tabTable(i) & ";" strSearch3 = " [" & tabTable(i) & "] " strSearch4 = " [" & tabTable(i) & "];" strSearch5 = "(" & tabTable(i) & Chr(32) If InStr(1, strSQL, strSearch1, 1) > 0 Or _ InStr(1, strSQL, strSearch2, 1) > 0 Or _ InStr(1, strSQL, strSearch3, 1) > 0 Or _ InStr(1, strSQL, strSearch4, 1) > 0 Or _ InStr(1, strSQL, strSearch5, 1) > 0 Then Compteur = Compteur + 1 msg2 = msg2 & vbCrLf & Space(8) & " - " _ & tabTable(i) End If Next i Message = Message & Compteur & " " _ & msg1 & msg2 & vbCrLf & vbCrLf
End If Next qry
fnTablesInQueries = Message
End Function
Bonjour,
Je suis à la recherche d’une solution VBA pour obtenir la liste des tables utilisées dans mes requêtes. Merci pour votre aide
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
re,
En complément, et de bien meilleure facture ;-) sur le site de Raymond, comme indiqué par Sweety, à la section Téléchargement, rubrique Bases, tu pourrais télécharger aussi ObjectsDependances (base MDE), qui t'indique tous les objets dépendants des tables & requêtes.
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
re,
En complément, et de bien meilleure facture ;-)
sur le site de Raymond, comme indiqué par Sweety, à la section
Téléchargement, rubrique Bases, tu pourrais télécharger aussi
ObjectsDependances (base MDE), qui t'indique tous les objets dépendants
des tables & requêtes.
En complément, et de bien meilleure facture ;-) sur le site de Raymond, comme indiqué par Sweety, à la section Téléchargement, rubrique Bases, tu pourrais télécharger aussi ObjectsDependances (base MDE), qui t'indique tous les objets dépendants des tables & requêtes.
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
flomen
Bonjour Eric,
Bravo et merci pour ta solution qui fonctionne parfaitement.
Maintenant il ne me plus qu'à trouver une solution pour explorer le contenu des macros, si tu as as une solution je suis preneur.
Et encore merci pour ton aide
Bonjour flomen,
La fonction ci-dessous te permet d'obtenir la liste des tables utilisées dans les requêtes de la base. Toutefois, les tables appelées dans des fonctions de domaine, intégrées dans les requêtes, comme DSum() ou SomDom(), DMax()..., ne sont pas visualisées.
Cette fonction peut-être la source de données d'un controle indépendant Zone de Texte pour un formulaire ou pour un état.
Ex: une zone de texte nommée Texte0 Dans ses propriétés, onglet Données, Source Contrôle: =fnTablesInQueries()
Function fnTablesInQueries() As String Dim tabTable() As String, nbTable As Integer Dim i As Integer, strSQL As String Dim msg1 As String, msg2 As String Dim strSearch1 As String, strSearch2 As String Dim strSearch3 As String, strSearch4 As String Dim strSearch5 As String Dim qry As Querydef Dim Message As String, Compteur As Integer 'Recherche des tables hors Tables-System For Each t In CurrentDb.TableDefs If Left(t.Name, 4) <> "MSys" Then nbTable = nbTable + 1 ReDim Preserve tabTable(nbTable - 1) tabTable(nbTable - 1) = t.Name End If Next t 'Parcours de la collection des requêtes For Each qry In CurrentDb.QueryDefs If Left(qry.Name, 1) <> "~" Then 'Temporary queries Compteur = 0 msg1 = "Table(s) dans la requête '" _ & UCase(qry.Name) & "' :" strSQL = Replace(qry.SQL, vbCrLf, Chr(32)) msg2 = "" For i = 0 To UBound(tabTable) strSearch1 = Chr(32) & tabTable(i) & Chr(32) strSearch2 = Chr(32) & tabTable(i) & ";" strSearch3 = " [" & tabTable(i) & "] " strSearch4 = " [" & tabTable(i) & "];" strSearch5 = "(" & tabTable(i) & Chr(32) If InStr(1, strSQL, strSearch1, 1) > 0 Or _ InStr(1, strSQL, strSearch2, 1) > 0 Or _ InStr(1, strSQL, strSearch3, 1) > 0 Or _ InStr(1, strSQL, strSearch4, 1) > 0 Or _ InStr(1, strSQL, strSearch5, 1) > 0 Then Compteur = Compteur + 1 msg2 = msg2 & vbCrLf & Space(8) & " - " _ & tabTable(i) End If Next i Message = Message & Compteur & " " _ & msg1 & msg2 & vbCrLf & vbCrLf
End If Next qry
fnTablesInQueries = Message
End Function
Bonjour,
Je suis à la recherche d’une solution VBA pour obtenir la liste des tables utilisées dans mes requêtes. Merci pour votre aide
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour Eric,
Bravo et merci pour ta solution qui fonctionne parfaitement.
Maintenant il ne me plus qu'à trouver une solution pour explorer le contenu
des macros, si tu as as une solution je suis preneur.
Et encore merci pour ton aide
Bonjour flomen,
La fonction ci-dessous te permet d'obtenir la liste des tables utilisées
dans les requêtes de la base. Toutefois, les tables appelées dans des
fonctions de domaine, intégrées dans les requêtes, comme DSum() ou
SomDom(), DMax()..., ne sont pas visualisées.
Cette fonction peut-être la source de données d'un controle indépendant
Zone de Texte pour un formulaire ou pour un état.
Ex: une zone de texte nommée Texte0
Dans ses propriétés, onglet Données,
Source Contrôle: =fnTablesInQueries()
Function fnTablesInQueries() As String
Dim tabTable() As String, nbTable As Integer
Dim i As Integer, strSQL As String
Dim msg1 As String, msg2 As String
Dim strSearch1 As String, strSearch2 As String
Dim strSearch3 As String, strSearch4 As String
Dim strSearch5 As String
Dim qry As Querydef
Dim Message As String, Compteur As Integer
'Recherche des tables hors Tables-System
For Each t In CurrentDb.TableDefs
If Left(t.Name, 4) <> "MSys" Then
nbTable = nbTable + 1
ReDim Preserve tabTable(nbTable - 1)
tabTable(nbTable - 1) = t.Name
End If
Next t
'Parcours de la collection des requêtes
For Each qry In CurrentDb.QueryDefs
If Left(qry.Name, 1) <> "~" Then 'Temporary queries
Compteur = 0
msg1 = "Table(s) dans la requête '" _
& UCase(qry.Name) & "' :"
strSQL = Replace(qry.SQL, vbCrLf, Chr(32))
msg2 = ""
For i = 0 To UBound(tabTable)
strSearch1 = Chr(32) & tabTable(i) & Chr(32)
strSearch2 = Chr(32) & tabTable(i) & ";"
strSearch3 = " [" & tabTable(i) & "] "
strSearch4 = " [" & tabTable(i) & "];"
strSearch5 = "(" & tabTable(i) & Chr(32)
If InStr(1, strSQL, strSearch1, 1) > 0 Or _
InStr(1, strSQL, strSearch2, 1) > 0 Or _
InStr(1, strSQL, strSearch3, 1) > 0 Or _
InStr(1, strSQL, strSearch4, 1) > 0 Or _
InStr(1, strSQL, strSearch5, 1) > 0 Then
Compteur = Compteur + 1
msg2 = msg2 & vbCrLf & Space(8) & " - " _
& tabTable(i)
End If
Next i
Message = Message & Compteur & " " _
& msg1 & msg2 & vbCrLf & vbCrLf
End If
Next qry
fnTablesInQueries = Message
End Function
Bonjour,
Je suis à la recherche d’une solution VBA pour obtenir la liste des tables
utilisées dans mes requêtes.
Merci pour votre aide
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bravo et merci pour ta solution qui fonctionne parfaitement.
Maintenant il ne me plus qu'à trouver une solution pour explorer le contenu des macros, si tu as as une solution je suis preneur.
Et encore merci pour ton aide
Bonjour flomen,
La fonction ci-dessous te permet d'obtenir la liste des tables utilisées dans les requêtes de la base. Toutefois, les tables appelées dans des fonctions de domaine, intégrées dans les requêtes, comme DSum() ou SomDom(), DMax()..., ne sont pas visualisées.
Cette fonction peut-être la source de données d'un controle indépendant Zone de Texte pour un formulaire ou pour un état.
Ex: une zone de texte nommée Texte0 Dans ses propriétés, onglet Données, Source Contrôle: =fnTablesInQueries()
Function fnTablesInQueries() As String Dim tabTable() As String, nbTable As Integer Dim i As Integer, strSQL As String Dim msg1 As String, msg2 As String Dim strSearch1 As String, strSearch2 As String Dim strSearch3 As String, strSearch4 As String Dim strSearch5 As String Dim qry As Querydef Dim Message As String, Compteur As Integer 'Recherche des tables hors Tables-System For Each t In CurrentDb.TableDefs If Left(t.Name, 4) <> "MSys" Then nbTable = nbTable + 1 ReDim Preserve tabTable(nbTable - 1) tabTable(nbTable - 1) = t.Name End If Next t 'Parcours de la collection des requêtes For Each qry In CurrentDb.QueryDefs If Left(qry.Name, 1) <> "~" Then 'Temporary queries Compteur = 0 msg1 = "Table(s) dans la requête '" _ & UCase(qry.Name) & "' :" strSQL = Replace(qry.SQL, vbCrLf, Chr(32)) msg2 = "" For i = 0 To UBound(tabTable) strSearch1 = Chr(32) & tabTable(i) & Chr(32) strSearch2 = Chr(32) & tabTable(i) & ";" strSearch3 = " [" & tabTable(i) & "] " strSearch4 = " [" & tabTable(i) & "];" strSearch5 = "(" & tabTable(i) & Chr(32) If InStr(1, strSQL, strSearch1, 1) > 0 Or _ InStr(1, strSQL, strSearch2, 1) > 0 Or _ InStr(1, strSQL, strSearch3, 1) > 0 Or _ InStr(1, strSQL, strSearch4, 1) > 0 Or _ InStr(1, strSQL, strSearch5, 1) > 0 Then Compteur = Compteur + 1 msg2 = msg2 & vbCrLf & Space(8) & " - " _ & tabTable(i) End If Next i Message = Message & Compteur & " " _ & msg1 & msg2 & vbCrLf & vbCrLf
End If Next qry
fnTablesInQueries = Message
End Function
Bonjour,
Je suis à la recherche d’une solution VBA pour obtenir la liste des tables utilisées dans mes requêtes. Merci pour votre aide
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
Bonjour flomen,
Quand tu parles de macro, tu entends macro-commande OU les Sub et Function dans les modules de formulaires/états, les modules standards ? De plus, que veux tu rechercher ? Toujours les tables ? Pour l'instant, je n'ai pas trop d'idées donc pas de solution mais je regarde comment on pourrait retrouver les noms de tables dans les Sub ou Function écrites dans les modules de formulaires.
... Maintenant il ne me plus qu'à trouver une solution pour explorer le contenu des macros, si tu as as une solution je suis preneur. --
A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour flomen,
Quand tu parles de macro, tu entends macro-commande OU les Sub et
Function dans les modules de formulaires/états, les modules standards ?
De plus, que veux tu rechercher ? Toujours les tables ?
Pour l'instant, je n'ai pas trop d'idées donc pas de solution mais je
regarde comment on pourrait retrouver les noms de tables dans les Sub ou
Function écrites dans les modules de formulaires.
...
Maintenant il ne me plus qu'à trouver une solution pour explorer le contenu
des macros, si tu as as une solution je suis preneur.
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Quand tu parles de macro, tu entends macro-commande OU les Sub et Function dans les modules de formulaires/états, les modules standards ? De plus, que veux tu rechercher ? Toujours les tables ? Pour l'instant, je n'ai pas trop d'idées donc pas de solution mais je regarde comment on pourrait retrouver les noms de tables dans les Sub ou Function écrites dans les modules de formulaires.
... Maintenant il ne me plus qu'à trouver une solution pour explorer le contenu des macros, si tu as as une solution je suis preneur. --
A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
flomen
Bonjour Eric,
Quand je parle de macro il s'agit bien de Macro-commande, ce que cherche à faire , c'est à lister (stocker dans une table) le contenu de toutes les macros (Open Form, DéfinirValeur, etc...) afin de pouvoir exploiter le résultat en VBA. J'ai trouvé la solution pour exploiter le contenu des Modules (Function et Sub) , des formulaires, des Reports et maintenant les requêtes grace à toi mais je n'arrive pas à trouver la solution pour les macros.
Merci et à bientôt
Bonjour flomen,
Quand tu parles de macro, tu entends macro-commande OU les Sub et Function dans les modules de formulaires/états, les modules standards ? De plus, que veux tu rechercher ? Toujours les tables ? Pour l'instant, je n'ai pas trop d'idées donc pas de solution mais je regarde comment on pourrait retrouver les noms de tables dans les Sub ou Function écrites dans les modules de formulaires.
... Maintenant il ne me plus qu'à trouver une solution pour explorer le contenu des macros, si tu as as une solution je suis preneur. --
A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour Eric,
Quand je parle de macro il s'agit bien de Macro-commande, ce que cherche à
faire , c'est à lister (stocker dans une table) le contenu de toutes les
macros (Open Form, DéfinirValeur, etc...) afin de pouvoir exploiter le
résultat en VBA.
J'ai trouvé la solution pour exploiter le contenu des Modules (Function et
Sub) , des formulaires, des Reports et maintenant les requêtes grace à toi
mais je n'arrive pas à trouver la solution pour les macros.
Merci et à bientôt
Bonjour flomen,
Quand tu parles de macro, tu entends macro-commande OU les Sub et
Function dans les modules de formulaires/états, les modules standards ?
De plus, que veux tu rechercher ? Toujours les tables ?
Pour l'instant, je n'ai pas trop d'idées donc pas de solution mais je
regarde comment on pourrait retrouver les noms de tables dans les Sub ou
Function écrites dans les modules de formulaires.
...
Maintenant il ne me plus qu'à trouver une solution pour explorer le contenu
des macros, si tu as as une solution je suis preneur.
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Quand je parle de macro il s'agit bien de Macro-commande, ce que cherche à faire , c'est à lister (stocker dans une table) le contenu de toutes les macros (Open Form, DéfinirValeur, etc...) afin de pouvoir exploiter le résultat en VBA. J'ai trouvé la solution pour exploiter le contenu des Modules (Function et Sub) , des formulaires, des Reports et maintenant les requêtes grace à toi mais je n'arrive pas à trouver la solution pour les macros.
Merci et à bientôt
Bonjour flomen,
Quand tu parles de macro, tu entends macro-commande OU les Sub et Function dans les modules de formulaires/états, les modules standards ? De plus, que veux tu rechercher ? Toujours les tables ? Pour l'instant, je n'ai pas trop d'idées donc pas de solution mais je regarde comment on pourrait retrouver les noms de tables dans les Sub ou Function écrites dans les modules de formulaires.
... Maintenant il ne me plus qu'à trouver une solution pour explorer le contenu des macros, si tu as as une solution je suis preneur. --
A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr