Bonjour
Je tourne en rond dans l'historique du newsgroup...
Comment indiquer le mot de passe d'accès au fichier Oph03.xls dans la
procédure qui suit.
Cette procédure se situant dans une boucle, la fenêtre du mot de passe
s'ouvre environ 200 fois... je dois donc l'indiquer dans le code, mais
comment ?
Worksheets("Programme").Cells(dl, dc).Formula = _
"='U:BlocArchives[Oph03.xls]Octobre 5'!C" & sl & " & " & Chr$(34) & " "
&
Chr$(34)
ou plus simplement, est il possible dans la formule ou par VBA d'indiquer
le
password d'une fichier lié fermé ou est-on OBLIGE de l'ouvrir?
La chose devrait être possible puisqu'il suffit de l'indiquer dans la
boite
de dialogue qui réclame le password pour accéder aux données sans ouvrir
le
fichier...
Merci d'avance
--
Eric Brue
http://e.brue.free.fr
Bonjour
Je tourne en rond dans l'historique du newsgroup...
Comment indiquer le mot de passe d'accès au fichier Oph03.xls dans la
procédure qui suit.
Cette procédure se situant dans une boucle, la fenêtre du mot de passe
s'ouvre environ 200 fois... je dois donc l'indiquer dans le code, mais
comment ?
Worksheets("Programme").Cells(dl, dc).Formula = _
"='U:BlocArchives[Oph03.xls]Octobre 5'!C" & sl & " & " & Chr$(34) & " "
&
Chr$(34)
ou plus simplement, est il possible dans la formule ou par VBA d'indiquer
le
password d'une fichier lié fermé ou est-on OBLIGE de l'ouvrir?
La chose devrait être possible puisqu'il suffit de l'indiquer dans la
boite
de dialogue qui réclame le password pour accéder aux données sans ouvrir
le
fichier...
Merci d'avance
--
Eric Brue
http://e.brue.free.fr
Bonjour
Je tourne en rond dans l'historique du newsgroup...
Comment indiquer le mot de passe d'accès au fichier Oph03.xls dans la
procédure qui suit.
Cette procédure se situant dans une boucle, la fenêtre du mot de passe
s'ouvre environ 200 fois... je dois donc l'indiquer dans le code, mais
comment ?
Worksheets("Programme").Cells(dl, dc).Formula = _
"='U:BlocArchives[Oph03.xls]Octobre 5'!C" & sl & " & " & Chr$(34) & " "
&
Chr$(34)
ou plus simplement, est il possible dans la formule ou par VBA d'indiquer
le
password d'une fichier lié fermé ou est-on OBLIGE de l'ouvrir?
La chose devrait être possible puisqu'il suffit de l'indiquer dans la
boite
de dialogue qui réclame le password pour accéder aux données sans ouvrir
le
fichier...
Merci d'avance
--
Eric Brue
http://e.brue.free.fr
Bonjour
Je tourne en rond dans l'historique du newsgroup...
Comment indiquer le mot de passe d'accès au fichier Oph03.xls dans la
procédure qui suit.
Cette procédure se situant dans une boucle, la fenêtre du mot de passe
s'ouvre environ 200 fois... je dois donc l'indiquer dans le code, mais
comment ?
Worksheets("Programme").Cells(dl, dc).Formula = _
"='U:BlocArchives[Oph03.xls]Octobre 5'!C" & sl & " & " & Chr$(34) & " " &
Chr$(34)
ou plus simplement, est il possible dans la formule ou par VBA d'indiquer le
password d'une fichier lié fermé ou est-on OBLIGE de l'ouvrir?
La chose devrait être possible puisqu'il suffit de l'indiquer dans la boite
de dialogue qui réclame le password pour accéder aux données sans ouvrir le
fichier...
Merci d'avance
--
Eric Brue
http://e.brue.free.fr
Bonjour
Je tourne en rond dans l'historique du newsgroup...
Comment indiquer le mot de passe d'accès au fichier Oph03.xls dans la
procédure qui suit.
Cette procédure se situant dans une boucle, la fenêtre du mot de passe
s'ouvre environ 200 fois... je dois donc l'indiquer dans le code, mais
comment ?
Worksheets("Programme").Cells(dl, dc).Formula = _
"='U:BlocArchives[Oph03.xls]Octobre 5'!C" & sl & " & " & Chr$(34) & " " &
Chr$(34)
ou plus simplement, est il possible dans la formule ou par VBA d'indiquer le
password d'une fichier lié fermé ou est-on OBLIGE de l'ouvrir?
La chose devrait être possible puisqu'il suffit de l'indiquer dans la boite
de dialogue qui réclame le password pour accéder aux données sans ouvrir le
fichier...
Merci d'avance
--
Eric Brue
http://e.brue.free.fr
Bonjour
Je tourne en rond dans l'historique du newsgroup...
Comment indiquer le mot de passe d'accès au fichier Oph03.xls dans la
procédure qui suit.
Cette procédure se situant dans une boucle, la fenêtre du mot de passe
s'ouvre environ 200 fois... je dois donc l'indiquer dans le code, mais
comment ?
Worksheets("Programme").Cells(dl, dc).Formula = _
"='U:BlocArchives[Oph03.xls]Octobre 5'!C" & sl & " & " & Chr$(34) & " " &
Chr$(34)
ou plus simplement, est il possible dans la formule ou par VBA d'indiquer le
password d'une fichier lié fermé ou est-on OBLIGE de l'ouvrir?
La chose devrait être possible puisqu'il suffit de l'indiquer dans la boite
de dialogue qui réclame le password pour accéder aux données sans ouvrir le
fichier...
Merci d'avance
--
Eric Brue
http://e.brue.free.fr
Bonsoir Eric,
Si c'est le classeur fermé qui est protégé, ce sera assez difficile de
passer à travers de la protection.
Par contre, si le classeur n'est pas protégé et que les feuilles sont
visibles (protégées ou non) tu peux utiliser les procédures suivantes pour
lire une valeur dans le classeur fermé.
Avec d'autres fonction du même accabit, on peut aussi lire des plages de
cellules, des tableaux nommés ou des feuilles entières de classeurs
fermés.
Voir mon classeur rd-lireferme sur
http://www.excelabo.net/moteurs/download2.php
Cordialement
Robert Dezan
--------------------------------------------------------------------------
--
----------------
Sub Recup_Cellule_Valeur()
' renvoie la valeur d'une cellule donnée dans un classeur fermé (NON
PROTEGE)
' la feuille de recherche 'Source_feuille' peut être protégée ou non
mais
NON MASQUEE
Source_NomComplet = "U:BlocArchivesOph03.xls"
Source_feuille = "Octobre 5"
i = 10 ' peut être une variable dans une boucle
j = 3 ' peut être une variable dans une boucle
Source_plage = Cells(i, j).Address ' ?? ==> "C" & s1 & " & " &
Chr$(34) & " " & Chr$(34)
MsgBox GetValueWithADO(Source_NomComplet, Source_feuille,
Source_plage)
End Sub
Function GetValueWithADO(ByVal Classeur$, ByVal Feuille$, ByVal
CellAdresse$)
' renvoie la valeur d'une cellule donnée dans un classeur fermé (non
protégé)
' la feuille de recherche peut être protégée mais NON MASQUEE
Dim rcdSet
Dim strConn As String
Dim strCmd As String
Dim dummyBase As Range
Set rcdSet = CreateObject("ADODB.Recordset")
'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, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly,
adCmdText
'et la renvoie
GetValueWithADO = Application.Clean(rcdSet.GetString(NumRows:=1))
End Function
--------------------------------------------------------------------------
--
Bonsoir Eric,
Si c'est le classeur fermé qui est protégé, ce sera assez difficile de
passer à travers de la protection.
Par contre, si le classeur n'est pas protégé et que les feuilles sont
visibles (protégées ou non) tu peux utiliser les procédures suivantes pour
lire une valeur dans le classeur fermé.
Avec d'autres fonction du même accabit, on peut aussi lire des plages de
cellules, des tableaux nommés ou des feuilles entières de classeurs
fermés.
Voir mon classeur rd-lireferme sur
http://www.excelabo.net/moteurs/download2.php
Cordialement
Robert Dezan
--------------------------------------------------------------------------
--
----------------
Sub Recup_Cellule_Valeur()
' renvoie la valeur d'une cellule donnée dans un classeur fermé (NON
PROTEGE)
' la feuille de recherche 'Source_feuille' peut être protégée ou non
mais
NON MASQUEE
Source_NomComplet = "U:BlocArchivesOph03.xls"
Source_feuille = "Octobre 5"
i = 10 ' peut être une variable dans une boucle
j = 3 ' peut être une variable dans une boucle
Source_plage = Cells(i, j).Address ' ?? ==> "C" & s1 & " & " &
Chr$(34) & " " & Chr$(34)
MsgBox GetValueWithADO(Source_NomComplet, Source_feuille,
Source_plage)
End Sub
Function GetValueWithADO(ByVal Classeur$, ByVal Feuille$, ByVal
CellAdresse$)
' renvoie la valeur d'une cellule donnée dans un classeur fermé (non
protégé)
' la feuille de recherche peut être protégée mais NON MASQUEE
Dim rcdSet
Dim strConn As String
Dim strCmd As String
Dim dummyBase As Range
Set rcdSet = CreateObject("ADODB.Recordset")
'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, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly,
adCmdText
'et la renvoie
GetValueWithADO = Application.Clean(rcdSet.GetString(NumRows:=1))
End Function
--------------------------------------------------------------------------
--
Bonsoir Eric,
Si c'est le classeur fermé qui est protégé, ce sera assez difficile de
passer à travers de la protection.
Par contre, si le classeur n'est pas protégé et que les feuilles sont
visibles (protégées ou non) tu peux utiliser les procédures suivantes pour
lire une valeur dans le classeur fermé.
Avec d'autres fonction du même accabit, on peut aussi lire des plages de
cellules, des tableaux nommés ou des feuilles entières de classeurs
fermés.
Voir mon classeur rd-lireferme sur
http://www.excelabo.net/moteurs/download2.php
Cordialement
Robert Dezan
--------------------------------------------------------------------------
--
----------------
Sub Recup_Cellule_Valeur()
' renvoie la valeur d'une cellule donnée dans un classeur fermé (NON
PROTEGE)
' la feuille de recherche 'Source_feuille' peut être protégée ou non
mais
NON MASQUEE
Source_NomComplet = "U:BlocArchivesOph03.xls"
Source_feuille = "Octobre 5"
i = 10 ' peut être une variable dans une boucle
j = 3 ' peut être une variable dans une boucle
Source_plage = Cells(i, j).Address ' ?? ==> "C" & s1 & " & " &
Chr$(34) & " " & Chr$(34)
MsgBox GetValueWithADO(Source_NomComplet, Source_feuille,
Source_plage)
End Sub
Function GetValueWithADO(ByVal Classeur$, ByVal Feuille$, ByVal
CellAdresse$)
' renvoie la valeur d'une cellule donnée dans un classeur fermé (non
protégé)
' la feuille de recherche peut être protégée mais NON MASQUEE
Dim rcdSet
Dim strConn As String
Dim strCmd As String
Dim dummyBase As Range
Set rcdSet = CreateObject("ADODB.Recordset")
'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, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly,
adCmdText
'et la renvoie
GetValueWithADO = Application.Clean(rcdSet.GetString(NumRows:=1))
End Function
--------------------------------------------------------------------------
--
Bonsoir,
Je crains bien en effet qu'il ne soit pas possible d'éviter d'ouvrir le
classeur
source dans ce cas. En effet, s'il est bien possible de fournir le mot de
passe
sans ouvrir le fichier quand on force un calcul de la cellule cible, comme
tu le
signales, la valeur source n'est pas récupérée pour autant (en tout cas,
chez
moi, je récupère une valeur d'erreur #N/A).
Ceci dit, ouvrir le classeur source, mettre à jour les données et le
refermer
peut se faire de façon transparente, et le mot de passe peut être saisi
avec un
SendKeys (pas élégant mais ça marche..).
A adapter dans ton contexte :
Sub test()
Dim Mdp$
Mdp = "zaza"
Application.ScreenUpdating = False
SendKeys Mdp & "~"
Workbooks.Open "U:BlocArchivesOph03.xls"
ThisWorkbook.Sheets(1).Range("A1").Formula = _
"='[Oph03.xls]Octobre 5'!A1"
Workbooks("Oph03.xls").Close False
End Sub
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
Je crains bien en effet qu'il ne soit pas possible d'éviter d'ouvrir le
classeur
source dans ce cas. En effet, s'il est bien possible de fournir le mot de
passe
sans ouvrir le fichier quand on force un calcul de la cellule cible, comme
tu le
signales, la valeur source n'est pas récupérée pour autant (en tout cas,
chez
moi, je récupère une valeur d'erreur #N/A).
Ceci dit, ouvrir le classeur source, mettre à jour les données et le
refermer
peut se faire de façon transparente, et le mot de passe peut être saisi
avec un
SendKeys (pas élégant mais ça marche..).
A adapter dans ton contexte :
Sub test()
Dim Mdp$
Mdp = "zaza"
Application.ScreenUpdating = False
SendKeys Mdp & "~"
Workbooks.Open "U:BlocArchivesOph03.xls"
ThisWorkbook.Sheets(1).Range("A1").Formula = _
"='[Oph03.xls]Octobre 5'!A1"
Workbooks("Oph03.xls").Close False
End Sub
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
Je crains bien en effet qu'il ne soit pas possible d'éviter d'ouvrir le
classeur
source dans ce cas. En effet, s'il est bien possible de fournir le mot de
passe
sans ouvrir le fichier quand on force un calcul de la cellule cible, comme
tu le
signales, la valeur source n'est pas récupérée pour autant (en tout cas,
chez
moi, je récupère une valeur d'erreur #N/A).
Ceci dit, ouvrir le classeur source, mettre à jour les données et le
refermer
peut se faire de façon transparente, et le mot de passe peut être saisi
avec un
SendKeys (pas élégant mais ça marche..).
A adapter dans ton contexte :
Sub test()
Dim Mdp$
Mdp = "zaza"
Application.ScreenUpdating = False
SendKeys Mdp & "~"
Workbooks.Open "U:BlocArchivesOph03.xls"
ThisWorkbook.Sheets(1).Range("A1").Formula = _
"='[Oph03.xls]Octobre 5'!A1"
Workbooks("Oph03.xls").Close False
End Sub
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !