Bonjour,
J'aimerais que ma fonction retourne la valeur dans une variable au lieu de la placer dans une cellule.
La ligne à remplacer est :
Range(WritingCell).CopyFromRecordset Recordset
Voilà le code complet de ma fonction :
Private Function CopyValuesFromClosedExcelWorkbookXLSX(ExcelDatabaseFilePath As String, Worksheet As String, ReadingCell As String, WritingCell As String)
'Application.Run "CopyValuesFromClosedExcelWorkbookXLSX", "C:\DargoLand\Base de Données\Films.xlsx", "Films", "A1:A1", "B12"
'References: Microsoft AcitveX Data Objects 6.1 Library
Dim Command As ADODB.Command
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Set Connection = New ADODB.Connection
Connection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ExcelDatabaseFilePath & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;ReadOnly=True;"";"
Set Command = New ADODB.Command
Command.ActiveConnection = Connection
Command.CommandText = "SELECT * FROM [" & Worksheet & "$" & ReadingCell & "]"
Set Recordset = New ADODB.Recordset
Recordset.Open Command, , adOpenKeyset, adLockOptimistic
Set Recordset = Connection.Execute("[" & Worksheet & "$" & ReadingCell & "]")
Range(WritingCell).CopyFromRecordset Recordset
Recordset.Close
Connection.Close
Set Command = Nothing
Set Connection = Nothing
Set Recordset = Nothing
End Function