liaison en cascade

BZH56

XLDnaute Occasionnel
bonjour au forum
a partir de fichier individuel , j effectue un copier/collage spécial pour récupérer des valeurs dans un premier fichier de synthèse (une équipe de travail) et je lie a nouveau le fichier de synthèse avec un fichier global qui rassemble les synthèses de chaque équipe.
Mon problème est de pouvoir mettre a jour le fichier global sans avoir a passer par l actualisation du fichier de synthèse intermédiaire en l'ouvrant.. je joint un exemple des fichiers.
(pourquoi faire simple quand on peut compliquer...)
mon souhait est de créer un bouton macro dans le fichier global qui irait mettre a jour seulement a la demande.

si une âme charitable peut me simplifier la vie . merci d avance:rolleyes:
 

Pièces jointes

  • liaison.zip
    22 KB · Affichages: 39
  • liaison.zip
    22 KB · Affichages: 42
  • liaison.zip
    22 KB · Affichages: 41

Hippolite

XLDnaute Accro
Re : liaison en cascade

Bonjour BZH56,
Ce que tu souhaites nécessite de travailler avec des classeurs fermés.
Il y a des restrictions à prendre en compte.
Regarde si tu trouves des infos dans :
Lire et écrire dans les classeurs Excel fermés
Je n'ai pas Excel sous la main pour tester, mais ça m'étonnerait qu'un collage avec liaison s'actualise tout seul. Je pense que tu seras obligé de passer par des macros (requête UPDATE ?).
 

BZH56

XLDnaute Occasionnel
Re : liaison en cascade

je viens d essayer ce code avec les classeurs fermes et cela me semble marcher
J ouvre le fichier intermédiaire , j actualise les liens , je ferme en sauvegardant , votre avis?
Code:
Workbooks.Open Filename:="C:\Users\domi\Documents\equipe1.xls", UpdateLinks _
        :=0
    ActiveWorkbook.UpdateLink Name:="C:\Users\domi\Documents\jean.xls", Type:= _
        xlExcelLinks
    ActiveWorkbook.UpdateLink Name:="C:\Users\domi\Documents\luc.xls", Type:= _
        xlExcelLinks
    ActiveWorkbook.UpdateLink Name:="C:\Users\domi\Documents\pierre.xls", Type _
        :=xlExcelLinks
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    ActiveWorkbook.UpdateLink Name:="C:\Users\domi\Documents\equipe1.xls", Type _
        :=xlExcelLinks
merci hipppolite
 

BZH56

XLDnaute Occasionnel
Re : liaison en cascade -erreur 1004

il me reste un bug a réglé car lorsqu'un des fichiers individuels est ouvert ,le fichier total récupère bien les valeurs ,mais le fichier intermédiaire de l'equipe reste ouvert et un message d erreur apparait "erreur d exécution 1004 -la méthode 'Updatelink" de l'objet _Worbook a echoué .
Hippolite m avait prévenu mais je persiste
comment contourne par la gestion d erreur et en refermant ce fichier intermédiaire.
:)merci de votre aide
 

JNP

XLDnaute Barbatruc
Re : liaison en cascade

Bonjour le fil :),
Comme ceci peut-être
Code:
Sub test()
Dim Classeur As Workbook
Application.DisplayAlerts = False
For Each Classeur In Workbooks
If Classeur.Name <> ThisWorkbook.Name Then Classeur.Close
Next
Application.DisplayAlerts = True
End Sub
ATTENTION, j'ai coupé les messages d'alerte donc les classeurs ouverts seront fermés sans possibilité d'enregistrement :p...
Bon dimanche :cool:
 

BZH56

XLDnaute Occasionnel
Re : liaison en cascade

Bonjour le fil :),
Comme ceci peut-être
Code:
Sub test()
Dim Classeur As Workbook
Application.DisplayAlerts = False
For Each Classeur In Workbooks
If Classeur.Name <> ThisWorkbook.Name Then Classeur.Close
Next
Application.DisplayAlerts = True
End Sub
ATTENTION, j'ai coupé les messages d'alerte donc les classeurs ouverts seront fermés sans possibilité d'enregistrement :p...
Bon dimanche :cool:

merci jnp de ta suggestion mais un peu trop radicale.En théorie la maj se fera en dehors de l utilisation mais si je force la fermeture alors qu'une saisie est en cours...aie! Aie!

je voudrais seulement limiter cette fermeture au fichier intermédiaire qui sert juste a regrouper les valeurs de chaque fichier individuel.:eek::eek:
 

JNP

XLDnaute Barbatruc
Re : liaison en cascade

Re :),
je voudrais seulement limiter cette fermeture au fichier intermédiaire qui sert juste a regrouper les valeurs de chaque fichier individuel.:eek::eek:
Sur le même principe, tu peux fermer uniquement les classeurs concernés ;)...
Code:
Sub test()
Dim Classeur As Workbook
Application.DisplayAlerts = False
For Each Classeur In Workbooks
Select Case Classeur.Name
Case "Toto.xls", "Titi.xls", "Etc.xls"
Classeur.Close
End Select
Next
Application.DisplayAlerts = True
End Sub
Bon dimanche :cool:
 

BZH56

XLDnaute Occasionnel
Re : liaison en cascade

bonsoir hippolite
si tu regardes dans mon premier message, tu verras que j ai zippe plusieurs fichiers qui reproduisent simplement la problématique rencontré.
mon seul souci est de pouvoir visualiser en mode supra ce qui est fait en dessous..
a suivre:cool::cool:

bonjour a tous
un dernier petit up pour m assurer que l astuce qui va bien sera au rdv pour faciliter ce problème de liaison entre fichier
(rappel ; l exemple est dans mon premier message )
merci a tous et bonne journée .. le travail m attend:(:(
 

Discussions similaires

Réponses
10
Affichages
533

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia