Bonjour à tous!

Besoin d'aide svp !!!!!

Je dois faire une maintenance d'un fichier excel qui utilise cette fameuse fonction GetValueWithADO pour récupérer des données dans des fichiers excels fermés

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
 
Function GetValueWithADO(Classeur$, Feuille$, Cell As Range)
'renvoie la valeur de la cellule Cell de la feuille Feuille
'du classeur fermé Classeur
Dim RcdSet As Object
Dim strConn As String
Dim strCmd As String
Dim dummyBase As Range
 
  'prépare une "base de données" bidon pour la clause SELECT
  '(une entête fictive et une ligne de données)
  Set dummyBase = Cell.Resize(2)
 
  'prépare les commandes ADO et SQL
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & Classeur & ";" & _
                "Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"";"
  strCmd = "SELECT * FROM [" & Feuille & "$" & dummyBase.Address(0, 0) & "]"
 
  'crée l'objet Recordset
  Set RcdSet = CreateObject("ADODB.Recordset")
 
  'va chercher l'info
  RcdSet.Open strCmd, strConn, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly, adCmdText
 
  'et la renvoie
  GetValueWithADO = Application.Clean(RcdSet(0))
 
  'autre syntaxe possible
'  GetValueWithADO =Application.Clean(RcdSet.GetString(NumRows:=1))
 
  'nettoyage
  Set RcdSet = Nothing
End Function
Après avoir étudié le code, la chaine de requête SELECT
Code : Sélectionner tout - Visualiser dans une fenêtre à part
strCmd = "SELECT * FROM [" & Feuille & "$" & dummyBase.Address(0, 0) & "]"
prend l'addresse d'une plage de 2 cellules parce qu'on a affecté

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set dummyBase = Cell.Resize(2)
Or moi, je dois récupérer juste une cellule bien défini pour chaque fichier et non une plage parce que j'ai analysé que parfois une cellule non renseigné dans une plage entraîne des falsifications des données.

J'ai déjà essayé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
strCmd = "SELECT * FROM [" & Feuille & "$" & Cell.Address(0, 0) & "]"
mais me renvoie une erreur
Je croyais que c'était une erreur de syntaxe, alors j'ai modifié en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
strCmd = "SELECT * FROM [" & Feuille & "!" & Cell.Address(0, 0) & "]"
mais me renvoie encore une erreur du genre "le moteur de la base de données ne peut pas trouver 'Formulaire!Q12' (feuille nommée Formulaire et Cellule à récupérer = Q12)

Je vous demande alors si c'est possible de récupérer une seule cellule en donnant son addresse via la chaine strCmd si oui, pourriez-vous svp m'aider à trouver le bon syntaxe ou existe-t-il d'autres façons pour récupérer via ADO la valeur d'une cellule d'un fichier fermé!!


Merci dejà pour vos réponses