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 !
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 ???
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 !
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 ???