|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Consultant MOA Inscription : septembre 2011 Messages : 9 ![]() |
Bonjour,
J'aurais grand besoin d'aide pour gérer la mise à jour automatisée de liaisons sur Excel... Voici mon problème : J'ai plusieurs fichiers : - Un fichier source qui contient des données de référence - Plusieurs fichiers destinations, qui reprennent des valeurs contenues dans mon fichier source (données liées, avec des formules type RECHERCHEV). Ces fichiers destinations sont tous rangés dans un même dossier. Je sais qu'en standard, la mise à jour d'un fichier destination se fait automatiquement à l'ouverture du fichier en question. Ma préoccupation aujourd'hui, est de pouvoir lancer la mise à jour des liaisons, sans avoir à ouvrir les multiples fichiers destinations. L'idéal serait d'avoir une macro dans le fichier source, qui me permette de déclencher la mise à jour de tous les fichiers destinations en "un clic". Je pensais utiliser la fonction UpdateLink, sur tous les fichiers contenus dans le dossier approprié, mais je n'ai pas réussi à aller au bout de mon idée. Quelqu'un saurait-il m'aider (en poursuivant cette piste ou une autre) ? Merci d'avance |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonsoir,
Mais pourquoi veux-tu les mettre à jour ?
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Consultant MOA Inscription : septembre 2011 Messages : 9 ![]() |
Bonsoir,
Je souhaite faire cette mise à jour pour m'assurer que tous les fichiers de destination contiennent les bonnes informations, même si la mise à jour automatique des liaisons à l'ouverture a été - par erreur - désactivée sur l'un des fichiers de destination. Merci d'avance. |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Philippe ex Observeur CGG / Analyste prog. Inscription : juin 2006 Messages : 1 703 ![]() |
Salut, je soppose que tu as consulté ceci http://silkyroad.developpez.com/VBA/ClasseursFermes/
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )Balisez votre code après l'avoir indenté sous Excel via Smart Indenter Autre utilitaire : MZ Tools 3.0 VBA Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2 |
|
|
00
|
|
|
#5 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Mets la macro suivante dans chacun des classeurs concernés : Code :
Private Sub Workbook_Open() copie simplement la ligne de code dans cette macro : Code :
ThisWorkbook.UpdateLinks = xlUpdateLinksAlways
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Consultant MOA Inscription : septembre 2011 Messages : 9 ![]() |
Bonjour,
Oui j'avais déjà consulté ce lien, mais je ne dois pas avoir les compétences pour m'en sortir malgré ces explications... Pour un peu plus de détails, voici la macro que j'ai essayé d'utiliser : Code :
La macro ne tourne pas (message : erreur 1004 la méthode UpdateLink de l'objet Workbook a échoué). De plus, j'aurais souhaité faire fonctionner cette macro sur tous les fichiers du dossier C:\dossier destination. D'avance un grand merci... |
||
|
|
00
|
|
|
#7 | ||||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Citation:
__________________
Cordialement. Daniel Citation:
|
||||
|
00
|
|
|
#8 |
|
Invité de passage
![]() Consultant MOA Inscription : septembre 2011 Messages : 9 ![]() |
Bonjour Daniel,
Merci beaucoup pour tes éléments de réponse. J'ai bien incorporé la macro à mes fichiers de destination, cela fonctionne très bien. Seulement, j'ai un cas réel qui rejoint ma demande initiale : J'ai toujours un fichier source, dont les modifications ont un impact sur mes fichiers de destination - que je vais appeler fichiers de 1e destination. Ensuite, j'ai des fichiers de 2e destination, qui s'appuient sur les modifications du fichier source ainsi que sur les données des fichiers de 1e destination impactées par les modifications du fichier source. Avec ta solution, je résous bien mon problème de mise à jour des liaisons quand j'ouvre tous les fichiers. Mais pour que les fichiers de 2e destination soient à jour, il faudrait que j'ouvre tous les fichiers de 1e destination avant. Connais-tu un moyen de lancer une mise à jour des liens pour tous les fichiers d'un même dossier, sans avoir à les ouvrir manuellement un à un ? Cela me permettrait de lancer automatiquement la mise à jour des fichiers de 1e destination, puis seulement ensuite d'ouvrir les fichiers de 2e destination en étant sûre que les données liées sont à jour. D'avance un grand merci ! |
|
|
00
|
|
|
#9 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Il faut ouvrir les fichiers de 1ère destination, mettre à jour les liens, puis faire de même avec les fichiers de seconde destination. Donc connaître le dossier et les noms de chacun de ces fichiers. On peut le faire avec une macro, oui. Si personne d'autre t'a répondu, je t'enverrai une macro dans l'après-midi. Voici un exemple, la macro se trouvant dans le classeur source, les classeurs destination de niveau 2 étant listés dans la variable Classeurs : Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
10
|
|
|
#10 | ||
|
Invité de passage
![]() Consultant MOA Inscription : septembre 2011 Messages : 9 ![]() |
Bonsoir Daniel,
Je te remercie sincèrement pour ton aide. J’ai réalisé des tests mais malheureusement je n’arrive pas à faire fonctionner ta macro. Peut-être auras-tu encore un peu de temps pour m’aider… En tout cas je te remercie déjà pour tes réponses précédentes. Je te mets ci-joint mes fichiers tests : fichier source, fichiers de destination 1 (1-1 et 1-2), fichiers de destination 2 (2-1 et 2-2). J’ai mis la macro que tu as proposée dans le fichier source, pour effectuer la mise à jour des fichiers de destination 1. Par rapport à ta macro, voici les différentes étapes : Code :
Très bonne journée -------------------------------------------------------------------------- Fichier joint dans vos discussions --------------------------------------------------------------------------- |
||
|
|
00
|
|
|
#11 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Ce que tu dois mettre dans la variable "Classeurs", c'est les classeurs destination de deuxième niveau : Code :
Classeurs = Array("C:\tests maj\fichier destination 2-1.xls", "C:\test maj\fichier destination 2-2.xls")
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Consultant MOA Inscription : septembre 2011 Messages : 9 ![]() |
Rebonjour,
J'ai fait les tests avec les différentes configurations : - Que les fichiers de destination 1, comme indiqué précédemment - Tous les fichiers de destination 1 et 2, même comportement que précédemment - Que les fichiers de destination 2, il y a un message d'erreur 1004 - le chemin est jugé incorrect, alors que l'adresse est juste Merci beaucoup... |
|
|
00
|
|
|
#13 | ||
![]() ![]() |
Bonjour,
Utiliser ActiveWorkbook, n'est pas une bonne idée tu devrais utiliser une variable workbook. Code :
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
||
|
00
|
|
|
#14 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
@Marylinh :
Sur quelle ligne, l'erreur ?
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Consultant MOA Inscription : septembre 2011 Messages : 9 ![]() |
Bonsoir,
@Daniel : L'erreur est ligne 6 (Classeurs = Array...) @ bbil : Merci pour ton conseil. Pourrais-tu me préciser ta réponse, notamment en m'indiquant comment indiquer le dossier contenant les fichiers à mettre à jour ? Merci à vous et bonne soirée |
|
|
00
|
|
|
#16 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Microclimat ? J'ai testé la ligne dans une macro à part (ligne toute seule dans la macro) et je n'ai pas d'erreur. Quel est le message d'erreur ?
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#17 | |
|
Invité de passage
![]() Consultant MOA Inscription : septembre 2011 Messages : 9 ![]() |
Bonsoir,
Peut-être un microclimat oui J'ai bien vérifié mes chemins et noms de fichiers, et tout est correct, pourtant j'ai ce message là : Citation:
Code :
Workbooks.Open Item, UpdateLinks = True Code :
Classeurs = Array("C:\tests maj\fichier destination 2-1.xls", "C:\tests maj\fichier destination 2-2.xls") |
|
|
|
01
|
|
|
#18 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Le problème vient de tes noms de dossier et de fichiers avec des espaces. Puisque ce sont des noms de test, renomme sans espace. Je ne mets JAMAIS d'espaces dans ces noms et je n'ai pas le temps de chercher aujourd'hui comment contourner ce problème.
Au temps pour moi, ne tiens pas compte de la réponse précédente. Poste la totalité de ton code.
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#19 | ||
|
Invité de passage
![]() Consultant MOA Inscription : septembre 2011 Messages : 9 ![]() |
Bonjour Daniel,
Voilà voilà j'ai refait des tests, réécrit mes chemins et noms de fichiers, et après vérification complète cela fonctionne, et très bien ! Alors merci mille fois ! Pour ceux à qui cela pourrait servir, et qui n'auraient pas le courage de relire toute la conversation, voilà le code en entier donné par Daniel, et qui marche : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com