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

Signaler
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011
-
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018
-
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

Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

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 !
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
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.
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

je ne comprends pas vraiment la demande.
Comment pourrais-tu obtenir le contenu d'un fichier sans l'ouvrir ?
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

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...
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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 ?)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
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)
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

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 ?
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
ton_fichier.visible = False
comme ça il n'apparait pas à l'écran !



si c'est la solution, penser : REPONSE ACCEPTEE
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

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 ?
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
10
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
Messages postés
27
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
18 mai 2011

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é !
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

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