Bonjour à tous ,
je ne maitrise pas à fond excel
je viens vers vous car après avoir écumé pas mal de post sur les liaisons je bloque toujours.
J'ai 3 classeurs excel A et B et C
Le classeur A est une sorte de menu général composé de boutons pour ouvrir les classeurs B et C
Tous mes classeurs sont protégés
B et C ont des liaisons entre eux et j'ai mis une macro en autopen qui les ferme si ceux ci sont ouvert par windows et invite les gens à passer par le menu du classeur A (qui fait disparaitre les barre de commande, empeche la fermeture par la croix....)
Pour ne pas perturber mes utilisateurs je ne veux pas qu'à l'ouverture de B le message "ce classeur comporte des liaisons....."
Aussi dans le code A j'ai mis cela pour ouvrir la classeur B est
Workbooks.Open Filename:=chemin & "AnalyseSegmentation.xls", UpdateLinks:=true
Et la j'ai quand même le message.
J'ai fait le test en mettant à false mais bien sur la les liaisons ne se font pas.
Aussi j'avais pensé à rajouter un bouton dans B du type
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
Mais le problème c'est que j'ai encore A d'ouvert
J'ai aussi vu un post qui disait de déprotéger toute le feuilles du classeur B pour Remettre à jour les liaisons.
Mais c'est un échec
Quelle est la meilleure solution en sachant que je ne peux pas mettre de code dans B en autopen et workbook open vu que j'ouvre en macro à partir d'un autre classeur.
ça fait 5 heure que j'écume les forums et que j'essaye tout ce qui à été proposé mais je ne retrouve pas mon cas de figure.
Avez vous une solution?
Ci dessous des méthodes que j'ai essayé sans succès
méthode 1 mis dans une macro de module dans le classeur A egalement essayé sur un bouton en test dans B
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
méthode 2 idem qu'au dessus
1 2
| 'ActiveWorkbook.UpdateLink Name:="G:\Copie de Classeur1.xls", Type:= _
xlExcelLinks |
méthode 3 (ne fonctionne pas car mon classeur B s'ouvre à partir de A)
1 2 3 4 5 6 7 8 9 10
| Sub workbook_open()
' Dim chemin As String
' chemin = Workbooks(ActiveWorkbook.Name).Path & "\"
ThisWorkbook.UpdateLinks = xlUpdateLinksAlways
'ActiveWorkbook.UpdateLink Name:= chemin & "classeurB.xls", Type:= _
xlExcelLinks
End Sub |
méthode 4 (ne fonctionne pas car mon classeur B s'ouvre à partir de A)
1 2 3 4
| Private Sub Workbook_Open()
Application.AskToUpdateLinks = False
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
End Sub |
méthode 5 mise sur un bouton dans le classeur B (j'ai un bug du au fait que la macro est perdu entre le classeur A qui est ouvert et B
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Sub MiseAJour()
Dim wbk As Excel.Workbook
'instanciation
Set wbk = Application.ThisWorkbook
' Déprotection
wbk.Unprotect
For i = 1 To 5
wbk.Sheets(i).Activate
wbk.Sheets(i).Unprotect
Next i
' Mise à jour
wbk.UpdateLink wbk.LinkSources
' Reprotection
For i = 1 To 5
wbk.Sheets(i).Activate
wbk.Sheets(i).Protect
Next i
wbk.Protect
'activation feuille 2
wbk.Sheets(2).Activate
'libération
Set wbk = Nothing
End Sub |
Partager