jojo_peter67
XLDnaute Nouveau
Bonjour à tous,
Je cherche une solution pour lire des données de cellules nommées de fichiers fermés.
142 fichiers et 60 cellules nommées par fichier.
Les 142 fichiers sont des données confidentielles à caractère financier.
j'ai tenté la fonction Pull mais lorsqu'Excel recalcul, le fichier devient très - trop lent.
j'ai tenté le couple LINKEDRANGE et LINKREFERENCE de Shawn Stackhouse mais bizarrement, ne fonctionne qu'avec les fichier sources ouvert
Je ne sais pas utiliser ExcecuteExeclForMacro dans le worksheet avec les formules. La fonction GetValue ne s'utilisant qu'avec le VBA :
J'ai essayé avec ADO via le site de Jacques Boisgontier mais je bloque sur un élément: passer dans la fonction le nom de la cellule nommée (et pas le numéro de la cellule).
Je suis ouvert à toute idée qui me fera avancer.
merci beaucoup
Je cherche une solution pour lire des données de cellules nommées de fichiers fermés.
142 fichiers et 60 cellules nommées par fichier.
Les 142 fichiers sont des données confidentielles à caractère financier.
j'ai tenté la fonction Pull mais lorsqu'Excel recalcul, le fichier devient très - trop lent.
j'ai tenté le couple LINKEDRANGE et LINKREFERENCE de Shawn Stackhouse mais bizarrement, ne fonctionne qu'avec les fichier sources ouvert
Je ne sais pas utiliser ExcecuteExeclForMacro dans le worksheet avec les formules. La fonction GetValue ne s'utilisant qu'avec le VBA :
Code:
Public Function GetValue(path, file, namedRange)
' Retrieves a value from a closed workbook
Dim arg As String
' Make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If
' Create the argument
arg = "'" & path & file & "'!" & namedRange
' Execute an XLM macro
GetValue = ExecuteExcel4Macro(arg)
End Function
J'ai essayé avec ADO via le site de Jacques Boisgontier mais je bloque sur un élément: passer dans la fonction le nom de la cellule nommée (et pas le numéro de la cellule).
Je suis ouvert à toute idée qui me fera avancer.
merci beaucoup
Code:
Function LitUneCellule(repertoire As String, fichier As String, feuille As String, cellule As String)
'Microsoft ActiveX DataObject 2.8 doit être coché
Application.Volatile
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & repertoire & "\" & fichier & _
";Extended Properties=""Excel 8.0;HDR=No;"";"
Set rs = cnn.Execute("SELECT * FROM [" & feuille & "$" & cellule & ":" & cellule & "]")
LitUneCellule = rs(0)
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Function