Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Analyse requête en VBA

6 réponses
Avatar
flomen
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

6 réponses

Avatar
Sweety
Dans le message news:,
flomen écrivait :
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



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/


Avatar
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

Avatar
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.

http://officesystem.access.free.fr/telechargement.htm#Bases

--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
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




Avatar
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

Avatar
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