Helloo Steelson,
Finalement j'ai réussi !!!
J'ai changer mon approche et j'ai utilisé le modèle ADO
Function flute(ticker As String, champs As String, dateDebut As String, dateFin As String)
rngFunction = Application.Caller.Address(False, False)
Evaluate "extraction(""" & ticker & """,""" & champs & """,""" & dateDebut & """,""" & dateFin & """," & rngFunction & ")"
flute = ticker
End Function
Sub extraction(ticker As String, champs As String, dateD As String, dateF As String, rng As Range)
Dim Source As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim ADOCommand As ADODB.Command
Dim Fichier As String, Feuille As String
Feuille = "Feuil1$"
Fichier = "C:\" & ticker & ".xlsx"
Set Source = New ADODB.Connection
Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Fichier + ";Extended Properties=Excel 12.0;"
Set ADOCommand = New ADODB.Command
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT DateValue,[" & champs & "] FROM [" & Feuille & "] WHERE DateValue>= #" & dateD & "# And DateValue <= #" & dateF & "# GROUP BY DateValue,[" & champs & "]"
End With
'DateValue corresponds au nom de la colonne contenant les dates
Set Rst = New ADODB.Recordset
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
Set Rst = Source.Execute("SELECT DateValue,[" & champs & "] FROM [" & Feuille & "] WHERE DateValue>= #" & dateD & "# And DateValue <= #" & dateF & "# GROUP BY DateValue,[" & champs & "]")
rng.Offset(1, 0).CopyFromRecordset Rst
Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Sub
il faut activer la référence Microsoft ActiveX Data Objects x.x Library
et ensuite lancer la fonction depuis excel avec les arguments entre guilletmets et on peut aussi trier par les champs( du coup les colonnes du fichier)!!
Merci encore pour tout!!!
Lucy