Macro et MS Query

gerardcjf

XLDnaute Nouveau
Bonjour à tous,

Je galère un peu avec une macro permettant , en fonction de différents paramètres et en passant par le fameux Données externes puis Query, de rapatrier des données contenu dans un base Access.

Je vous livre la macro telle que je l'ai écrite (en passant par l'enregistreur de macro et en adaptant à mes paramètres).... et qui bien entendu ne fonctionne pas !:eek:

Des yeux aguerris tels que les votres me seront fort utiles ! D'avance merci pour votre aide !

Voici le code :

Sub ExtractTR()

maPersonne = Sheets("Paramètres").Range("F1")
maBase = Sheets("Paramètres").Range("C2") 'dans cette cellule est stocké le chemin du fichier .mdb
maBase2 = Sheets("Paramètres").Range("G1") 'dans cette cellule est stocké le chemin du repertoire contenant le fichier mdb
Annee = Sheets("Paramètres").Range("B3")

Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(maBase) = False Then
MsgBox "Le fichier " & maBase & " n'a pu être trouvé." & Chr(13) & "Impossible de continuer."
Exit Sub
End If
Sheets("DONNEES").Select
ActiveSheet.Unprotect

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=maBase;DefaultDir=maBase2;DriverId=281;FIL=MS Access;MaxBufferSize=2048;" _
), Array("PageTimeout=5;")), Destination:=Range("$A$1")).QueryTable
.CommandText = Array( _
"SELECT df_compte.df_numcpte, dj_typpers.dj_ce_cdtyp, dj_typpers.dj_riskat, dj_typpers.dj_mttot, dj_typpers.dj_txtot, dj_typpers.dj_txat, dj_typpers.dj_mtplaf, dj_typpers.dj_txplaf, dj_typpers.dj_mtcot" _
, _
", dj_typpers.dj_cdori, df_compte.df_da_numpers, df_compte.df_siret, dj_typpers.dj_perio" & Chr(13) & "" & Chr(10) & "FROM `maBase`.df_compte df_compte, `maBase`.dj_typpers dj_typpers" & Chr(13) & "" & Chr(10) & "WH" _
, _
"ERE df_compte.df_numcpte = dj_typpers.dj_df_numcpte AND ((df_compte.df_da_numpers='%" & maPersonne & "%') AND (dj_typpers.dj_perio=Annee) AND (dj_typpers.dj_cdori=2))" _
)
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = _
"Tableau Récapitulatif URSSAF 2007 - données déclarées par le cotisant"
.Refresh BackgroundQuery:=False
End With
End Sub

Qu'en pensez vous ???
 
C

Compte Supprimé 979

Guest
Re : Macro et MS Query

Bonsoir Gerardcjf,

Ca ne peut pas fontionner, tu laisses tes variables dans les guillemets.

Elles ne sont donc pas prisent en tant que telles mais en tant que valeur propre :rolleyes:

Code:
.CommandText = Array( _
 "SELECT df_compte.df_numcpte, dj_typpers.dj_ce_cdtyp, dj_typpers.dj_riskat, dj_typpers.dj_mttot, dj_typpers.dj_txtot, dj_typpers.dj_txat, dj_typpers.dj_mtplaf, dj_typpers.dj_txplaf, dj_typpers.dj_mtcot" _
        , _
", dj_typpers.dj_cdori, df_compte.df_da_numpers, df_compte.df_siret, dj_typpers.dj_perio" & Chr(13) & "" & Chr(10) & "FROM `[COLOR=Blue][B]" & maBase & "[/B][/COLOR]`.df_compte df_compte, `[COLOR=Blue][B]" & maBase & "[/B][/COLOR] `.dj_typpers dj_typpers" & Chr(13) & "" & Chr(10) & "WH" _
        , _
"ERE df_compte.df_numcpte = dj_typpers.dj_df_numcpte AND ((df_compte.df_da_numpers='%" & maPersonne & "%') AND (dj_typpers.dj_perio=[COLOR=Blue][B]" & Annee & "[/B][/COLOR]) AND (dj_typpers.dj_cdori=2))" _
        )

A essayer ;)

A+
 

gerardcjf

XLDnaute Nouveau
Re : Macro et MS Query

Yes c'est vrai ... merci !

Mais le debogage intervient sur cette ligne :

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=maBase;DefaultDir=maBase2;DriverId=281;FIL=MS Access;MaxBufferSize=2048;" _
), Array("PageTimeout=5;")), Destination:=Range("$A$1")).QueryTable

et là je sèche !
 

Statistiques des forums

Discussions
312 348
Messages
2 087 510
Membres
103 570
dernier inscrit
patrickb83p