OVH Cloud OVH Cloud

transfert sans copier coller de multiples requêtes dans une base

3 réponses
Avatar
MV90
Comment depuis une macro transférer le résultat de plusieurs requêtes
identiquement formatées dans une table unique de destination sans utiliser
les fonctions copier/coller, car l'action TransférerBase crée à chaque fois
une nouvelle base appelée Résultat, Résultat1, Résultat2 etc...

3 réponses

Avatar
Eric
Bonjour,

Par macro, pas d'idée mais avec du vba.
Une piste peut-être :
(Charger la référence Microsoft DAO 3.xx Object Library)

A copier dans un module global, puis à lancer par une macro ou par appel
en VBA :

Via Macro : ExécuterCode - Nom Fonction : zz()
Via VBA
Sub OnLance()
Call zz
End Sub


Function zz()
Dim bd As DAO.Database, qryNom As String, t As DAO.TableDef
Dim Trouve As Boolean, strSQL As String, arrNom
Dim i As Integer
Set bd = DBEngine.OpenDatabase("C:mv902.mdb")
' Verif si la table receptrice existe
For Each t In bd.TableDefs
If t.Name = "Resultat" Then
Trouve = True
Exit For
End If
Next t
' Tableau des noms de requêtes (sélection) à fusionner
' Adapter la méthode au besoin
arrNom = Array("Paris", "Orsay", "Lyon")
For i = LBound(arrNom) To UBound(arrNom)
qryNom = arrNom(i)
If Not Trouve Then
strSQL = "Select * into Resultat In " & Chr(34) _
& bd.Name & Chr(34) & " from " & qryNom
Trouve = True
Else
strSQL = "Insert into Resultat In " & Chr(34) _
& bd.Name & Chr(34) _
& " select * from " & qryNom
End If
CurrentDb.Execute strSQL
Next i
Set t = Nothing
bd.Close
Set bd = Nothing
MsgBox "Fusion terminée"
End Function

Comment depuis une macro transférer le résultat de plusieurs requêtes
identiquement formatées dans une table unique de destination sans utiliser
les fonctions copier/coller, car l'action TransférerBase crée à chaque fois
une nouvelle base appelée Résultat, Résultat1, Résultat2 etc...


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Didier Bicking
Tu peux faire de la première requête une requête de création de table, les
suivantes étant des requêtes d'ajout dans cette même table. Crée ensuite une
macro qui les enchaîne toutes dans le bon ordre.

--
Bon courage

Didier Bicking

http://perso.wanadoo.fr/dbicking


"Eric" a écrit dans le message de news:

Bonjour,

Par macro, pas d'idée mais avec du vba.
Une piste peut-être :
(Charger la référence Microsoft DAO 3.xx Object Library)

A copier dans un module global, puis à lancer par une macro ou par appel
en VBA :

Via Macro : ExécuterCode - Nom Fonction : zz()
Via VBA
Sub OnLance()
Call zz
End Sub


Function zz()
Dim bd As DAO.Database, qryNom As String, t As DAO.TableDef
Dim Trouve As Boolean, strSQL As String, arrNom
Dim i As Integer
Set bd = DBEngine.OpenDatabase("C:mv902.mdb")
' Verif si la table receptrice existe
For Each t In bd.TableDefs
If t.Name = "Resultat" Then
Trouve = True
Exit For
End If
Next t
' Tableau des noms de requêtes (sélection) à fusionner
' Adapter la méthode au besoin
arrNom = Array("Paris", "Orsay", "Lyon")
For i = LBound(arrNom) To UBound(arrNom)
qryNom = arrNom(i)
If Not Trouve Then
strSQL = "Select * into Resultat In " & Chr(34) _
& bd.Name & Chr(34) & " from " & qryNom
Trouve = True
Else
strSQL = "Insert into Resultat In " & Chr(34) _
& bd.Name & Chr(34) _
& " select * from " & qryNom
End If
CurrentDb.Execute strSQL
Next i
Set t = Nothing
bd.Close
Set bd = Nothing
MsgBox "Fusion terminée"
End Function

Comment depuis une macro transférer le résultat de plusieurs requêtes
identiquement formatées dans une table unique de destination sans
utiliser les fonctions copier/coller, car l'action TransférerBase crée à
chaque fois une nouvelle base appelée Résultat, Résultat1, Résultat2
etc...


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
Bonjour,

Je crois que c'est ce que fait l'instruction sql si trouve = False (on
crée la table) et sinon on ajoute ;-)

Tu peux faire de la première requête une requête de création de table, les
suivantes étant des requêtes d'ajout dans cette même table. Crée ensuite une
macro qui les enchaîne toutes dans le bon ordre.



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr