Récupérer donnée d'un autre fichier sans l'ouvrir

Résolu
heleneML Messages postés 27 Date d'inscription jeudi 5 mai 2011 Statut Membre Dernière intervention 18 mai 2011 - 5 mai 2011 à 11:34
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 8 mai 2011 à 10:33
Bonjour,
J'essaie de récupérer une donnée d'un autre fichier, mais j'aimerai ne pas avoir à ouvrir ce fichier.
Voici mon code (où j'ouvre le fichier source puis le ferme)

Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open(chemin_fichier)
Set ws = wb.Worksheets("nom_feuille")
donnee = ws.Cells(5 , 4).Value
wb.Close

Ce code marche sans problème, mais il ouvre le fichier source. Comment est-ce possible de faire cette même opération sans ouvrir ce fichier ?

Merci d'avance !

12 réponses

heleneML Messages postés 27 Date d'inscription jeudi 5 mai 2011 Statut Membre Dernière intervention 18 mai 2011
5 mai 2011 à 14:34
En ajoutant dans les paramètres de Open (merci pour le conseil Calade), UpdateLinks=3, on ne voit effectivement pas la fenêtre (elle s'ouvre et se ferme effectivement en quelques pouillèmes de secondes Jack )
Sinon dans l'aide d'excel, j'ai regardé s'il y a un paramètre visible pour cette fonction, mais ça n'a pas l'air d'exister ! Je vais me contenter du updatelinks !

En tout cas, merci à tous pour votre aide !
Bonne journée !
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 mai 2011 à 14:35
En regardant dans l'aide, tu aurais vu qu'il n'existe pas de .Visible aux classeurs.
Cette propriété n'est valide que pour les feuilles (WorkSheet). Donc rien ne t'empêche de masquer chaque feuille après le Open.
3
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
5 mai 2011 à 11:38
Salut,

je ne comprends pas vraiment la demande.
Comment pourrais-tu obtenir le contenu d'un fichier sans l'ouvrir ?
0
heleneML Messages postés 27 Date d'inscription jeudi 5 mai 2011 Statut Membre Dernière intervention 18 mai 2011
5 mai 2011 à 11:43
C'est ma question, selon toi, il n'est pas possible de le faire ?
Pour récupérer ma donnée, je suis obligée de l'ouvrir et de le refermer par la suite, comme je le fais ?
Il n'y a pas de moyens pour seulement activer le fichier (comme ce qu'on peut fair il me semble avec une feuille d'un fichier) ?

Désolé, je n'y connais pas trop...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
5 mai 2011 à 11:48
Alors la réponse sera catégorique : non, tu ne peux pas.
Si tu veux avoir une info contenue dans un fichier il faut l'ouvrir (ça tombe sous le sens).
Pour un fichier Excel tu peux effectivement définir un "ActiveSheet", mais ton fichier est déjà ouvert (comment connaitre les sheets que contient ton Excel si tu ne l'ouvres pas ?)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 mai 2011 à 11:52
Salut

Et quelle raison te pousse à ne vouloir ouvrir ce fichier ?
Si tu ouvres le fichier juste le temps de récupérer deux ou trois infos, cela ne durera que quelques pouillème de secondes.
Si le fichier est déjà ouvert (par qqun d'autre), tu peux toujours en faire une copie et ouvrir la copie, mais les données seront celles du dernier enregistrement.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
heleneML Messages postés 27 Date d'inscription jeudi 5 mai 2011 Statut Membre Dernière intervention 18 mai 2011
5 mai 2011 à 12:00
Salut Jack et Jopop,
En fait, je ne veux pas ouvrir ce fichier car je ne veux pas que les utilisateurs voient ce fichier.
Sous Excel, quand on fait un lien, l'utilisateur ne voit pas le fichier source, Et j'aimerai que ça puisse être aussi le cas là. Mais si ce n'est vraiment pas possible...
(Je ne peux malheureusement passer directement par les formules excel, car le nom de mon fichier change dans le temps.)

Et je ne peux pas non plus faire une copie du fichier, car je ne serai plus là pour le faire... Sauf si ça peut se faire de façon automatique ?
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
5 mai 2011 à 12:43
ton_fichier.visible = False
comme ça il n'apparait pas à l'écran !



si c'est la solution, penser : REPONSE ACCEPTEE
0
heleneML Messages postés 27 Date d'inscription jeudi 5 mai 2011 Statut Membre Dernière intervention 18 mai 2011
5 mai 2011 à 14:02
ton_fichier.visible = False
comme ça il n'apparait pas à l'écran !


Merci pile_poil, mais je ne vois pas trop comment l'intégrer à mon code ni ou le mettre ?

Et une petite question, le fichier source, en s'ouvrant, fais ouvrir une boite de dialogue à propos de la mise à jour (ou non) du document. En ne le faisant pas apparaître, que va devenir cette boîte de dialogue ?
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
5 mai 2011 à 14:17
Bonjour,

Je ne peux pas vérifier sur ce micro, mais je crois que tu as un paramètre avec Open qui permet ou non de le rendre invisible.


Calade
0
heleneML Messages postés 27 Date d'inscription jeudi 5 mai 2011 Statut Membre Dernière intervention 18 mai 2011
5 mai 2011 à 14:23
J'ai essayé

Set wb Workbooks.Open(chemin_fichier).Visible False

Set wb = Workbooks.Open(chemin_fichier)
Workbooks(chemin_fichier).Visible = False

Mais aucun des deux ne semble fonctionné !
0
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
8 mai 2011 à 10:33
Bonjour,

Je prends en route...

Il y aurait peut-être une solution en passant par ThisWorkbook.IsAddin=True (masqué) dans Private Sub Workbook_Open()

Cordialement
Rataxes64
0
Rejoignez-nous