Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lire une plage dans un fichier fermé

8 réponses
Avatar
Spin
Bonjour,

Mon pb est de pouvoir lire depuis un classeur xl une plage dans un
fichier ferm=E9 et pas forc=E9ment enregistr=E9 dans le m=EAme r=E9pertoire.

D'apr=E8s ce que j'ai pu trouver comme aide, il semble que l'instruction
Open est indispensable pour ouvrir virtuellement le classeur, mais
apr=E8s ???

J'ai essay=E9 avec l'instruction get, mais =E7a ne marche pas...

Quelqu'un a t'il la solution ?

Merci

8 réponses

Avatar
Modeste
Bonsour® antoine

notre Bobby a semble-t-il déja pensé à toi :
http://www.excelabo.net/moteurs/compteclic.php?nom=rd-lireferme


;o)))
@+

--
les news pas à jour ?? ne passez plus par votre FAI, les news à la source
!!!
placez ce raccourci dans la ligne de commande
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
Avatar
JB
Bonjour,

Dans l'exemple ci dessous, on récupère un champ C1:C2 d'un autre
classeur fermé
Le nom du classeur où l'info est à récupérer est située en B2:

http://cjoint.com/?mbwBiRyzxr

Sub interro2()
Range("D2:D3").Select
Selection.FormulaArray = "=[" & [b2] & ".xls]Feuil1!R1C3:R2C3"
' Selection.FormulaArray =
"='C:mesdocexcel_macro_nouveau401exemples[" & [b2] &
".xls]Feuil1'!R1C3:R2C3"
End Sub


Cordialement JB
Avatar
Spin
Bonjour

La solution proposée par Modeste est bien lourde pour ce que je
cherche à faire.
N'y aurait-il pas plus silmple. En particulier, est-il nécessaire
d'aller chercher des références de bibliothèques (ActiveX Data
Objects, ADO Ext.2.x for DDL, etc...)?

La solution de JB ne fonctionne pas et de plus n'est qu'une formule qui
s'inscrit dans une cellule. Pour mon application, il faut simplmeent
que je récupère une donnée pour ensuite l'exploiter dans une macro.

Si vous avez d'autres idées ...

Merci d'avance
Spin
Avatar
michdenis
Bonjour Spin,

Tu ne donnes pas beaucoup d'informations sur ce que tu veux récupérer dans un fichier fermé ?

Le contenu d'une grande plage de cellules ? De seulement quelques cellules ? toujours les mêmes ?

Qu'est-ce que tu entends par lire ? Importer les données dans une feuille ? Les visualiser à l'écran ?
Que les données soient accessibles seulement dans le code ?

Voici comment récupérer le contenu d'une cellule nommé "Toto" dans un classeur fermé Classeur1.xls

SaValeur = Application.ExecuteExcel4Macro("'C:Atravailclasseur1.xls'!toto")


Salutations!



"Spin" a écrit dans le message de news:
Bonjour

La solution proposée par Modeste est bien lourde pour ce que je
cherche à faire.
N'y aurait-il pas plus silmple. En particulier, est-il nécessaire
d'aller chercher des références de bibliothèques (ActiveX Data
Objects, ADO Ext.2.x for DDL, etc...)?

La solution de JB ne fonctionne pas et de plus n'est qu'une formule qui
s'inscrit dans une cellule. Pour mon application, il faut simplmeent
que je récupère une donnée pour ensuite l'exploiter dans une macro.

Si vous avez d'autres idées ...

Merci d'avance
Spin
Avatar
JB
Bonjour,

http://cjoint.com/?mjvqzG3pI7

Sub Get_Object()
ChDir ActiveWorkbook.Path
Dim monclasseur As Workbook
Set monclasseur = GetObject("x.xls")
[D2] = monclasseur.Worksheets(1).Range("C1")
[D3] = monclasseur.Worksheets(1).Range("D1")
End Sub

JB
Avatar
Spin
JB t'es un as.
C'est exactement ce que je cherchais.

En revanche, il faut que le nom de fichier x.xls inclu le chemin exact
pour que la macro focntionne bien. Et du coup je ne vois pas bien
l'interrêt de l'instruction ChDir (ça fonctionne aussi bien sans).

Pour mon application, je vais récuperer le nom du fichier (et son
chemin d'accès) dans la liste des liaisons existantes dans mon fichier
ectif. J'ai maintenant un petit soucis pour trouver le bon lien car
j'en ai un paquet, mais je suis sur la bonne voie pour la solution.

Encore merci pour la soluce.
Si tu peux m'éclairer pour l'instruction ChDir
Avatar
michdenis
Bonjour Spin,

Je ne sais pas ce que tu veux réaliser...

Pour afficher les liens disponibles dans ton classeur :

Pour les liens OLE -> la constante : xlOLELinks
Pour les autres -> xlExcelLinks

'---------------------
Sub ListerLesLiensDuFichier()

liens = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(liens) Then
For i = 1 To UBound(liens)
MsgBox "Lien " & i & ":" & Chr(13) & liens(i)
Next i
End If

End Sub
'---------------------


Salutations!




"Spin" a écrit dans le message de news:
JB t'es un as.
C'est exactement ce que je cherchais.

En revanche, il faut que le nom de fichier x.xls inclu le chemin exact
pour que la macro focntionne bien. Et du coup je ne vois pas bien
l'interrêt de l'instruction ChDir (ça fonctionne aussi bien sans).

Pour mon application, je vais récuperer le nom du fichier (et son
chemin d'accès) dans la liste des liaisons existantes dans mon fichier
ectif. J'ai maintenant un petit soucis pour trouver le bon lien car
j'en ai un paquet, mais je suis sur la bonne voie pour la solution.

Encore merci pour la soluce.
Si tu peux m'éclairer pour l'instruction ChDir
Avatar
JB
Bonjour,

Pour obtenir des applis portables dans n'importe quel répertoire, je
ne spécifie pas les chemins des fichiers en dur.
Tous les chemins spécifiés sont relatifs au répertoire où est
installée l'application Excel.
Avec ChDir ActiveWorkbook.Path, le répertoire courant devient celui du
classeur Excel.

JB