Allo gang
J'ai trouvé une excellente fonction sur ce site pour lire créer une "Function" pour lire dans un classeur fermé.
Par contre, je suis incapable de la faire fonctionner.

J'utilise Excel 2010 (32bits)
J'ai validé avec un espion et mon chemin est bon.
Mais c'est vraiment dans cette ligne de code que je crois que ça bogue.
J'ai un erreur qui apparait "Impossible de trouver le fournisseur. Il est peut-être mal installé 3706"
J'ai validé et c'est bien le regsrv32 qui est installé
Je travaille en session virtuelle
Est-ce que quelqu'un peut m'aider ?
Car le code serait vraiment génial


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
   Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Chemin & "\" & Fichier & _
        ";Extended Properties=""Excel 8.0;HDR=No;"";"
voici la fonction qu'on retrouve sur ce site
**Comment utiliser la fonction Indirect pour lire une cellule dans un classeur fermé ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Function LireCellule_ClasseurFerme( _
        Chemin As String, _
        Fichier As String, _
        Feuille As String, _
        Cellule As Variant) As Variant
 
    Application.Volatile
 
    Dim Source As Object, Rst As Object, ADOCommand As Object
    Dim Cible As String
 
    Feuille = Feuille & "$"
    Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
        Cellule.Address(0, 0, xlA1, 0)
 
    Set Source = CreateObject("ADODB.Connection")
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Chemin & "\" & Fichier & _
        ";Extended Properties=""Excel 8.0;HDR=No;"";"
 
    Set ADOCommand = CreateObject("ADODB.Command")
    With ADOCommand
        .ActiveConnection = Source
        .CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
    End With
 
    Set Rst = CreateObject("ADODB.Recordset")
    '1 = adOpenKeyset, 3 = adLockOptimistic
    Rst.Open ADOCommand, , 1, 3
    Set Rst = Source.Execute("[" & Feuille & Cible & "]")
 
    LireCellule_ClasseurFerme = Rst(0).Value
 
    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing
End Function