Re : formule INDIRECT
Cette discussion a déja eu lieu sur le forum il existe un outil recherche très interessant
.
C'est Monsieur Hasco qui a développé ce code je te le joins fait en bonne usage :
Function LireCellule_ClasseurFerme( _
Chemin As String, _
Fichier As String, _
Feuille As String, _
Cellule As String) As Variant
Application.Volatile
Dim Cible As String, c As Range
Feuille = Feuille & "$"
Cible = Cellule & ":" & Cellule
'tester si Cible est bien une référence à cellule la testant dans la feuille active
On Error Resume Next
Set c = Range(Cible)
'Si la cilbe n'est pas une addresse de cellule alors renvoyer l'erreur #Ref
If c Is Nothing Then
LireCellule_ClasseurFerme = CVErr(xlErrRef)
Exit Function
End If
Dim Source As New ADODB.Connection
Source.CursorLocation = adUseClient
Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & Chemin & "\" & Fichier & _
";Extended Properties=""Excel 12.0;HDR=No"";"
If Source.State <> adStateOpen Then
LireCellule_ClasseurFerme = CVErr(xlErrNull)
Set Source = Nothing
Exit Function
End If
Dim Rst As New ADODB.Recordset
Rst.Open "SELECT * FROM [" & Feuille & Cible & "]", Source, adOpenStatic, adLockBatchOptimistic
If Rst.State = adStateOpen Then
LireCellule_ClasseurFerme = Rst(0).Value
Rst.Close
Else
LireCellule_ClasseurFerme = CVErr(xlErrNA)
End If
Source.Close
Set Source = Nothing
Set Rst = Nothing
End Function
Attention :
Pour les versions .xls utiliser : Extended Properties=Excel 8.0 (versions d'Excel 97, 2000 et 2002), mais pour les versions 2007 (12.0).