Ouverture d'un fichier depuis un autre
Fermé
touroul
-
Modifié par touroul le 21/11/2016 à 20:21
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 - 26 nov. 2016 à 20:47
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 - 26 nov. 2016 à 20:47
A voir également:
- Ouverture d'un fichier depuis un autre
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
- Fichier iso - Guide
10 réponses
yg_be
Messages postés
22719
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
21 nov. 2016 à 21:29
21 nov. 2016 à 21:29
Je me demande à quel moment Excel indique ne pas pouvoir mettre à jour les liaisons du classeur.
Pour découvrir cela, je suggère soit d'ajouter des msgbox ou des debug.print dans le code de Workbook_Open(), soit de mettre un point d’arrêt au début du code de Workbook_Open(), et de l'exécuter pas à pas, pour voir quand le message se produit.
Pour découvrir cela, je suggère soit d'ajouter des msgbox ou des debug.print dans le code de Workbook_Open(), soit de mettre un point d’arrêt au début du code de Workbook_Open(), et de l'exécuter pas à pas, pour voir quand le message se produit.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 684
21 nov. 2016 à 22:10
21 nov. 2016 à 22:10
Bonjour,
Comment éviter ce message ?
Je pense que ton message vient des paramètres de confidentialité mais malgré pas mal de restrictions mises en place, je n'ai pas pu reproduire ton anomalie.
Cela peut aussi être dû à une exécution asynchrone trop rapide. Quand tu mets à jour ta synchronisation des liaisons, tu peux partir sur un thread tandis qu'un autre ouvre le classeur sans avoir l'info de mise à jour, vu la vitesse des machines.
Je tenterai de mettre
Bonne soirée à toi.
Comment éviter ce message ?
Je pense que ton message vient des paramètres de confidentialité mais malgré pas mal de restrictions mises en place, je n'ai pas pu reproduire ton anomalie.
Cela peut aussi être dû à une exécution asynchrone trop rapide. Quand tu mets à jour ta synchronisation des liaisons, tu peux partir sur un thread tandis qu'un autre ouvre le classeur sans avoir l'info de mise à jour, vu la vitesse des machines.
Je tenterai de mettre
DoEventsen tête de la macro voir si cela résout le problème.
Bonne soirée à toi.
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
25 nov. 2016 à 19:40
25 nov. 2016 à 19:40
Salut cher GB, salut ami(e) belge
Je viens de passer quelques heures à chercher la solution à ce problème ...
GB avait raison, c'est bien la vitesse de calcul du PC qui est en cause !
J'ai testé le même fichier sur un core i5 datant de 4 ans, alors que le mien est tout neuf (core i5 "Lynnfield", le dernier) : et bien aucun problème !!!
Le problème c'est qu'Excel recalcule les liaisons directement à l'ouverture : dans le cas d'un processeur puissant, il effectue ces calculs plus rapidement, dès l'ouverture du classeur, avant même l'ouverture du fichier lié.
Avec un PC plus ancien, l'ouverture du fichier lié occupe tous les core dispos, et les calculs passent en second plan.
D'ailleurs, comme le conseillait YG, le code exécuté pas-à-pas ne plante pas.
C'est balot quand-même !
Le DoEvents placé en tête de macro n'a pas d'effet malheureusement, j'ai aussi essayé avec
je n'ai pas trouvé d'autre solution, merci à vous deux.
Je viens de passer quelques heures à chercher la solution à ce problème ...
GB avait raison, c'est bien la vitesse de calcul du PC qui est en cause !
J'ai testé le même fichier sur un core i5 datant de 4 ans, alors que le mien est tout neuf (core i5 "Lynnfield", le dernier) : et bien aucun problème !!!
Le problème c'est qu'Excel recalcule les liaisons directement à l'ouverture : dans le cas d'un processeur puissant, il effectue ces calculs plus rapidement, dès l'ouverture du classeur, avant même l'ouverture du fichier lié.
Avec un PC plus ancien, l'ouverture du fichier lié occupe tous les core dispos, et les calculs passent en second plan.
D'ailleurs, comme le conseillait YG, le code exécuté pas-à-pas ne plante pas.
C'est balot quand-même !
Le DoEvents placé en tête de macro n'a pas d'effet malheureusement, j'ai aussi essayé avec
Application.Wait(Now + TimeValue("0:00:10"))sans résultat.
je n'ai pas trouvé d'autre solution, merci à vous deux.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 684
25 nov. 2016 à 21:30
25 nov. 2016 à 21:30
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
22719
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
26 nov. 2016 à 12:05
26 nov. 2016 à 12:05
Ne serait-il pas plus simple de désactiver la mise à jour automatique des liens, et de faire cette mise à jour à partir de la macro, après avoir ouvert (B)? (Je suppose qu'on peut programmer cette mise à jour, puisqu'on peut le faire à la main).
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
26 nov. 2016 à 12:26
26 nov. 2016 à 12:26
C'est une idée mais ça perturberait le fonctionnement de tous mes autres programmes qui ne posent pas de problème.
Je préfère avoir à valider cette maudite boîte de dialogue.
J'ai une autre idée, je ressaie lundi.
Merci encore
Je préfère avoir à valider cette maudite boîte de dialogue.
J'ai une autre idée, je ressaie lundi.
Merci encore
yg_be
Messages postés
22719
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
26 nov. 2016 à 14:00
26 nov. 2016 à 14:00
Je pense que le fonds du problème, c'est que les liens dans (A) ne contiennent pas le chemin vers le fichier (B), donc ne fonctionnent que si le fichier (B) est préalablement ouvert.
Ouvrir (B) juste après (A) est une façon (visiblement peu fiable) de contourner le problème.
Ouvrir (B) juste après (A) est une façon (visiblement peu fiable) de contourner le problème.
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
26 nov. 2016 à 10:11
26 nov. 2016 à 10:11
Salut GB
Bien vu mais cette option était déjà activée chez moi.
En continuant mes recherches, je me suis demandé si ce message
Je dis ça parce que le fichier "B" comprend lui aussi des macros dans Private Sub Workbook open. (réinitialisation des filtres, mises à jour d'autres feuilles, ...).
Y aurait-il un moyen de désactiver les macros du fichier "B" ?
Je m'accroche, je n'aime pas les problèmes non résolus, ils font progresser !
A plus
Bien vu mais cette option était déjà activée chez moi.
En continuant mes recherches, je me suis demandé si ce message
"Pour l'instant, nous ne parvenons pas à mettre à jour des liaisons de votre classeur. Vous pouvez continuer sans mettre à jour les valeurs ou modifier les liaisons qui sont incorrectes"... ne serait pas un message provenant de mon fichier "B" et pas du principal("A").
Je dis ça parce que le fichier "B" comprend lui aussi des macros dans Private Sub Workbook open. (réinitialisation des filtres, mises à jour d'autres feuilles, ...).
Y aurait-il un moyen de désactiver les macros du fichier "B" ?
Je m'accroche, je n'aime pas les problèmes non résolus, ils font progresser !
A plus
yg_be
Messages postés
22719
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
26 nov. 2016 à 10:32
26 nov. 2016 à 10:32
Il n'y a aucune formule en (A) du type :
Où avais-tu essayé
Moi j'essayerais :
Je me demande si Excel n'est pas perturbé parce qu'il doit ouvrir simultanément deux fois le fichier c:\Covoiturage\ListeConducteurs.xlsm, d'une part pour calculer les liens en (A), d'autre part pour le Workbooks.Open.
=NB.SI('ListeConducteurs.xlsm'!Tableau1[Colonne14];H14)?
Où avais-tu essayé
Application.Wait(Now + TimeValue("0:00:10"))?
Moi j'essayerais :
If estouvert = False Then Application.Wait(Now + TimeValue("0:00:10")) Workbooks.Open ("c:\Covoiturage\ListeConducteurs.xlsm") Application.Wait(Now + TimeValue("0:00:10")) end if
Je me demande si Excel n'est pas perturbé parce qu'il doit ouvrir simultanément deux fois le fichier c:\Covoiturage\ListeConducteurs.xlsm, d'une part pour calculer les liens en (A), d'autre part pour le Workbooks.Open.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 684
26 nov. 2016 à 11:04
26 nov. 2016 à 11:04
Bonjour,
Y aurait-il un moyen de désactiver les macros du fichier "B" ?
Tu l'a déjà fait :
C'est plutôt cette phrase qui me titille :
"modifier les liaisons qui sont incorrectes"
As-tu vérifié si c'est le cas ou si ce n'est qu'un message passe partout d'excel ?
Y aurait-il un moyen de désactiver les macros du fichier "B" ?
Tu l'a déjà fait :
Application.EnableEvents = False
C'est plutôt cette phrase qui me titille :
"modifier les liaisons qui sont incorrectes"
As-tu vérifié si c'est le cas ou si ce n'est qu'un message passe partout d'excel ?
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
26 nov. 2016 à 11:14
26 nov. 2016 à 11:14
Bonjour Yg
Si, dans le fichier "A" il y a environ 300 formules de ce type-là.
J'avais essayé
J'ai injecté ton code en début de macro : dans ce cas, le fameux message arrive encore plus tôt, ce qui prouve que les formules de "A" sont bien celles qui s'exécutent en priorité, avant la prise en compte du "If estouvert = False".
@GB :
C'est en effet un message passe-partout, car quand je vérifie les liaisons suite au message ... il n'y a rien !
Je continue les essais.
Merci à tous les 2 pour votre aide !
Si, dans le fichier "A" il y a environ 300 formules de ce type-là.
J'avais essayé
Application.Wait(Now + TimeValue("0:00:10"))mais pas au même endroit que toi.
J'ai injecté ton code en début de macro : dans ce cas, le fameux message arrive encore plus tôt, ce qui prouve que les formules de "A" sont bien celles qui s'exécutent en priorité, avant la prise en compte du "If estouvert = False".
@GB :
C'est en effet un message passe-partout, car quand je vérifie les liaisons suite au message ... il n'y a rien !
Je continue les essais.
Merci à tous les 2 pour votre aide !
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 684
26 nov. 2016 à 11:26
26 nov. 2016 à 11:26
Re
Dans le fichier "A" , dans "Formules" / "Gestionnaire de noms" n'aurait-tu pas des références avec "#REF" ,
Dans le fichier "A" , dans "Formules" / "Gestionnaire de noms" n'aurait-tu pas des références avec "#REF" ,
yg_be
Messages postés
22719
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
Modifié par yg_be le 26/11/2016 à 11:57
Modifié par yg_be le 26/11/2016 à 11:57
Dans le fichier (A), tu as vraiment des liens vers ListeConducteurs.xlsm et d'autres vers 'c:\Covoiturage\ListeConducteurs.xlsm'?
Si oui, que se passe-t-il si tu n'ouvres pas du tout (B)?
Peut-être faut-il ouvrir (B) avant (A), par exemple à partir de (C).
Si oui, que se passe-t-il si tu n'ouvres pas du tout (B)?
Peut-être faut-il ouvrir (B) avant (A), par exemple à partir de (C).
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
26 nov. 2016 à 11:55
26 nov. 2016 à 11:55
Oui Yg, il y en a à peu près 300 dans les formules des cellules :
Ils sont tous du type
Les liens type 'c:\Covoiturage\ListeConducteurs.xlsm' sont seulement présents dans le Workbook Open, ils ouvrent le fichier distant.
Pour info je viens de désactiver toutes les macros de "B", c'est idem ...
GRRR ..
Ils sont tous du type
=NB.SI('ListeConducteurs.xlsm'!Tableau1[Colonne14];H14)
Les liens type 'c:\Covoiturage\ListeConducteurs.xlsm' sont seulement présents dans le Workbook Open, ils ouvrent le fichier distant.
Pour info je viens de désactiver toutes les macros de "B", c'est idem ...
GRRR ..
yg_be
Messages postés
22719
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
26 nov. 2016 à 12:01
26 nov. 2016 à 12:01
Tu écris "quand je vérifie les liaisons suite au message ... il n'y a rien". Tu veux dire "tout semble normal"?
Je suppose, cependant, que les liens n'ont pas été réévalués, et que les valeurs correspondent à celles qui étaient dans (A) avant de l'ouvrir.
Je suppose, cependant, que les liens n'ont pas été réévalués, et que les valeurs correspondent à celles qui étaient dans (A) avant de l'ouvrir.
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
26 nov. 2016 à 12:28
26 nov. 2016 à 12:28
C'est bien le cas, aucun message d'erreur sur un autre PC.
Les liens sont les mêmes, le fichier "B" est sur le réseau de l'entreprise, j'ai un VPN à distance
Les liens sont les mêmes, le fichier "B" est sur le réseau de l'entreprise, j'ai un VPN à distance
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
26 nov. 2016 à 11:37
26 nov. 2016 à 11:37
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 684
26 nov. 2016 à 11:46
26 nov. 2016 à 11:46
Re:
Je parlais du classeur A
"Segment_Régions" est généré par le TCD
Il me semble tout de même qu'il doit y avoir quelque chose qui gêne.
As-tu essayé de mettre l'ouverture en commentaire pour voir si le message arrivait tout de même ?
Ton essai avec un autre PC utilisait exactement les mêmes classeurs ?
Je parlais du classeur A
"Segment_Régions" est généré par le TCD
Il me semble tout de même qu'il doit y avoir quelque chose qui gêne.
As-tu essayé de mettre l'ouverture en commentaire pour voir si le message arrivait tout de même ?
Ton essai avec un autre PC utilisait exactement les mêmes classeurs ?
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
26 nov. 2016 à 11:59
26 nov. 2016 à 11:59
Oui je viens d'essayer en désactivant toutes les macros de "B", idem.
Sur un autre PC plus lent, c'est parfait aucun message d'erreur lié aux mises à jour.
C'est dingue.
Je reprends ça lundi
Sur un autre PC plus lent, c'est parfait aucun message d'erreur lié aux mises à jour.
C'est dingue.
Je reprends ça lundi
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
26 nov. 2016 à 19:04
26 nov. 2016 à 19:04
Yg, si je comprends bien ton raisonnement, tu penses que les formules de ma feuille A devraient être référencées autrement.
À l'heure actuelle, ces formules sont de type :
=NB.SI('ListeConducteurs.xlsm'!Tableau1[Colonne14];H14)
Je pense que tu me conseilles d'essayer avec :
=NB.SI(c:\Covoiturage\ListeConducteurs.xlsm'!Tableau1[Colonne14];H14)
Je vais essayer et je te dirai.
On va y arriver ...
À l'heure actuelle, ces formules sont de type :
=NB.SI('ListeConducteurs.xlsm'!Tableau1[Colonne14];H14)
Je pense que tu me conseilles d'essayer avec :
=NB.SI(c:\Covoiturage\ListeConducteurs.xlsm'!Tableau1[Colonne14];H14)
Je vais essayer et je te dirai.
On va y arriver ...
yg_be
Messages postés
22719
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
26 nov. 2016 à 19:15
26 nov. 2016 à 19:15
C'était un peu confus, étant donné que tu avais spécifié dans ta question que tes formules étaient du genre
=NB.SI('c:\Covoiturage\ListeConducteurs.xlsm'!Tableau1[Colonne14];H14)
touroul
Messages postés
465
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
29 janvier 2024
15
26 nov. 2016 à 20:47
26 nov. 2016 à 20:47
C'est exact, j'ai fait cette erreur en ré-exprimant ma demande.
mais le c:\ n'y était pas.
J'ai fait un essai en local, ça ne change rien au problème, qu'elle que soit la manière d'écrire l'adresse du fichier.
J'essaierai d'autres trucs lundi.
mais le c:\ n'y était pas.
J'ai fait un essai en local, ça ne change rien au problème, qu'elle que soit la manière d'écrire l'adresse du fichier.
J'essaierai d'autres trucs lundi.