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