OVH Cloud OVH Cloud

lien vers classeur fermé

1 réponse
Avatar
Olivier
Bonjour

je ne sais plus si cette question a déjà été posée sur ce groupe.
Je la repose donc

j'utilise la fonction suivante qui fonctionne
Elle renvoie la valeur d'une cellule donnée dans un classeur fermé
et nécessite une référence à la bibliothèque Microsoft ActiveX Data Objects
2.x Library
Malheureusement elle ne semble pas fonctionner quand ce classeur est protégé
en lecture seule.
y'a t-il une solution ? Quelqu'un pourrait il me dire pourquoi ,
merci d'avance

Olivier

Function GetValueWithADO(Classeur$, Feuille$, CellAdresse$)
'renvoie la valeur d'une cellule donnée dans un classeur fermé
'nécessite une référence à la bibliothèque
'Microsoft ActiveX Data Objects 2.x Library
Dim rcdSet As New ADODB.Recordset
Dim strConn As String
Dim strCmd As String
Dim dummyBase As Range, Arr

'prépare une "base de données" bidon pour la clause SELECT
'(une entête fictive et une ligne de données)
Set dummyBase = Range(CellAdresse).Resize(2)

'prépare les commandes ADO
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) & "]"

'va chercher l'info
rcdSet.Open strCmd, strConn, adOpenForwardOnly, adLockReadOnly,
adCmdText

'et la renvoie
GetValueWithADO = Application.Clean(rcdSet.GetString(NumRows:=1))

End Function

1 réponse

Avatar
Ange Ounis
Utilise cette fonction de John Walkenbach :

http://www.j-walk.com/ss/excel/tips/tip82.htm

(les macros Excel 4 se moquent de la protection des classeurs comme des
feuilles, pour autant que je sache).

----------
Ange Ounis
----------


Bonjour

je ne sais plus si cette question a déjà été posée sur ce groupe.
Je la repose donc

j'utilise la fonction suivante qui fonctionne
Elle renvoie la valeur d'une cellule donnée dans un classeur fermé
et nécessite une référence à la bibliothèque Microsoft ActiveX Data Objects
2.x Library
Malheureusement elle ne semble pas fonctionner quand ce classeur est protégé
en lecture seule.
y'a t-il une solution ? Quelqu'un pourrait il me dire pourquoi ,
merci d'avance

Olivier

Function GetValueWithADO(Classeur$, Feuille$, CellAdresse$)
'renvoie la valeur d'une cellule donnée dans un classeur fermé
'nécessite une référence à la bibliothèque
'Microsoft ActiveX Data Objects 2.x Library
Dim rcdSet As New ADODB.Recordset
Dim strConn As String
Dim strCmd As String
Dim dummyBase As Range, Arr

'prépare une "base de données" bidon pour la clause SELECT
'(une entête fictive et une ligne de données)
Set dummyBase = Range(CellAdresse).Resize(2)

'prépare les commandes ADO
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) & "]"

'va chercher l'info
rcdSet.Open strCmd, strConn, adOpenForwardOnly, adLockReadOnly,
adCmdText

'et la renvoie
GetValueWithADO = Application.Clean(rcdSet.GetString(NumRows:=1))

End Function