OVH Cloud OVH Cloud

Liaison avec fichier fermé

13 réponses
Avatar
Philippe
Bonjour à tous,

A partir de l'exemple trouvé sur Excelabo (fcgd-lireferme.xls), j'ai
essayé de bâtir une fonction me permettant de récupérer dans une série
de fichiers où se trouve un onglet "standardisé", les valeurs de celui-ci.

Or la fonction donne comme résultat non pas le résultat mais la chaîne
correspondant à la formule du lien (lorsque je fais un copier-valeur, je
vois une simple quote de la formule dans la barre de formule).

L'un d'entre vous pourrait-il me dire se qui "cloche" dans mon script ?

Merci d'avance

Philippe

ps : pour comprendre l'esprit de cette fonction, je peux préciser que la
variable "Code" me permet de rechercher tel ou tel fichier selon ce dernier.

'Source : Fichier fcgd-lireferme.xls de Excelabo
'Sub recupuneseule()
' Flo
' Dim Chemin As String, NomFic As String, Onglet As String, Ref As String
' Dim A
' Chemin = InputBox("Chemin du fichier à lire :", "lire fichier
Fermé", "C:\Mes Documents")
' NomFic = InputBox("Nom du fichier EXCEL à lire :", "lire fichier
Fermé", "MonFichier.xls")
' Onglet = InputBox("nom de la feuille :", "lire fichier fermé",
"Feuil1")
' Ref = InputBox("adresse de la cellule à lire :", "lire fichier
fermé", "A1")
' ActiveCell.Value = "='" & Chemin & "\[" & NomFic & "]" & Onglet &
"'!" & Range(Ref).Range("A1").Address(, , xlR1C1)
'End Sub



Function ValeurFichierFerme(Cellule As Range, Code As Integer)
CodeSociete = Code
NomFichier =
Application.WorksheetFunction.Lookup(CodeSociete,_ Range("Code"),
Range("Nom_Fichier"))
NomFichierComplet = Range("NomChemin") & "\[" & NomFichier &
"]" &_ Range("NomOnglet")
ValeurFichierFerme = "='" & NomFichierComplet & "'!" &_
Cellule.Address(, , xlR1C1)
End Function

10 réponses

1 2
Avatar
Frédéric Sigonneau
Bonsoir,

D'autres approches pour récupérer des valeurs dans un/des fichier(s) fermé(s)
sur cette page :

http://frederic.sigonneau.free.fr/Ado.htm

Robert Dezan a construit un classeur qui illustre les utilisations des
techniques à base d'ADO, dispo sur excelabo (le code est protégé mais le mot de
passe est fourni) :

http://disciplus.simplex.free.fr/classeursxl/rd-lireferme.zip

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour à tous,

A partir de l'exemple trouvé sur Excelabo (fcgd-lireferme.xls), j'ai
essayé de bâtir une fonction me permettant de récupérer dans une série
de fichiers où se trouve un onglet "standardisé", les valeurs de celui-ci.

Or la fonction donne comme résultat non pas le résultat mais la chaîne
correspondant à la formule du lien (lorsque je fais un copier-valeur, je
vois une simple quote de la formule dans la barre de formule).

L'un d'entre vous pourrait-il me dire se qui "cloche" dans mon script ?

Merci d'avance

Philippe

ps : pour comprendre l'esprit de cette fonction, je peux préciser que la
variable "Code" me permet de rechercher tel ou tel fichier selon ce
dernier.

'Source : Fichier fcgd-lireferme.xls de Excelabo
'Sub recupuneseule()
' Flo
' Dim Chemin As String, NomFic As String, Onglet As String, Ref As
String
' Dim A
' Chemin = InputBox("Chemin du fichier à lire :", "lire fichier
Fermé", "C:Mes Documents")
' NomFic = InputBox("Nom du fichier EXCEL à lire :", "lire fichier
Fermé", "MonFichier.xls")
' Onglet = InputBox("nom de la feuille :", "lire fichier fermé",
"Feuil1")
' Ref = InputBox("adresse de la cellule à lire :", "lire fichier
fermé", "A1")
' ActiveCell.Value = "='" & Chemin & "[" & NomFic & "]" & Onglet &
"'!" & Range(Ref).Range("A1").Address(, , xlR1C1)
'End Sub



Function ValeurFichierFerme(Cellule As Range, Code As Integer)
CodeSociete = Code
NomFichier =
Application.WorksheetFunction.Lookup(CodeSociete,_
Range("Code"), Range("Nom_Fichier"))
NomFichierComplet = Range("NomChemin") & "[" & NomFichier & "]"
&_ Range("NomOnglet")
ValeurFichierFerme = "='" & NomFichierComplet & "'!" &_
Cellule.Address(, , xlR1C1)
End Function


Avatar
Philippe
Bonsoir,

Et merci Frédéric pour ces autres approches.

En fait la procédure "fcgd-lireferme.xls" fonctionne très bien, mais
j'aurais en fait préférer disposer d'une fonction permettant de créer un
lien à certains endroits précis de la feuille de calcul.

Cordialement

Philippe



Bonsoir,

D'autres approches pour récupérer des valeurs dans un/des fichier(s)
fermé(s) sur cette page :

http://frederic.sigonneau.free.fr/Ado.htm

Robert Dezan a construit un classeur qui illustre les utilisations des
techniques à base d'ADO, dispo sur excelabo (le code est protégé mais le
mot de passe est fourni) :

http://disciplus.simplex.free.fr/classeursxl/rd-lireferme.zip

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour à tous,

A partir de l'exemple trouvé sur Excelabo (fcgd-lireferme.xls), j'ai
essayé de bâtir une fonction me permettant de récupérer dans une série
de fichiers où se trouve un onglet "standardisé", les valeurs de
celui-ci.

Or la fonction donne comme résultat non pas le résultat mais la chaîne
correspondant à la formule du lien (lorsque je fais un copier-valeur,
je vois une simple quote de la formule dans la barre de formule).

L'un d'entre vous pourrait-il me dire se qui "cloche" dans mon script ?

Merci d'avance

Philippe

ps : pour comprendre l'esprit de cette fonction, je peux préciser que
la variable "Code" me permet de rechercher tel ou tel fichier selon ce
dernier.

'Source : Fichier fcgd-lireferme.xls de Excelabo
'Sub recupuneseule()
' Flo
' Dim Chemin As String, NomFic As String, Onglet As String, Ref As
String
' Dim A
' Chemin = InputBox("Chemin du fichier à lire :", "lire fichier
Fermé", "C:Mes Documents")
' NomFic = InputBox("Nom du fichier EXCEL à lire :", "lire fichier
Fermé", "MonFichier.xls")
' Onglet = InputBox("nom de la feuille :", "lire fichier fermé",
"Feuil1")
' Ref = InputBox("adresse de la cellule à lire :", "lire fichier
fermé", "A1")
' ActiveCell.Value = "='" & Chemin & "[" & NomFic & "]" & Onglet &
"'!" & Range(Ref).Range("A1").Address(, , xlR1C1)
'End Sub



Function ValeurFichierFerme(Cellule As Range, Code As Integer)
CodeSociete = Code
NomFichier =
Application.WorksheetFunction.Lookup(CodeSociete,_
Range("Code"), Range("Nom_Fichier"))
NomFichierComplet = Range("NomChemin") & "[" & NomFichier & "]"
&_ Range("NomOnglet")
ValeurFichierFerme = "='" & NomFichierComplet & "'!"
&_ Cellule.Address(, , xlR1C1)
End Function




Avatar
Frédéric Sigonneau
Bonjour,

C'est préciément ce que propose la fonction, par exemple, de ce module de code :

http://frederic.sigonneau.free.fr/code/Ado/ADOGetValue.txt

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonsoir,

Et merci Frédéric pour ces autres approches.

En fait la procédure "fcgd-lireferme.xls" fonctionne très bien, mais
j'aurais en fait préférer disposer d'une fonction permettant de créer un
lien à certains endroits précis de la feuille de calcul.

Cordialement

Philippe




Bonsoir,

D'autres approches pour récupérer des valeurs dans un/des fichier(s)
fermé(s) sur cette page :

http://frederic.sigonneau.free.fr/Ado.htm

Robert Dezan a construit un classeur qui illustre les utilisations des
techniques à base d'ADO, dispo sur excelabo (le code est protégé mais
le mot de passe est fourni) :

http://disciplus.simplex.free.fr/classeursxl/rd-lireferme.zip

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour à tous,

A partir de l'exemple trouvé sur Excelabo (fcgd-lireferme.xls), j'ai
essayé de bâtir une fonction me permettant de récupérer dans une
série de fichiers où se trouve un onglet "standardisé", les valeurs
de celui-ci.

Or la fonction donne comme résultat non pas le résultat mais la
chaîne correspondant à la formule du lien (lorsque je fais un
copier-valeur, je vois une simple quote de la formule dans la barre
de formule).

L'un d'entre vous pourrait-il me dire se qui "cloche" dans mon script ?

Merci d'avance

Philippe

ps : pour comprendre l'esprit de cette fonction, je peux préciser que
la variable "Code" me permet de rechercher tel ou tel fichier selon
ce dernier.

'Source : Fichier fcgd-lireferme.xls de Excelabo
'Sub recupuneseule()
' Flo
' Dim Chemin As String, NomFic As String, Onglet As String, Ref As
String
' Dim A
' Chemin = InputBox("Chemin du fichier à lire :", "lire fichier
Fermé", "C:Mes Documents")
' NomFic = InputBox("Nom du fichier EXCEL à lire :", "lire fichier
Fermé", "MonFichier.xls")
' Onglet = InputBox("nom de la feuille :", "lire fichier fermé",
"Feuil1")
' Ref = InputBox("adresse de la cellule à lire :", "lire fichier
fermé", "A1")
' ActiveCell.Value = "='" & Chemin & "[" & NomFic & "]" & Onglet
& "'!" & Range(Ref).Range("A1").Address(, , xlR1C1)
'End Sub



Function ValeurFichierFerme(Cellule As Range, Code As Integer)
CodeSociete = Code
NomFichier =
Application.WorksheetFunction.Lookup(CodeSociete,_
Range("Code"), Range("Nom_Fichier"))
NomFichierComplet = Range("NomChemin") & "[" & NomFichier & "]"
&_ Range("NomOnglet")
ValeurFichierFerme = "='" & NomFichierComplet & "'!"
&_ Cellule.Address(, , xlR1C1)
End Function






Avatar
Philippe
Bonsoir Frédéric,

J'avais essayé cette fonction mais qui malheureusement ne donne aucun
résultat.

En regardant de plus près les arguments de la fonction, il semble qu'il
y ait un problème dans l'interprétation de la référence : sous quelle
forme doit-elle être indiquée ?

Question subsidiaire : cette fonction est-elle également opérationnelle
avec XL 2000 ?

Merci de votre aide

Cordialement

Philippe



Bonjour,

C'est préciément ce que propose la fonction, par exemple, de ce module
de code :

http://frederic.sigonneau.free.fr/code/Ado/ADOGetValue.txt

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !



Avatar
michdenis
Bonjour Philippe,

Cette fonction est accessible avec excel 2002.

As-tu chargé la référence : "Microsoft Activex Data objects 2.0" ? Sinon point de salut !


Salutations!


"Philippe" a écrit dans le message de news:
Bonsoir Frédéric,

J'avais essayé cette fonction mais qui malheureusement ne donne aucun
résultat.

En regardant de plus près les arguments de la fonction, il semble qu'il
y ait un problème dans l'interprétation de la référence : sous quelle
forme doit-elle être indiquée ?

Question subsidiaire : cette fonction est-elle également opérationnelle
avec XL 2000 ?

Merci de votre aide

Cordialement

Philippe



Bonjour,

C'est préciément ce que propose la fonction, par exemple, de ce module
de code :

http://frederic.sigonneau.free.fr/code/Ado/ADOGetValue.txt

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !



Avatar
Frédéric Sigonneau
Bonsoir,

Je viens de la tester avec Excel 2000 et il n'y a pas de problème..
En VBA, c'est un objet Range qu'il faut passer comme dernier paramètre, comme
cela est montré dans la procédure 'test' du module. Soit en affectant une
cellule à une variable avec Set soit en passant directement la cellule à la
fonction. Par ex :

MsgBox GetValueWithADO(fich, feuil, Range("A1"))

Dans une feuille de calcul, il faut laisser Excel se débrouiller et lui passer
seulement l'adresse de la cellule :

=GetValueWithADO("D:TestADO.xls";"feuil1";A1)

(A parte pour Denis : cette fonction ne nécessite pas de référence à une
bibliothèque particulière, dans la mesure où elle utilise le 'Late Binding')

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonsoir Frédéric,

J'avais essayé cette fonction mais qui malheureusement ne donne aucun
résultat.

En regardant de plus près les arguments de la fonction, il semble qu'il
y ait un problème dans l'interprétation de la référence : sous quelle
forme doit-elle être indiquée ?

Question subsidiaire : cette fonction est-elle également opérationnelle
avec XL 2000 ?

Merci de votre aide

Cordialement

Philippe




Bonjour,

C'est préciément ce que propose la fonction, par exemple, de ce module
de code :

http://frederic.sigonneau.free.fr/code/Ado/ADOGetValue.txt

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !





Avatar
Philippe
Malheureusement, j'ai essayé avec ce qui suit et aucun résultat n'est
affiché ! Snif !

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 'fs

Sub test()
Dim fich$, feuil$, Cell As Range
fich = "D:SauvegardesLaptopExcelGroupeExercice
2004Reporting 2004.11383 - Chantenat Situation 2004.11.xls"
feuil = "Tax Proof"
Set Cell = Range("M14")

MsgBox GetValueWithADO(fich, feuil, Cell)

End Sub


Bonsoir,

Je viens de la tester avec Excel 2000 et il n'y a pas de problème..
En VBA, c'est un objet Range qu'il faut passer comme dernier paramètre,
comme cela est montré dans la procédure 'test' du module. Soit en
affectant une cellule à une variable avec Set soit en passant
directement la cellule à la fonction. Par ex :

MsgBox GetValueWithADO(fich, feuil, Range("A1"))

Dans une feuille de calcul, il faut laisser Excel se débrouiller et lui
passer seulement l'adresse de la cellule :

=GetValueWithADO("D:TestADO.xls";"feuil1";A1)

(A parte pour Denis : cette fonction ne nécessite pas de référence à une
bibliothèque particulière, dans la mesure où elle utilise le 'Late
Binding')

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonsoir Frédéric,

J'avais essayé cette fonction mais qui malheureusement ne donne aucun
résultat.

En regardant de plus près les arguments de la fonction, il semble
qu'il y ait un problème dans l'interprétation de la référence : sous
quelle forme doit-elle être indiquée ?

Question subsidiaire : cette fonction est-elle également
opérationnelle avec XL 2000 ?

Merci de votre aide

Cordialement

Philippe




Bonjour,

C'est préciément ce que propose la fonction, par exemple, de ce
module de code :

http://frederic.sigonneau.free.fr/code/Ado/ADOGetValue.txt

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !







Avatar
michdenis
Bonjour Frédéric,

J'avais vu ADO ... mais en y portant plus attention, je crois reconnaître la fonction de John Walkenbach ...et
effectivement la référence n'est pas nécessaire .

Merci d'avoir corrigé.


Salutations!


"Frédéric Sigonneau" a écrit dans le message de news:

Bonsoir,

Je viens de la tester avec Excel 2000 et il n'y a pas de problème..
En VBA, c'est un objet Range qu'il faut passer comme dernier paramètre, comme
cela est montré dans la procédure 'test' du module. Soit en affectant une
cellule à une variable avec Set soit en passant directement la cellule à la
fonction. Par ex :

MsgBox GetValueWithADO(fich, feuil, Range("A1"))

Dans une feuille de calcul, il faut laisser Excel se débrouiller et lui passer
seulement l'adresse de la cellule :

=GetValueWithADO("D:TestADO.xls";"feuil1";A1)

(A parte pour Denis : cette fonction ne nécessite pas de référence à une
bibliothèque particulière, dans la mesure où elle utilise le 'Late Binding')

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonsoir Frédéric,

J'avais essayé cette fonction mais qui malheureusement ne donne aucun
résultat.

En regardant de plus près les arguments de la fonction, il semble qu'il
y ait un problème dans l'interprétation de la référence : sous quelle
forme doit-elle être indiquée ?

Question subsidiaire : cette fonction est-elle également opérationnelle
avec XL 2000 ?

Merci de votre aide

Cordialement

Philippe




Bonjour,

C'est préciément ce que propose la fonction, par exemple, de ce module
de code :

http://frederic.sigonneau.free.fr/code/Ado/ADOGetValue.txt

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !





Avatar
Philippe
Eurêka,

Cela fonctionne (je m'était trompé dans la référence...), mais
bizarrement la valeur renvoyée est du texte (cadrée à gauche) alors que
si je la multiplie x 1, elle devient un nombre (cadrée à droite) !

Merci encore

Philippe


Malheureusement, j'ai essayé avec ce qui suit et aucun résultat n'est
affiché ! Snif !

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 'fs

Sub test()
Dim fich$, feuil$, Cell As Range
fich = "D:SauvegardesLaptopExcelGroupeExercice
2004Reporting 2004.11383 - Chantenat Situation 2004.11.xls"
feuil = "Tax Proof"
Set Cell = Range("M14")

MsgBox GetValueWithADO(fich, feuil, Cell)

End Sub



Bonsoir,

Je viens de la tester avec Excel 2000 et il n'y a pas de problème..
En VBA, c'est un objet Range qu'il faut passer comme dernier
paramètre, comme cela est montré dans la procédure 'test' du module.
Soit en affectant une cellule à une variable avec Set soit en passant
directement la cellule à la fonction. Par ex :

MsgBox GetValueWithADO(fich, feuil, Range("A1"))

Dans une feuille de calcul, il faut laisser Excel se débrouiller et
lui passer seulement l'adresse de la cellule :

=GetValueWithADO("D:TestADO.xls";"feuil1";A1)

(A parte pour Denis : cette fonction ne nécessite pas de référence à
une bibliothèque particulière, dans la mesure où elle utilise le 'Late
Binding')

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonsoir Frédéric,

J'avais essayé cette fonction mais qui malheureusement ne donne aucun
résultat.

En regardant de plus près les arguments de la fonction, il semble
qu'il y ait un problème dans l'interprétation de la référence : sous
quelle forme doit-elle être indiquée ?

Question subsidiaire : cette fonction est-elle également
opérationnelle avec XL 2000 ?

Merci de votre aide

Cordialement

Philippe




Bonjour,

C'est préciément ce que propose la fonction, par exemple, de ce
module de code :

http://frederic.sigonneau.free.fr/code/Ado/ADOGetValue.txt

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !









Avatar
Frédéric Sigonneau
Re,

Je n'arrive pas à reproduire une situation où la fonction ne renvoie pas le
résultat attendu :(
Ni ton chemin à rallonge avec des espaces dans les noms des dossiers, ni la
présence de points ou tiret dans le chemin, ni le nom de feuille avec espace ne
sont, semble-t-il, à l'origine de ce que tu constates. J'ai essayé avec du
texte, un nombre, une formule dans la cellule cible, pas de problème.
La lecture de ton code (qui me paraît correct) ne me donne aucune autre piste où
chercher. Désolé, je ne comprends pas ce qui peut clocher.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Malheureusement, j'ai essayé avec ce qui suit et aucun résultat n'est
affiché ! Snif !

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 'fs

Sub test()
Dim fich$, feuil$, Cell As Range
fich = "D:SauvegardesLaptopExcelGroupeExercice
2004Reporting 2004.11383 - Chantenat Situation 2004.11.xls"
feuil = "Tax Proof"
Set Cell = Range("M14")

MsgBox GetValueWithADO(fich, feuil, Cell)

End Sub



Bonsoir,

Je viens de la tester avec Excel 2000 et il n'y a pas de problème..
En VBA, c'est un objet Range qu'il faut passer comme dernier
paramètre, comme cela est montré dans la procédure 'test' du module.
Soit en affectant une cellule à une variable avec Set soit en passant
directement la cellule à la fonction. Par ex :

MsgBox GetValueWithADO(fich, feuil, Range("A1"))

Dans une feuille de calcul, il faut laisser Excel se débrouiller et
lui passer seulement l'adresse de la cellule :

=GetValueWithADO("D:TestADO.xls";"feuil1";A1)

(A parte pour Denis : cette fonction ne nécessite pas de référence à
une bibliothèque particulière, dans la mesure où elle utilise le 'Late
Binding')

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonsoir Frédéric,

J'avais essayé cette fonction mais qui malheureusement ne donne aucun
résultat.

En regardant de plus près les arguments de la fonction, il semble
qu'il y ait un problème dans l'interprétation de la référence : sous
quelle forme doit-elle être indiquée ?

Question subsidiaire : cette fonction est-elle également
opérationnelle avec XL 2000 ?

Merci de votre aide

Cordialement

Philippe




Bonjour,

C'est préciément ce que propose la fonction, par exemple, de ce
module de code :

http://frederic.sigonneau.free.fr/code/Ado/ADOGetValue.txt

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !









1 2