Salutations,Nourrir un objet Excel QueryTable de la mémoire
Le code VBA ci-dessous va créer un objet Excel QueryTable et l'afficher à partir de la plage (« D2 »). L'adresse spécifique de cette plage cible est immatérielle.
Ma question est - est-il possible d'introduire manuellement des valeurs dans un jeu d'enregistrements en mémoire, puis d'en faire lire la table? En d'autres termes, je souhaite spécifier les colonnes et les valeurs de la table dans VBA, et non celles provenant d'une base de données ou d'un fichier.
Public Sub Foo()
Dim blah As QueryTable
Dim rngTarget As Range
Dim strQuery As String
strQuery = "SELECT * FROM MY_TABLE"
Set rngTarget = Range("D2")
Dim qt As QueryTable
Set qt = rngTarget.Worksheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER=SQL Server;SERVER=MY_SQL_SERVER;APP=MY_APP;Trusted_Connection=Yes", Destination:=rngTarget)
With qt
.CommandText = strQuery
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.Name = "MY_RANGE_NAME"
.MaintainConnection = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = False
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = False
.Refresh BackgroundQuery:=False
End With
End Sub
C'est ce que j'ai fini par faire, sauf une version de Web Query, mais pour Excel, c'est la même chose. Vous supprimez simplement la table de requête après avoir exécuté la méthode .Refresh. – AlanR